nginx+php-fpm+apc+mysql编译安装

目前让PHP最快的环境组合是:Nginx + PHP-FPM + APC + MYSQL。本文将讲解 nginx 服务器、php、apc、mysql的安装配置及应用。

安装前提示:linux 软件在编译安装后,他的安装位置和配置文件都可以在源码目录中的文件中找到,如果无法确定软件的相关文件安装在哪里,可以仔细的查看一下源码中的文本文件。

Nginx?
Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 。详细介绍可以见http://wiki.nginx.org/Chs。

PHP-FPM?
PHP-FPM是PHP FastCGI Process Manager 的缩写,即 PHP FastCGI 进程管理器,他是目前最看好的 php 解析器。PHP-FPM 从 php5.3.3 版本开始被整合进 php 安装包中,安装时只要启用即可。
注意:即使你坚持使用Apache,也有很多原因跳过mod_php,直接通过FastCGI解析PHP。使用mod_php时,Apache处理载入PHP的每个请求会载入所有的库,这是一个巨大的无畏开销。如果使用FastCGI,PHP的行为更象应用程序服务器,PHP-FPM以及spawn-fcgi按需要载入和杀掉PHP实例,这样做有很多好处,其中很重要的一点就是减少内存开销。

APC?
APC,全称是Alternative PHP Cache,官方翻译为”可选PHP缓存”。详细介绍可见http://pecl.php.net/package/apc或者http://php.net/manual/en/book.apc.php。

开始安装

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

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

编译和安装 PHP 及 php-fpm

我们下载的是 PHP 5.3.9 源代码包,已经集成了 PHP-FPM(PHP5.3.3以前的需要下载对应的 PHP-FPM 补丁),然后再编译。

如果在运行上面命令时遇到错误:

意思是编译过程找不到对应库文件。其中,-lxxx 表示库文件 libxxx.so 的符号链接。
解决办法是 apt-get install libxxx-dev 或者是查看符号链接是否正确。

另外,确保你正确启用和禁用了特定的 PHP 配置选项。紧接着我们通过PECL安装一些将会用到的模块:

在安装apc模块时,请务必关闭Apache选项,如果你没有关闭,它也会提醒你。

接下来复制我们常用的php.ini:

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

PHP编译到此结束,剩下要做的事情是修改php-fpm.conf设置,用文本编辑器打开/etc/php/php-fpm.conf,将进程属主用户修改为www-data。

配置 php-fpm

因为从 php5.3.3 以后,php-fpm 被整合进 php 的安装包之中,在编译时只要设定启用参数了,那么 php-fpm 也会被默认安装。默认安装的 php-fpm 位置是:
/usr/local/etc/php-fpm.conf //配置文件安装位置
/usr/local/sbin/php-fpm //启动文件安装位置

默认安装的 php-fpm 给我们准备了一个程序来控制 fastcgi 进程,这个文件是 $PREFIX/sbin/php-fpm($PREFIX 是安装目录),但是此文件只能启动 php-fpm,要想关闭 php-fpm,需要查看 master进程号,然后 kill 掉:

我想使用平滑启动/关闭管理模式来管理 php-fpm 该怎么做呢?

php-fpm 同样也给我们提供了一个平滑启动/关闭的控制程序,这个文件是php-5.3.9/sapi/fpm/init.d.php-fpm(编译后的源码包中),把它复制为 /etc/init.d/php-fpm:

该程序有如下参数:
start 启动php的fastcgi进程
stop 强制终止php的fastcgi进程
quit 平滑终止php的fastcgi进程
restart 重启php的fastcgi进程
reload 重新加载php的php.ini
logrotate 重新启用log文件

通过查看 /data/software/php-5.3.9/sapi/fpm/init.d.php-fpm,我们能够知道 php-fpm 的日志及进程号默认是保存在 ${prefix} 的var下,但是配置文件 php-fpm.conf 默认是没有开启的,找到对应的地方去掉注释即可。

这样,在修改了php.ini之后,我们可以使用

这样,就保持了在php的fastcgi进程持续运行的状态下,又重新加载了php.ini。

编译和安装 MySQL

下载和编译 MySQL,但是先不要安装:

需要改几个权限问题才能安装 MySQL,否则会出现 Access denied for user ‘root’@’localhost’ (using password: NO) 经典问题:

安装和启动 MySQl,修改 root 密码,登录 MySQL:

编译Nginx

和编译PHP一样非常简单:

注意:要修改nginx目录及文件权限,以免运行时因权限问题发生错误。

在etc下创建一个符号链接,方便管理:

配置/etc/nginx/conf/nginx.conf,最终修改结果如下:

优化设置FastCGI参数,可以避免Nginx 503错误,打开/etc/nginx/fastcgi_params,添加以下参数:

最后,我们创建一个SystemV风格的启动脚本,保存为/etc/init.d/nginx。

不要忘了设置可执行权限。

设置你的网站

这一阶段的工作主要按你自己的习惯完成,这里仅做一个粗略的介绍。首先我们创建一个目录来存放我们的网站配置文件,在创建一个目录用来存放激活的文件(此目录存放指向可用配置的符号链接):

接下来为我们的网站增加一个conf文件/etc/nginx/sites-available/default.conf,内容如下:

为新增加的网站设置添加符号链接,即激活新的网站设置:

启动

end

《nginx+php-fpm+apc+mysql编译安装》有14个想法

    1. 额…
      我用的就是chrome啊,那个时候正在后台改评论的代码,估计是此事件造成的…
      正在将主题的js和css转出…

      1. 不折腾博客,总有个要折腾啊…
        ps:不懂?是问我放正文还是评论么!
        其实我是测试主题的插图链接…所以就…没其他图啊…
        这主题很强大,但bug也很多…毕竟是0.2版啊…

发表评论

电子邮件地址不会被公开。 必填项已用*标注