微信扫描文章首部二维码或搜索 zze_coding 关注我的微信公众号发送 #php_package 即可获取 php-5.4.26.tar.bz2 源码包。
在前面我们已经编译 php 作为模块提供给 httpd,如果要使用 FPM/FastCGI 方式则需要重新编译安装 php,这里我就直接在前面【LAMP(4)之源码编译安装php5并使用xCache缓存器】的基础上做修改。
编译安装php
1、重命名之前安装的 php 目录和 xCache 配置文件以作备份:
$ mv /usr/local/php/ /usr/local/php-event
$ mv /etc/php.d/xcache.ini{,.event}
2、解压 php 压缩包并编译安装:
$ tar xf php-5.4.26.tar.bz2
$ cd php-5.4.26
$ ./configure --prefix=/usr/local/php-fpm --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
$ make && make install
说明:
- 相对之前模块方式编译安装,去除了
--with-apxs2=/usr/local/httpd24/bin/apxs
,也不需要支持 worker 和 event 这两个 MPM,所以也去除了--enable-maintainer-zts
选项;- 要启动 FPM 功能即使用 FastCGI 模式需要添加
--enable-fpm
选项;
3、给创建的 php 安装目录创建软链接:
$ ln -s /usr/local/php-fpm /usr/local/php
4、为 php 提供配置文件(也可直接使用之前的):
$ mkdir /etc/php.d
$ cp php.ini-production /etc/php.ini
5、配置 php-fpm
,为 php-fpm
提供 SysV init 脚本,并将其添加至服务列表:
$ cp 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
6、为 php-fpm
提供配置文件:
$ cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
7、编辑 php-fpm
的配置文件,配置 fpm 的相关选项为你所需要的值,并启用 pid
文件:
$ 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
配置的目标文件路径是php-fpm
init 脚本默认使用的,如果修改则php-fpm
init 脚本也要随之修改。
8、接下来就可以启动 php-fpm
了:
$ service php-fpm start
9、默认情况下,fpm 监听在 127.0.0.1
的 9000 端口,也可以使用如下命令验证其是否已经监听在相应的套接字。
$ netstat -tnlp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 96573/php-fpm
配置httpd
1、在 Apache httpd 2.4 以后已经专门有一个模块针对 FastCGI 的实现,此模块为 mod_proxy_fcgi.so
它其实是作为 mod_proxy.so
模块的扩充,因此,这两个模块都要加载,编辑 httpd 的配置文件来加载这两个模块:
$ vim /etc/httpd24/httpd.conf
...
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
...
2、配置虚拟主机支持使用 fcgi,在相应的虚拟主机中添加类似如下两行:
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
例如:
$ vim /etc/httpd24/extra/httpd-vhosts.conf
...
<VirtualHost *:8081>
DocumentRoot "/www/web1"
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/php_code/$1
ErrorLog "/var/log/httpd24_web1_error_log"
CustomLog "/var/log/httpd24_web1_access_log" common
<Directory "/www/web1">
AllowOverride none
Require all granted
</Directory>
</VirtualHost>
...
说明:
ProxyRequests Off
:关闭正向代理;ProxyPassMatch
:把以.php
结尾的文件请求发送到php-fpm
进程,php-fpm
至少需要知道运行的目录和 URI,所以这里直接在fcgi://127.0.0.1:9000
后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so
进行了封装,不需要手动指定。
3、创建/www/php_code
文件夹并在其下新建文件index.php
文件内容如下:
$ mkdir /www/php_code
$ vim index.php
<?php
echo "from fpm";
phpinfo();
?>
4、编辑 httpd 的配置文件,让 httpd 能识别 php 格式的页面,并支持 php 格式的主页:
$ vim /etc/httpd24/httpd.conf
...
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
...
DirectoryIndex index.php index.html
...
5、重启 httpd 服务,浏览器访问 8081 端口:
可以看到已经成功以 FastCGI 模式运行。
使用xCache缓存器
php 5.4 以上的版本需要 xCache 版本在 2.0 以上。
扫描文章首部二维码或搜索zze_coding
关注我的微信公众号发送#xcache
获取源码包。
要使用 xCache 也需要重新编译安装。
1、解压并编译安装:
$ tar xf xcache-3.1.0.tar.bz2
$ cd xcache-3.1.0
$ /usr/local/php/bin/phpize
$ ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
$ make && make install
...
Installing shared extensions: /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20100525/
编译成功后最后输出的
Installing shared extensions
信息需要保留;
2、为 php 提供 xCache 的配置文件:
$ cp xcache.ini /etc/php.d/
3、编辑 xCache 的配置文件并配置:
$ vim /etc/php.d/xcache.ini
...
extension = /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
...
/usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20100525/
为 xCache 编译完成后输出的路径。
4、重启 httpd 服务,浏览器访问主机 8081 端口,在页面中查找到如下 xCache 相关组件信息即表示 xCache 扩展安装成功:
即在 FastCGI 模式下成功配置了 xCache。
评论区