2013-10-10
发表者 Venus
暂无评论
FastCGI 的主要优点是把动态语言和web server分离开来,所以web server与PHP/PHP-FPM经常被部署在不同的服务器上,以分担前端web server服务器的压力,使web server专一处理静态请求和转发动态请求,而PHP/PHP-FPM服务器专一解析PHP动态请求。
为了测试,暂不安装mysql并且这里以apache为例,编译参数较少。
安装编译环境:
yum -y install gcc gcc-c++ make automake autoconf kernel-devel ncurses-devel libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel pcre-devel libtool-libs freetype-devel gd zlib-devel file bison patch mlocate flex diffutils readline-devel glibc-devel glib2-devel bzip2-devel gettext-devel libcap-devel libmcrypt-devel //直接复制的以前编译参数
下载httpd php php-fpm:
http://archive.apache.org/dist/httpd/httpd-2.2.22.tar.gz
http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
http://museum.php.net/php5/php-5.2.17.tar.gz
http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz
编译apache:
[root@localhost httpd-2.2.22]#./configure --prefix=/usr/local/apache --enable-so //这里采用最小的编译参数
为apache安装mod_fastcgi模块:
在mod_fastcgi安装包中有一个INSTALL.AP2文件,里面有安装方法:
$ cd <mod_fastcgi_dir>
$ cp Makefile.AP2 Makefile //拷贝编译文件
$ make
$ make install
If your Apache2 installation isn’t in /usr/local/apache2, then
set the top_dir variable when running make (or edit the
Makefile), e.g.
$ make top_dir=/opt/httpd/2.0.40
Add an entry to httpd.conf like this:
LoadModule fastcgi_module modules/mod_fastcgi.so
这里需要编辑Makefile,修改top_dir = /usr/local/apache //改为你apache的编译路径
make && make install 即可
编译完成后在apache配置文件中添加一行:
LoadModule fastcgi_module modules/mod_fastcgi.so //载入模块
至此完成。
打php的fpm补丁:
[root@localhost smb]#gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1
编译php:
[root@localhost php-5.2.17]# ./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpm --with-config-file-path=/etc
拷贝php的配置文件:
[root@localhost php-5.2.17]# cp php.ini-recommended /etc/php.ini
编辑php-fpm的配置文件:
[root@localhost ~]# vi /usr/local/php/etc/php-fpm.conf
去掉下面的注释(<!– –>):
Unix user of processes
<value name=”user”>nobody</value>
Unix group of processes
<value name=”group”>nobody</value>
指定php-fpm运行时的用户和组。不修改会无法启动。
启动php-fpm:
[root@localhost ~]# /usr/local/php/sbin/php-fpm start
Starting php_fpm done
查看:
[root@localhost ~]# lsof -i:9000 //php-fpm占用9000端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-cgi 49783 root 6u IPv4 132841 0t0 TCP localhost:cslistener (LISTEN)
php-cgi 49786 nobody 0u IPv4 132841 0t0 TCP localhost:cslistener (LISTEN)
php-cgi 49787 nobody 0u IPv4 132841 0t0 TCP localhost:cslistener (LISTEN)
php-cgi 49788 nobody 0u IPv4 132841 0t0 TCP localhost:cslistener (LISTEN)
php-cgi 49789 nobody 0u IPv4 132841 0t0 TCP localhost:cslistener (LISTEN)
php-cgi 49790 nobody 0u IPv4 132841 0t0 TCP localhost:cslistener (LISTEN)
整合apache+php/php-fpm
创建fastcgi脚本目录:
mkdir /usr/local/apache/htdocs/fcgi-bin
ln -s /usr/local/php/bin/php-cgi /usr/local/apache/htdocs/fcgi-bin/php-cgi
编辑httpd.conf,添加(注意实际apache路径):
<IfModule fastcgi_module>
ScriptAlias /fcgi-bin/ “/usr/local/apache/htdocs/fcgi-bin/”
FastCgiExternalServer /usr/local/apache/htdocs/fcgi-bin/php-cgi -host 127.0.0.1:9000
AddType application/x-httpd-php .php
AddHandler php-fastcgi .php
Action php-fastcgi /fcgi-bin/php-cgi
<Directory “/usr/local/apache/htdocs/fcgi-bin/”>
SetHandler fastcgi-script
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>
</IfModule>
启动apache。添加phpinfo测试页。测试。
