这篇文章主要做一下PHP以fpm的方式连接httpd来工作的实验。php的fpm模式,简单点说就是php可以作为一台独立的服务器来提供服务,而不是像上一篇文章一样以httpd程序模块的方式工作。这次我将把每个服务单独安装在一台服务器上来工作。
一、拓扑图:图片遮挡了,mysql(10.0.0.105)
二、平台及软件
系统:centos6.4 2.6.32-358.el6.x86_64;要装上开发库Development tools
yum groupinstall “Development tools”
软件包版本:mysql-5.6.17-linux-glibc2.5-x86_64
httpd-2.4.6
php-5.5.10
三、安装 &配置
1、httpd:这个部分的安装基本没什么区别,可以看我的上一遍文章即可。简单编译LAMP
# vim /etc/httpd24/httpd.conf //编辑主配置文件LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so//启用代理和反向代理模块# vim /etc/httpd24/extra/httpd-vhosts.conf //编辑网站部分<VirtualHost *:80> DocumentRoot "/web" ServerName client.test.local ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://10.0.0.103:9000/web/$1 //主要就是配置上面这两条,第一条是将正向代理关闭,第二条,是将以根开头.php结尾的文件 传送该给10.0.0.103的服务器处理。有一个需要提醒的,就是在php服务器上要有和httpd服务器上相同的网站文件,目录不需要相同,只要在这条里指定就可以了(就是这个/web/)。$1是引用前边的/(.*\.php)$表达式。话有点多,不知道解释到位了没有。 <Directory "/web"> Options none AllowOverride none Require all granted </Directory></VirtualHost># mkdir /web# cd /web# cat > index.php << EOF> <?php> phpinfo();> $link=mysql_connect(localhost,root,''); > if ($link) > echo "Sueccess..."; > else > echo "Failure..." > ?>> EOF//创建一个测试网页文件,可以测试PHP工作和PHP与mysql的连接。
httpd服务器就这些需要修改的。
2、mysql:与前一个篇文件写的安装方法相同,只是需要添加一个远程链接的root用户即可。
1234 | #mysql #进入数据库中 mysql> grant all on *.* to 'root' @ '%' identified by '1234' ; #添加一个以root用户,密码为1234 mysql的用户基于两个部分名字和主机,中间用@链接。root@%则表示从任意地址访问的root用户,%是通配符,不过不能代表localhost和127.0.0.1的本机地址。 |
3、php:这部分有少许不同,主要是在编译选择的参数
# yum install openssl-devel libxml2-devel# rpm -ivh libmcrypt-2.5.7-1.2.el6.rf.x86_64.rpm libmcrypt-2.5.7-1.2.el6.rf.x86_64.rpm//这两个安装包官方源里没有,要自己下载下。#tar xf php-5.4.13.tar.bz2# cd php-5.4.13# ./configure --prefix=/usr/local/php --with-mysql --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 //和上一篇文章比较起来不同在于,因为是独立运行不需要变成httpd的模块,所以不再需要这个参数 --enable-maintainer-zts,还有为了和mysql通信需要--with-mysql。如果为了使用phpmyadmin不报mysqli的错,可以加上--with-mysqli# make# make test# make intall# cp php-5.4.13/php.ini-production /etc/php.ini# cp php-5.4.13/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm//这个启动服务脚本。//这两个原文件都在解压后的目录里# chmod +x /etc/rc.d/init.d/php-fpm//赋予脚本执行权限# chkconfig --add php-fpm//将脚本加入到启动控制服务# chkconfig php-fpm on//开启开机自动启动# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf //更改php-fpm模式配置文件名,参数基本都在此处修改# 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/php/var/run/php-fpm.pid//pid文件大家知道的,就不多解释了。error_log = log/php-fpm.log//错误日志存放位置,(呵呵,起码我从名字上看是这个意思,不过里面都是php-fpm服务器本身信息,比如启动啦)access.log = /usr/local/php/var/log/$pool.access.log//这个是关于访问php服务器的日志,错误的也在里面listen = 10.0.0.103:9000//这个比较重要因为要给网络上其他应用提供服务,所以要监听在你的网卡地址上。这个。。。103是我的网卡地址,改成你自己就可以。//当然也可以监听任意地址,只要写9000这个端口即可。listen.allowed_clients = 10.0.0.101//看名字就知道是限制能给那个地址提供服务user = nobodygroup = nobody//php-fpm服务的用户和组,嘿嘿,我没改动。# mkdir /web# cd /web# chmod 660 -R /web && chown .nobody -R /web# scp root@10.0.0.101:/web/* .//把httpd服务器上创建的那个测试网页复制过来,并给这个/web文件夹赋予权限。我没有修改php-fpm服务的用户,默认是nobody,所以我也就给成nobody了。# service php-fpm startStarting php-fpm done//启动成功# netstat -tunlp |grep 9000tcp 0 10.0.0.103:9000 0.0.0.0:* LISTEN 22583/php-fpm//查看网络监听接口,9000处于监听状态
四、测试
随便找个浏览器访问下,出来一大堆php信息说明php工作正常,最后一行出来success...说明php和mysql
连接正常。
后记
懒得截图了,大家将就下吧。如果有兴趣一起研究,可以给我发信308906813@qq,.com。