打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Nginx PHP-FPM APC=绝妙的组合(1) - 51CTO.COM
    本文将介绍目前让PHP最快的方法:Nginx + PHP-FPM + APC,看似有些复杂,实际上我们只需要几个步骤就可以完成,并且性能远超Apache,有兴趣的朋友不妨去试一试。

     

    【51CTO独家特稿】本文所介绍的方法应该是目前让PHP最快的办法:Nginx + PHP-FPM + APC。我们将从安装Nginx http服务器、PHP和PHP-FPM补丁,以及APC,详细的讲解这种方法的具体配置及应用,最终的效果如何?相信会让你大吃一惊。

    相关文章推荐:Nginx http服务相关的配置文件 Nginx+PHP配置相关进程的简要介绍

    背景

    过去两年多来,我们的网站一直运行Apache+mod_php模块,大多数时候这个组合应付得过来,但随着流量的增加,我们注意到Apache已 经显得很吃力了,它开始疯狂地吃内存,CPU也被全部抢占去了,我们需要找到一个更快的方法来解决问题。

    Nginx是一个不错的选择,很多指标都超过了Apache,如I/O、CPU、内存和请求数/秒等,如果需要,随时可以从Google搜索相关信 息。从我个人的测试结果来看,Nginx和Apache之间的差异是很明显的,不好意思,因为是非正式测试,因此相关数字我就不公布了,这也不是本文的重 点。让我更自信的是,我只需要几个步骤就可以让性能远超Apache。

    PHP-FPM?

    很多人配置Nginx时可能都会选择来自LightTPD项目的spawn-fcgi解析PHP,但使用spawn-fcgi有些问题,因此我打算 放弃它另觅别的办法。PHP-FPM是PHP FastCGI Process Manager的缩写,即PHP FastCGI进程管理器,实际上它是PHP的一个补丁,旨在将FastCGI进程管理整合进PHP包中。

    注意:即使你坚持使用Apache,也有很多原因跳过mod_php,直接通过FastCGI解析PHP。使用mod_php时,Apache处理 载入PHP的每个请求会载入所有的库,这是一个巨大的无畏开销。如果使用FastCGI,PHP的行为更象应用程序服务器,PHP-FPM以及 spawn-fcgi按需要载入和杀掉PHP实例,这样做有很多好处,其中很重要的一点就是减少内存开销。

    让我们开始吧

    我们使用的是全新安装的Ubuntu 8.10 Intrepid,第一件事情是安装所有的依赖包。

            
    1. sudo apt-get install make bison flex gcc patch autoconf subversion locate  
    2. sudo apt-get install libxml2-dev libbz2-dev libpcre3-dev libssl-dev zlib1g-dev libmcrypt-dev libmhash-dev libmhash2 libcurl4-openssl-dev libpq-dev libpq5 libsyck0-dev
    3.  

    准备好依赖包之后,我们就可以开始。

    编译PHP

    我们下载的是PHP 5.2.8源代码包,还有对应的PHP-FPM补丁,我们先打上补丁,然后再编译。

            
    1. cd /usr/local/src/  
    2. sudo wget http://us.php.net/get/php-5.2.8.tar.gz/from/this/mirror  
    3. sudo tar zvxf php-5.2.8.tar.gz  
    4. sudo wget http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz  
    5. sudo gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | sudo patch -d php-5.2.8 -p1  
    6. cd php-5.2.8  
    7. sudo ./configure --enable-fastcgi --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --disable-pdo --with-pgsql --with-curl --disable-debug --enable-pic --disable-rpath --enable-inline-optimization --with-bz2 --with-xml --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-xslt --enable-memcache --enable-zip --with-pcre-regex  
    8. sudo  make all install  
    9. sudo  strip /usr/local/bin/php-cgi 

    如果在运行上面命令时遇到错误,很可能是因为缺少依赖包造成的。另外,确保你正确启用和禁用了特定的PHP配置选项。紧接着我们通过PECL安装一 些将会用到的模块:

            
    1. sudo pecl install memcache  
    2. sudo pecl install apc  
    3. sudo pecl install syck-beta 

    在安装apc模块时,请务必关闭Apache选项,如果你没有关闭,它也会提醒你。接下来复制我们常用的php.ini:

            
    1. sudo cp /usr/local/src/php-5.2.8/php.ini-recommended /usr/local/lib/php.ini 
    2.  

    最后,我们建立符号链接:

            
    1. sudo mkdir /etc/php/  
    2. sudo ln -s /usr/local/lib/php.ini /etc/php/php.ini  
    3. sudo ln -s /usr/local/etc/php-fpm.conf /etc/php/php-fpm.conf 

    PHP编译到此结束,剩下要做的事情是修改php-fpm.conf设置,用文本编辑器打开/etc/php/php-fpm.conf,将进程属 主用户修改为www-data,这个文件比较大,因此最好使用搜索功能,我想修改的值分别位于51、52、63和66行。

            
    1. <value name="owner">www-datavalue> 
    2. <value name="group">www-datavalue> 
    3. <value name="user">www-datavalue> 
    4. <value name="group">www-datavalue> 


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
PHP和Nginx的通信方式
nginx+PHP+PHP-FPM(FastCGI)在Ubuntu上的安装和配置
Ubuntu部署WEB平台(apache+php和Nginx+php)
ubuntu14.04 +nginx+php5-fpm
Nginx+PHP的测试---5.3.3已包括fpm - 回忆未来[向东],向东博客 - ...
Nginx加多个tomcat实现负载均衡,动静分离
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服