最新消息:

Apache2.4(worker-mod_fastcgi) And PHP5.3(php-fpm)

Apache ZmmFly 3204浏览 1评论

前段时间Apache总是莫名其妙的挂掉了。。。然后只有手动启动才会恢复正常。。。

由于是编译的,只静态编译了prefork模式,修改了配置后还是不尽人意。

于是就打算重新编译,换成worker模式…却发现如果Apache使用worker,还想将php交给Apache处理的话就得使用线程安全版。

使用线程安全版就不能使用Zend Guard Loader。。。郁闷死了

只好用Apache2.4(worker-mod_fastcgi) And PHP5.3(php-fpm)代替原有方案了。。。

编译

一、编译Apache

使用2.4最新版,下载好解压后进入源码路径

下载apr和apr-util

cd srclib && wget -c http://mirror.esocc.com/apache//apr/apr-1.5.0.tar.gz && tar zxvf apr-1.5.0.tar.gz && mv apr-1.5.0 apr && rm -rf zxvf apr-1.5.0.tar.gz && wget -c http://mirror.esocc.com/apache//apr/apr-util-1.5.3.tar.gz && tar zxvf apr-util-1.5.3.tar.gz && mv apr-util-1.5.3 apr-util && rm -rf apr-util-1.5.3.tar.gz && cd ..

./configure --prefix=/usr/local/apache --enable-mpms-shared=all --with-included-apr --enable-nonportable-atomics=yes --enable-mods-shared=most

  • –enable-mpms-shared=all                编译当前系统支持的所有多进程模块(以后切换直接编辑httpd.conf)
  • –enable-mods-shared=most             编译大多数模块,出现错误自动跳过
  • –enable-nonportable-atomics=yes   提高一点点性能(需要CPU支持)

make -j 2 && make install    (-j 2根据CPU可用核数调整)

二、Mod_FastCGI

wget -c http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz && tar zxvf mod_fastcgi-2.4.6.tar.gz && cd mod_fastcgi-2.4.6

cp Makefile.AP2 Makefile && vim Makefile

将top_dir修改为Apache安装路径然后保存

builddir     = .
top_dir      = /usr/local/apache

打补丁:

wget -c http://leeon.me/upload/other/byte-compile-against-apache24.diff
patch -p1 < byte-compile-against-apache24.dif

make && install

三、PHP

./configure –prefix=/usr/local/php/ –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-config-file-path=/usr/local/php/etc/

其余参数就不用写上吧。。。另外,别加上–disable-cli,cli在后面用得着的

make -j 2 && make install

cp php.ini-production /usr/local/php/etc/php.ini

cp -f (php-5.3.x-source-dir)/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
/etc/init.d/php-fpm start
/sbin/chkconfig --add php-fpm #(添加到开机服务列表)
/sbin/chkconfig php-fpm on

配置

一、PHP-FPM

vim /etc/init.d/php-fpm

按照下面的填,然后保存

prefix=/usr/local/php
exec_prefix=
php_fpm_BIN=/usr/local/php/sbin/php-fpm
php_fpm_CONF=/usr/local/php/etc/php-fpm.conf
php_fpm_PID=/usr/local/php/var/run/php-fpm.pid

cd /usr/local/php/etc && cp php-fpm.conf.default php-fpm.conf

vim php-fpm.conf

同样按照下面的数值修改,然后保存(被注释了的去掉注释再修改,当然,如果明白各项参数可以根据情况自行修改)

pid = run/php-fpm.pid
error_log = log/php-fpm.log
listen = /dev/shm/php-cgi.sock
listen.owner = www
listen.group = www
listen.mode = 0666
pm = dynamic
pm.max_children = 15
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 100
slowlog = var/log/$pool.log.slow
request_slowlog_timeout = 60s
request_terminate_timeout = 60s

 二、Apache-Mod_FastCGI

1、Mod_FastCGI

由于php自5.3.3以后集成了FastCGI并且使用FPM时无需打补丁,编译参数–enable-fastcgi 被去掉,所以呢,在php的sbin目录下就木有php-cgi文件了,只剩php-fpm……咱就只有用bin下的php文件了。。。

cd /var
mkdir fcgi-bin
#利于以后添加(管理)其它CGI
ln -s /usr/local/php/bin php-fcgi
cd /usr/local/apache/conf
vim httpd.conf
#去掉 LoadModule fastcgi_module modules/mod_fastcgi.so 前的注释,如果没有就添加
#加入:
<IfModule mod_fastcgi>
ScriptAlias /fcgi-bin/ "/var/fcgi-bin/"
FastCgiExternalServer /var/fcgi-bin/php-fcgi -socket /dev/shm/php-cgi.sock
AddType application/x-httpd-php .php
AddHandler php-fastcgi .php
Action php-fastcgi /fcgi-bin/php-fcgi
</IfModule>
#保存

2、MPM-Worker

加入

HostnameLookups Off
Timeout 5
KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 5

修改mpm_worker_module

<IfModule mpm_worker_module>
    StartServers             3
    MinSpareThreads         10
    MaxSpareThreads         25
    ThreadsPerChild         50
    MaxRequestWorkers      400
    MaxConnectionsPerChild 100
</IfModule>

保存,根据需求修改好php.ini和httpd.conf,重启php-fpm和Apache,然后就可以新建虚拟主机了

或许会一直出现403错误,解决办法是将httpd.conf中的Require all denied修改为Require all granted即可

  • 参考
    • http://ideas.spkcn.com/technology/php-technology/133.html
    • http://www.onepx.com/centos-apache-246.html
    • http://blog.csdn.net/kge888/article/details/8985799
    • http://blog.chinaunix.net/uid-26719405-id-3602614.html
    • http://www.ctyun.cn/bbs/forum.php?mod=viewthread&tid=559

另外,如果有不明白的地方欢迎留言,以便博主补充进来!

转载请注明:神奇海域 » Apache2.4(worker-mod_fastcgi) And PHP5.3(php-fpm)

发表我的评论
取消评论

Protected by WP Anti Spam

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 技术盲,学习学习
    Dzing评论于10年前 (2014-01-14)回复