实验目标:
1,两台前端apache和php都挂载nfs文件系统中的php程序。
2,mysql 为单独一台服务器,为php页面程序提供数据库存储
3,静态页面文件都放在nfs服务器上
4,需要dns轮循为两台前端服务器分配访问请求
缺点: 压力都在文件存储服务器上
优点:不用考虑两台web服务器静态页面一致性的问题。
操作大体步骤:
1,两台web服务器:挂载nfs。编译安装apache,添加支持fcgi协议的模块,把php请求都代理到php服务器,站点根目录为挂载的文件。根据实际情况调整进程启动数量。
2,nfs : 在/etc/exprots 配置文件中写明,允许两台apache和php服务器访问本机的nfs服务
3,mysql: 需要授权一个用户从php服务器访问mysql中的一个数据库,此库给discuz使用。
4,php:编译安装以fpm方式启动进程,进程监听本机的通信ip。根据实现情况调整进程数量。
使用的软件级版本
数据库 :mariadb-5.5.36-linux-x86_64.tar.gz
web:httpd-2.4.9.tar.bz2 apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2
php :php-5.4.26.tar.bz2
nfs 是centos6.5系统发行时安装的版本。
===================================================================
NFS配置,/webdata是存储数据的位置
# vim /etc/exprots 编辑nfs配置文件加入以下一行
/webdata 172.16.2.10(rw,no_root_squash) 172.16.2.15(rw,no_root_squash) 172.16.2.11(rw,no_root_squash)
# service nfs start 启动nfs服务
把discuz代码upload目录中的所有传到/webdata目录下。
====================================================================
php服务器配置
编译php时依赖的开发环境,位于系统盘和和epel安装源。
“Desktop Platform Development” 包组
bzip2-devel php用到的压缩功能
libmcrypt-devel php用到的加密功能
libmcrypt
mhash
mhash-devel
# yum -y groupinstall "Desktop Platform Development"
# yum -y install bzip2-devel
# yum -y install libmcrypt-devel
# tar -xvf php-5.4.26.tar.bz2
# cd php-5.4.26
# ./configure --prefix=/usr/local/php --with-mysql --with-mysqli --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --enable-sockets --enable-fpm --with-bz2 --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-mcrypt
# make && make install
为php提供配置文件和 Sysv 脚本文件。这些文件的模板在php解压后的源代码包下。
[root@wukui php-5.4.26]# cp php.ini-production /etc/php.ini 复制主配置文件的模板到/etc下,位于源代码目录中。
[root@wukui php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php 复制服务控制脚本模板到/etc/rc.d/init.d下
[root@wukui php-5.4.26]# chmod u+x /etc/rc.d/init.d/php
[root@wukui php-5.4.26]# chkconfig --add php 添加到init的控制下
[root@wrukui php-5.4.26]# chkconfig php on 设定php开机自动启动
[root@wukui php-5.4.26]# cp /usr/local/php/etc/php-fpm.conf.default /usr/lcocal/php/etc/php.fpm.conf 提供php的fpm工作模式下的配置文件。
[root@wukui php-5.4.26]# vim /usr/local/php/etc/php-fpm.conf 修改配置文件
listen = 172.16.2.11:9000 修改php监听的ip地址
pm.max_children = 20 允许最大请求的并发数,由httpd请求的。
pm.start_servers = 5 服务启动后开启多少个进程
pm.min_spare_servers = 2 最少空闲多少个进程
pm.max_spare_servers = 10 最多空闲多少个进程
pid = /usr/local/php/var/run/php-fpm.pid 指定php的PID文件所在位置。这条要写在[global]下面第一行。
[root@wukui php-5.4.26]# service php start 启动php进程
[root@wukui php-5.4.26]# mkdir /webdata
[root@wukui php-5.4.26]# mount -t nfs 172.16.2.14:/webdata /webdata 挂载nfs,用来存储php页面。
[root@wukui php-5.4.26]# echo " mount -t nfs 172.16.2.14:/webdata /webdata" /etc/rc.d/rc.local 让系统启动后自动执行挂载脚本
[root@wukui php-5.4.26]# chown -R nobody /webdata 修改webdata目录的所有者为nobody,nobody是php进程运行的用户。
====================================================================
apache服务器配置
# mount -t nfs 172.16.2.14:/webdata /webdata 挂载nfs
# echo " mount -t nfs 172.16.2.14:/webdata /webdata" /etc/rc.d/rc.local 让系统启动后自动执行挂载脚本
# yum grouplist 查看当前系统是否安装了编译时所需的开发环境。需要以下两个开发包组
Development tools
Server Platform Development
httpd程序依赖于apr和apr-util
apr : apache portable runtime,apache可移值运行环境。相当于httpd运行于各平台的虚拟机,为了httpd跨平台开发不那么复杂,和httpd底层实现方法统一。
httpd-2.4依赖1.4以上版本的apr。
# rpm -qa | grep apr 查看当前系统是否安装了apr和apr-util。如果安装会把apr的包名显示出来,包名包含了版本信息。
下载所需要的软件包
[root@wukui httpd]# ls
apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 httpd-2.4.9.tar.bz2
安装apr--------------------------------------------------------
[root@wukui httpd]# mv /etc/httpd /etc/httpd.bak 备份之前httpd的配置文件,此步操作看情况而定。
[root@wukui httpd]# tar -xf apr-1.5.0.tar.bz2
[root@wukui httpd]# cd apr-1.5.0
[root@wukui apr-1.5.0]# ./configure --prefix=/usr/local/apr 安装到/usr/local/apr下是为了不和系统之前rpm安装的包冲突。
[root@wukui apr-1.5.0]# make && make install
[root@wukui apr-1.5.0]# ls /usr/local/apr/bin/ 查看已安装的apr二进制程序
[root@wukui apr-1.5.0]# ls /usr/local/apr/lib/ 查看apr的库文件
安装apr-util------------------------------------------------------------
解压,并切换到解压后的目录
[root@wukui apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr #指定安装目录 指定刚才编译好的apr路径,因为apr-util是为作apr的子功能运行的。
[root@wukui apr-util-1.5.3]# make && make install 编译,编译安装
编译apache操作-----------------------------------------------------------------------
[root@wukui httpd-2.4.9]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd/ --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-mpms-shared=all --with-mpm=event --enable-modules=all 配置安装特性
[root@wukui httpd-2.4.9]# make && make install 编译并且安装vi
[root@wukui apache]# echo "export PATH=/usr/local/apach/bin:$PATH" >> /etc/profile.d/httpd.sh 修改PATH环境变量,让shell可以搜索到apache的命令
[root@wukui apache]# source /etc/profile.d/httpd.sh 让刚设置的PATH环境变量在当前shell进程中生效
[root@wukui apache]# apachectl start 使用apachectl 启动httpd服务
测试是否安装成功
# vim /etc/httpd/httpd.con 编辑httpd的主配置文件
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 开启fcgi协议支持
LoadModule proxy_module modules/mod_proxy.so 开启代理支持
ServerName www.wukui.com:80 设定主机名
ProxyRequests off 关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.2.11:9000/webdata/$1 只要是php文件都使用fcgi协议代理到php服务器。
DocumentRoot "/webdata/" 修改站点根目录为nfs
<Directory "/webdata/"> 修改对站点根目录的控制标签
DirectoryIndex index.html index.php 添加默认请求文件
AddType application/x-httpd-php .php 在<IfModule mime_module>标签中加入,以支持php格式的文件。
AddType application/x-httpd-php-source .phps 同上
# httpd -t 测试配置文件是否有语法错误
# apache restart 重启httpd服务
====================================================================
mysql配置
安装mariadb ,二进制安装。mysql数据库文件存放在/data下。?data挂载的是一个逻辑卷,属主属组为mysql。
[root@mysql /]# groupadd -r mysql
[root@mysql /]# useradd -s /sbin/nologin -g mysql -r mysql
[root@mysql wukui]# tar -xvf mariadb-5.5.36-linux-x86_64.tar.gz
[root@mysql wukui]# mv mariadb-5.5.36-linux-x86_64 /usr/local/
[root@mysql local]# ln -sv /usr/local/mariadb-5.5.36-linux-x86_64/ /usr/local/mysql
[root@mysql mysql]# cd /usr/local/mysql 切换到解压后的目录到
[root@mysql mysql]#chown -R mysql:mysql ./*
[root@mysql mysql]# scripts/mysql_install_db --user=mysql --datadir=/data 执行mysql脚本安装配置。
[root@mysql mysql]# cp support-files/my-large.cnf /etc/my.cnf
修改配置文件以下几个参数
thread_concurrency = 2 数据是cpu核心乘以2
datadir = /data 指定mysql数据库文件存放的位置
[root@mysql mysql]# vim /etc/profile.d/mysql.sh 添加一环境变量
export PATH=/usr/local/mysql/bin:$PATH
[root@mysql mysql]# . /etc/profile.d/mysql.sh
[root@mysql mysql]# chown -R mysql ./*
[root@mysql mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@mysql mysql]# chmod u+x /etc/init.d/mysqld
[root@mysql mysql]# chkconfig --add mysqld
[root@mysql mysql]# chkconfig mysqld on
[root@mysql mysql]# service mysqld start
[root@mysql mysql]#mysql
MariaDB [(none)]> use mysql
MariaDB [mysql]> grant all on discuz.* to disadmin@172.16.2.11 identified by 'discuz'; 为数据库用户disadmin授权在172.16.2.11主机上登陆,密码为 discuz
Query OK, 0 rows affected (0.34 sec)
MariaDB [mysql]> flush privileges; 刷新授权
Query OK, 0 rows affected (0.03 sec)
mysql配置完成
=============================================================
安装discuz测试
在浏览器里输入httpd的访问地址
==================================================================
第二个apache配置
# yum -y groupinstall "Development tools" 安装所需的开发包组
# yum -y groupinstall "Server Platform Development"
# yum -y install pcre-devel
# tar -xvf apr-1.5.0.tar.bz2 安装apr
# cd apr-1.5.0
# ./configure --prefix=/usr/local/apr
# make && make install
# tar -xvf apr-util-1.5.3.tar.bz2 安装apr-util
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
# tar -xvf httpd-2.4.9.tar.bz2 安装apache
# cd apr-util-1.5.3
#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-mpms-shared=all --with-mpm=event --enable-modules=all
# make && make install
# vim /etc/httpd/httpd.conf 修改主配置文件
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 启用
LoadModule proxy_module modules/mod_proxy.so 启用
ServerName www.wukui.com:80 设定主机名
ProxyRequests off 关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.2.11:9000/webdata/$1 只要是php文件都使用fcgi协议代理到php服务器。
DocumentRoot "/webdata/" 修改站点根目录为nfs
<Directory "/webdata/"> 修改对站点根目录的控制标签
DirectoryIndex index.html index.php 添加默认请求文件
AddType application/x-httpd-php .php 在<IfModule mime_module>标签中加入,以支持php格式的文件。
AddType application/x-httpd-php-source .phps 同上
# mount -t nfs 172.16.2.14:/webdata /webdata 挂载nfs
=================================================================
收尾工作,让各个服务开机自动启动,并挂载文件共享服务目录。至此完成。
本文出自 “红颜易逝豪情长” 博客,请务必保留此出处http://wukui.blog.51cto.com/1080241/1540833