LAMP+NFS实现多个Web服务器静态资源统一存储(2)

四.PHP服务器上安装基于FastCGI的实现

PHP服务器的DNS设置成172.16.31.30

开发环境配置:

1

2

 

# yumgroupinstall Development Tools

#yum install  –y pcre-devel openssl-devellibxml2-devel php-gd freetype-devel mbstring

 

编译安装php-5.6.4

1

2

3

 

#tar xf php-5.6.4.tar.xz -C /usr/src/

# cd/usr/src/php-5.6.4/

#./configure --prefix=/usr/local/php --with-MySQL=mysqlnd--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-mbstring--with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib--with-libxml-dir=/usr --with-gd --enable-xml --enable-sockets --enable-fpm--with-mcrypt --with-config-file-path=/etc--with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts

 

安装:

1

 

#make&& make install

 

PHP服务器提供配置文件:

1

 

#cp php.ini-production /etc/php.ini

 

php提供Sys启动控制脚本,加入开机启动。

1

2

3

4

5

6

 

# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

# chmod +x /etc/rc.d/init.d/php-fpm

# chkconfig --list php-fpm

service php-fpm supports chkconfig, but is not referenced in anyrunlevel (run 'chkconfig --add php-fpm')

# chkconfig --add php-fpm

# chkconfig php-fpm on

 

php-fpm提供配置文件,编辑php-fpm配置文件,修改监听端口,默认是127.0.0.1

1

2

3

4

5

6

7

8

 

# cp /usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf

# vim /usr/local/php/etc/php-fpm.conf

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 2

pm.max_spare_servers = 8

pid = /usr/local/php5/var/run/php-fpm.pid

listen = 172.16.31.22:9000

 

启动php-fpm,检查php监听端口。

1

2

3

4

 

# service php-fpm start

Starting php-fpm  done

# ss -tunl |grep 9000

tcp    LISTEN     0     128         172.16.31.22:9000                  *:*

 

环境变量设置:

1

2

3

4

5

6

7

 

# vim /etc/profile.d/php.sh

export PATH=/usr/local/php/bin:$PATH

# source /etc/profile.d/php.sh

# php -v

PHP 5.4.26 (cli) (built: Dec 21 2014 01:53:51)

Copyright (c) 1997-2014 The PHP Group

Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

 

PHP部分配置完成,基本的php服务器环境,后面需要与web服务器结合。

五.      PHP服务器上启用NFS服务

创建一个目录或者提供一个特定的文件系统;亦可以参考上面的为数据库数据文件存储创建的特定文件系统:

# mkdir /web

创建wordpress博客的网站存放目录,我们将其共享出去让web服务器使用:

#mkdir /web/blog

查看NFS软件是否安装:

1

2

 

# rpm -qanfs-utils

nfs-utils-1.2.3-54.el6.x86_64

 

NFS服务的配置文件为/etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。

1

2

 

# cat /etc/exports

/web/blog 172.16.31.30(rw,async,no_root_squash)172.16.31.31(rw,async,no_root_squash)

 

# 配置共享目录为可读写,客户端root用户权限不压缩

/etc/exports文件内容格式:

<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]

开启nfs服务:

1

2

3

4

5

6

7

8

9

10

11

 

[root@php ~]# service nfs restart

Shutting down NFS daemon:                                  [  OK  ]

Shutting down NFS mountd:                                  [  OK  ]

Shutting down NFS quotas:                                  [  OK  ]

Shutting down NFS services:                                [  OK  ]

Shutting down RPC idmapd:                                  [  OK  ]

Starting NFS services:                                     [  OK  ]

Starting NFS quotas:                                       [  OK  ]

Starting NFS mountd:                                       [  OK  ]

Starting NFS daemon:                                       [  OK  ]

Starting RPC idmapd:                                       [  OK  ]

 

查看本地NFS文件系统共享的目录:

1

2

3

 

# showmount -e 172.16.31.32

Export list for 172.16.31.32:

/web/blog 172.16.31.31,172.16.31.30

 

NFS文件系统建立完成。

六.      web1web2上挂载NFS文件系统到本地目录

NFS客户端配置

这里的客户端就是前端的2Web服务器,先挂载共享目录,然后测试其读写功能

在客户机上执行mount命令,它向服务器上的端口映射器发出一个RPC调用来获得服

务器上安装守护程序的端口号。客户和端口映射器交互既可以使用TCP也可以使用UDP,但一般使用UDP

NFS文件系统挂载到web服务器上

我们现在web服务器上查看NFS文件系统共享的目录:

1

2

3

 

# showmount -e172.16.31.32

Export list for172.16.31.32:

/web/blog172.16.31.31,172.16.31.30

 

我们先在web服务器上创建本地目录:/web/blog

1

 

[root@web1 ~]#mkdir /web/blog -pv

 

挂载NFS共享的文件目录到本地:

可以使用临时挂载:

1

 

[root@web1 ~]#mount -t nfs 172.16.31.32:/web/blog /web/blog

 

也可使用开机系统自动挂载:

1

2

 

[root@web1 ~]#vim /etc/fstab

172.16.31.32:/web/blog  /web/blog               nfs     defaults,_netdev 0 0

 

这里的_netdev选项是为了防止远程NFS服务器关闭后本地系统不能启动

挂载完成后查看挂载是否成功:

[root@web1 ~]#mount

/dev/mapper/vg0-rooton / type ext4 (rw)

proc on /proctype proc (rw)

sysfs on /systype sysfs (rw)

devpts on/dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on/dev/shm type tmpfs (rw)

/dev/sda1 on/boot type ext4 (rw)

/dev/mapper/vg0-usron /usr type ext4 (rw)

/dev/mapper/vg0-varon /var type ext4 (rw)

none on/proc/sys/fs/binfmt_misc type binfmt_misc (rw)

sunrpc on/var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

172.16.31.32:/web/blog on/web/blog type nfs (rw,vers=4,addr=172.16.31.32,clientaddr=172.16.31.30)

七.      安装wordpress博客系统

1.配置web服务器的虚拟主机支持:

开启FastCGI模块和PHP支持及开启虚拟主机。

#vim /etc/httpd24/httpd.conf

LoadModuleproxy_module modules/mod_proxy.so

LoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so

<IfModuledir_module>

DirectoryIndex index.php index.html

</IfModule>

AddTypeapplication/x-compress .Z

AddType application/x-gzip.gz .tgz

AddTypeapplication/x-httpd-php .php

AddTypeapplication/x-httpd-php-source .phps

Include/etc/httpd24/extra/httpd-vhosts.conf

配置虚拟主机配置文件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

 

#vim/etc/httpd24/extra/httpd-vhosts.conf

<VirtualHost 172.16.31.30:80>

DocumentRoot"/web/blog"

ServerName 

ProxyRequests Off

ProxyPassMatch^/(.*\.php)$ fcgi://172.16.31.32:9000/www/blog/$1

ErrorLog"/web/blog/logs/error_log"

CustomLog"/web/blog/logs/access_log" common

<Directory"/web/blog/logs">

    Options none

    AllowOverride none

    Require all granted

</Directory>

</VirtualHost>

 

注意:

A.需要在nfs共享文件目录中创建日志文件目录logs

#mkdir/web/blog/logs/

B.web服务器的静态资源请求是到nfs共享文件目录/web/blog中返回结果,而涉及到动态资源的请求是反向代理到php服务器上的网站目录/www/blog中执行后返回结果。

C.前端2web服务器都需要配置好虚拟主机。

2.在NFS共享服务器上安装wordpress博客系统

php服务器上创建动态资源存放目录:

#mkdir  /www/blog

解压wordpress博客程序:

# unzip wordpress-3.2.1-zh_CN.zip

移动程序到NFS文件共享目录:

# mv wordpress/* /web/blog/

 

3.配置wordpress博客系统与数据库结合

创建wordpress的配置文件:

1

2

 

#cd /web/blog

# cp wp-config-sample.php wp-config.php

 

写入数据库名称,用户名,密码及数据库服务器IP地址:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

 

#vim wp-config.php

// **MySQL 设置 - 具体信息来自您正在使用的主机 ** //

/**WordPress 数据库的名称 */

define('DB_NAME','wpdb');

  

/** MySQL数据库用户名 */

define('DB_USER','wpadmin');

  

/** MySQL数据库密码 */

define('DB_PASSWORD','Oracle');

  

/** MySQL主机 */

define('DB_HOST','172.16.31.33');

  

/** 创建数据表时默认的文字编码*/

define('DB_CHARSET','utf8');

  

/** 数据库整理类型。如不确定请勿更改 */

define('DB_COLLATE', '');

 

切换到数据库服务器,在数据库添加库,授权,添加授权密码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

 

[root@mysqlmysql]# mysql -u root -p

Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 8

Server version: 10.0.10-MariaDB-log MariaDB Server

  

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

  

Type 'help;' or '\h' for help. Type '\c' to clear the current inputstatement.

  

MariaDB [(none)]> create schema wpdb;

Query OK, 1 row affected (0.04 sec)

  

MariaDB [(none)]> grant all on wpdb.* to 'wpadmin'@'172.16.%.%'identified by 'oracle';

Query OK, 0 rows affected (0.05 sec)

  

MariaDB [(none)]> flush privileges;

Query OK, 0 rows affected (0.00 sec)

  

MariaDB [(none)]> \q

Bye

 

 

4.重新启动httpd服务

1

2

3

 

# servicehttpd24 restart 

Stoppinghttpd:                                           [  OK  ]

Startinghttpd:                                           [  OK  ]

 

八.      实现测试

我们通过浏览器访问博客网站,我这里是一个在虚拟机上访问,一个在实体机上访问:

wKioL1Sb_LLRmIa1AAViCWnBzoc499.jpg

上图的访问是在web1完成的

下图的访问是在web2完成的

wKiom1Sb_CfCD2gRAAOWugGw_bs350.jpg

结果非常完美哦!o(∩_∩)o

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5e9eb076f5359ee73fb15a74bbd003a1.html