从apache mod_php到php-fpm
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从apache mod_php到php-fpm,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2646字,纯文字阅读大概需要4分钟。
内容图文
来自http://www.onepx.com/from-apache-mod-php-to-php-fpm.html
很多文章说mod_php不能和apache mpm worker或者event共用,这也许是在apache 2.2版本时代流传下来的说法。自去年编译apache 2.4以来,我就一直在使用mpm event,而且根据我编译php 5.5的参数来看,我就是把php做为apache的一个内置模块。这样奇葩的配置存在一年多以后,我终于决定从mod_php过渡到php-fpm。
自apache 2.4.9以来,php-fpm协同apache一起工作所需要的配置没有以前那么复杂了,这是让我决定过渡的主要原因之一。
重新编译php,和之前编译参数差不太多,只需要去掉“--with-apxs2=/usr/local/apache2/bin/apxs”,加入“--enable-fpm”:
./configure --enable-shared --with-libxml-dir --with-gd --with-openssl --enable-mbstring --with-mcrypt --with-mysqli --with-mysql --enable-opcache --enable-mysqlnd --enable-zip --with-zlib-dir --with-pdo-mysql --with-jpeg-dir --with-freetype-dir --with-curl --without-pdo-sqlite --without-sqlite3 --enable-fpm
随后make、make install即可。为了让centos可以开机自动启动php-fpm,我们需要:
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod o+x /etc/init.d/php-fpm chkconfig --add php-fpm
让php-fpm的配置文件生效:
mv /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
根据自己的需要修改这个conf文件,我个人喜欢:
user = daemon group = daemon listen = /dev/shm/php-fpm.sock listen.owner = daemon listen.group = daemon pm = static pm.max_children = 4 ;见下面解释 pm.max_requests = 2048
如果是多核cpu的vps或者服务器,上面的数值等于cpu数量即可;如果是单核的vps,那么pm.max_children = 2,即可达到一定的优化效果。
再说说apache这边需要的一点设置。由于我是从mod_php到php-fpm的,所以之前httpd.conf中的这几行需要注解掉:
LoadModule php5_module modules/libphp5.so <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
然后去掉mod_proxy.so和mod_proxy_fcgi.so之前的注解,确保他们被apache加载。
如果php-fpm使用的是TCP socket,那么在httpd.conf末尾加上:
<FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>
如果用的是unix socket,那么httpd.conf末尾加上:
<Proxy "unix:/dev/shm/php-fpm.sock|fcgi://php-fpm"> ProxySet disablereuse=off </Proxy> <FilesMatch \.php$> SetHandler proxy:fcgi://php-fpm </FilesMatch>
至此在apapche上配置php-fpm结束:
service php-fpm start service httpd restart
人品好的人,是不会看见出错信息的。如果访问服务器上的php文件出现"file not found."十之八九是php-fpm.conf中的user和group没有读写权限,修改成apache所使用的user和group即可。
最后附上在虚拟机上ab测试apache mod_php和php-fpm的结果,测试页面是我这个博客的主页。测试过程中cpu 100%是性能瓶颈,内存有余:
- mod_php:Requests per second: 54.38 [#/sec]
- php-fpm:Requests per second: 67.55 [#/sec]
php-fpm在性能上的提升还是很明显的,而且内存占用明显小于mod_php。
内容总结
以上是互联网集市为您收集整理的从apache mod_php到php-fpm全部内容,希望文章能够帮你解决从apache mod_php到php-fpm所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。