CentOS 6.3下nginx、php-fpm、drupal快速部署

一切本着从简原则来做,能yum/rpm的,坚决不手工编译 :)
本次部署环境基于CentOS 6.3 x86_64系统。
0. 准备工作

#更新yum
[root@imysql ~]# yum -y update
[root@imysql ~]# yum install libaio-devel.x86_64
#drupal 8.0需要用到curl模块
[root@imysql ~]# yum install curl-devel
[root@imysql ~]# yum -y install libpng-devel libjpeg-devel freetype-devel gmp-devel libxml2-devel

1. 安装nginx

#安装nginx官方yum源包
[root@imysql ~]# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
[root@imysql ~]# yum -y install nginx
[root@imysql ~]# chkconfig nginx on

2. 安装php-fpm

#安装php yum源包
[root@imysql ~]# rpm -ivh rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm
[root@imysql ~]# yum -y install php54w

3. 配置nginx+php
/etc/nginx/nginx.conf 配置文件可以不用做任何修改。
编辑 /etc/nginx/conf.d/default.conf,以本站为例,配置文件如下:

server {
    listen       80;
    server_name  imysql.com *.imysql.com;

    root   /data/www/imysql.cn/;
    index index.php index.htm index.html index.shtml;

    error_page  404               /page_not_found;
    error_page   500 502 503 504  /page_not_found;

    location ~ /\.ht {
        deny  all;
    }

    if ($fastcgi_script_name ~ \..*\/.*php) {
        return 403;
    }

    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?q=$1 last;
        }
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires 30d;
    }

    location ~ .*\.(js|css)?$ {
        expires 1h;
    }

    location ^~ /sites/default/files/imagecache/ {
        index index.php index.html;
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?q=$1 last; break;
        }
    }
}

上述配置包括了nginx虚拟主机的配置,以及drupal的rewrite规则配置,简单快速。

4. 启动测试
每次修改完配置文件后,都记得执行下面的命令测试配置文件正确性:

[root@imysql ~]# /etc/init.d/nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

确认配置文件无误后,执行下面的命令重载nginx,使其生效:

[root@imysql ~]# /etc/init.d/nginx reload

#或者restart
[root@imysql ~]# /etc/init.d/nginx restart

大功告成 :)

评论

貌似没有写php-fpm是如何启动且监听在127.0.0.1:9000的?

默认配置就是监听本地9000端口的

安装spawn-fcgi报找不到是怎么回事:
[tvu@localhost ~]$ sudo yum install spawn-fcgi
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
Setting up Install Process
No package spawn-fcgi available.
Error: Nothing to do

PHP 5.4已自带cgi功能,即:PHP-fpm,就不需要spawn-cgi了

在error.log中出现错误
FastCGI sent in stderr: “Primary script unknown” while reading response header from upstream, client...

只能仔细检查配置了,或者google下 :)

我在CentOS 6.3 64位按照本文安装Nginx、MySQL和PHP。PHP死活不运行,以为是9000端口没有开,Google很多资料,都找不到头绪。
最后发现http://blog.itnmg.net/centos-lnmp/解决了问题,原来必须指定安装php54w-fpm。

service php-fpm start
PHP可以解析了!