四.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文件系统建立完成。
六. 在web1和web2上挂载NFS文件系统到本地目录
NFS客户端配置
这里的客户端就是前端的2台Web服务器,先挂载共享目录,然后测试其读写功能
在客户机上执行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.前端2台web服务器都需要配置好虚拟主机。
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 ]
八. 实现测试
我们通过浏览器访问博客网站,我这里是一个在虚拟机上访问,一个在实体机上访问:
上图的访问是在web1完成的
下图的访问是在web2完成的
结果非常完美哦!o(∩_∩)o