安装LAMP服务器,并利用discuz做测试
php + DNS 192.168.108.160
apache 192.168.108.131 -->web1
apache 192.168.108.132 -->web2
mariadb 192.168.108.133
nfs + discuz 192.168.108.158
实验步骤:
1、php:编译安装以fpm方式启动进程,进程监听本机的通信ip。根据实现情况调整进程数量,使用的软件级版本
2、
第一步:在主机IP:192.168.108.160上安装编译安装php-5.4.26
1、解决依赖关系:
#yum -y groupinstall "Desktop Platform Development"
# yum -y install bzip2-devel libmcrypt-devel libxml2-devel
编译安装php报错PHP configure: error: mcrypt.h not found. Please reinstall libmcrypt.
请参考:https://i.cnblogs.com/EditPosts.aspx?postid=9221072&update=1
2、安装php-5.4.26
# tar xf php-5.4.26.tar.bz2 解压php压缩包
# 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
3、安装完成后,需要为php提供配置文件和 Sysv 脚本文件。这些文件的模板在php解压后的源代码包下。
php-5.4.26]# cp php.ini-production /etc/php.ini //提供主配置文件,位于源代码目录中。
php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php //提供服务控制脚本到/etc/rc.d/init.d目录中
php-5.4.26]# ls -ld /etc/rc.d/init.d/php //这里是没有执行权限的
php-5.4.26]# chmod u+x /etc/rc.d/init.d/php
php-5.4.26]# chkconfig --add php //设置开机启动,把php启动脚本添加到/etc/rc.d/init.d/目录下,可在此目录下找到php启动脚本
php-5.4.26]# chkconfig --list php
php-5.4.26]# chkconfig php on //设置开机启动php
php-5.4.26]# cp /usr/local/php/etc/php-fpm.conf.default /usr/lcocal/php/etc/php-fpm.conf //提供php的fpm工作模式下的配置文件。
php-5.4.26]# vim /usr/local/php/etc/php-fpm.conf //修改此配置文件
listen = 192.168.108.160:9000 //修改php监听的本主机的ip地址的9000端口
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]下面第一行。
至此php服务器已经配置完成
# service php start //启动php,
#ss -tnl //监听在192.168.108.160的9000端口
第二步:配置apache,首先在IP为192.168.108.131的主机上配置
1、在配置apache之前,可以先查看iptables和selinux是否启动,如果启动可以先关闭
#service iptables status //查看iptables运行状态
#genenforce //查看selinux的运行状态
#setenforce 0 //如果开启则可以关闭,此命令只能暂时关闭,系统重启后失效
2、配置安装环境
#yum groupadd "Development Tools" "Server Platform Development"
httpd程序依赖于apr和apr-util,
注:APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
# rpm -qa | grep apr //可以先查看系统是否安装了apr,但是这里显示的是安装了1.3.9的版本,但是httpd-2.4依赖1.4以上版本的apr。
本系统已经准备好3个软件包:apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 httpd-2.4.6.tar.bz2 一次进行安装
安装apr-util
# tar xf apr-1.5.0.tar.bz2
# cd apr-1.5.0
#./configure --prefix=/usr/local/apr
#make && make install
#echo $? //查看是否安装成功,成功则为0
安装apr-util
# tar xf apr-util-1.5.3.tar.bz2
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make && make install
安装apache
#yum install pcre-devel -y //解决依赖包
# tar xf httpd-2.4.6.tar.bz2
# cd httpd-2.4.6
./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24/ --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
--prefix=/usr/local/apache //指明安装路径,将来想卸载时,可以直接把目录删掉
--sysconf=/etc/httpd24 //配置文件,系统rpm包自动安装的在/etc/httpd/目录下,为了避免冲突
--enable-so //支持动态模块加载机制
--enable-rewrite //支持URL重写机制
--with-zlib //支持compress传输值,是一个压缩库
--with-pcre //pcre是perl扩展的正则表达式,一般利用URL重写时都会用到pcre,此处需要先安装pcre-devel #yum install prcre-devel -y
--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ // 此处指明http安装依赖到的apr和apr-util,这里要指明apr安装的路径
--enable-modules=most //支持大多数常用的模块
--enable-mpms-shared=all //把所有支持mpm机制共享模块都编译进来,
--with-mpm=prefork //默认使用prefork
#make && make install -j 3 //由于安装apache工作量大,可以开3个线程
配置apache的环境变量
#vim /etc/profile.d/httpd.sh //修改PATH环境变量,让shell可以搜索到apache的命令
export PATH=/usr/local/apache/bin:$PATH
或者
# echo "export PATH=/usr/local/apach/bin:$PATH" >> /etc/profile.d/httpd.sh
# source /etc/profile.d/httpd.sh //重读环境变量,让刚设置的PATH环境变量在当前shell进程中生效
#echo $PATH //查看是否生效
测试apache
# apachectl start //此时可以启动apache,
#vim /etc/httpd24/httpd.conf
ServerName ....:80 //此行前面的#去掉
#ss -tnl //查看80端口是否启动
为编译安装的httpd配置服务脚本
#cd /etc/rc.d/init.d/
#cp httpd httpd24 //把系统自带的httpd服务脚本复制一份进行修改,当作编译安装的httpd24的服务脚本
#vim httpd24
apachectl=/usr/local/apache/bin/apachectl //httpd的编译安装路径
httpd=/usr/local/apache/bin/httpd //httpd的默认程序
prog=httpd
pidfile=${PIDFILE-/var/run/httpd/httpd24.pid} //如果启动httpd24时,出现pid错误,可以查看/usr/local/apache/logs目录下是否有httpd.pid文件,有的话,更改此路径
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
如果反复出现上述图片内容;
#vim /etc/rc.d/init.d/httpd24 修改为:
pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}
编辑httpd的主配置文件
#vim /etc/http24/httpd.conf
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so //开启fcgi协议支持
LoadModule proxy_module modules/mod_proxy.so //开启代理支持
添加一下两行
ProxyRequests off //关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.2.11:9000/webdata/$1 //只要是php文件都使用fcgi协议代理到php
在相应的虚拟主机中以反向代理的方式告诉用户,所有对以.php格式结尾的URL请求,
都基于fcgi这个协议送给(127.0.0.1)这个服务器上的9000端口,
^/(.*\.php)$:以任何内容开始,以.php格式结尾的所有内容
/PATH/TO/DOCUMENT_ROOT:表示PHP网页文件的存放位置
$1:表示^/(.*\.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 测试配置文件是否有语法错误
# service httpd24 restart 重启httpd服务