开始安装Nginx和PHP-FPM之前,你必须卸载系统中以前安装的Apache和PHP。用root登录输入下面的命令:

[plain] 

  1. # yum remove httpd* php*  


增加额外资源库

    默认情况下,CentOS的官方资源是没有php-fpm的, 但我们可以从Remi的RPM资源中获得,它依赖于EPEL资源。我们可以这样增加两个资源库:

[plain] 

  1. # yum install yum-priorities -y  

  2. # rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm  

  3. # rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm  

输出样例

[plain] 

  1. Retrieving http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm  

  2. warning: /var/tmp/rpm-tmp.00kiDx: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY  

  3. Preparing...########################################### [100%]  

  4. 1:epel-release ########################################### [100%]  

安装Nginx

输入下列命令

[plain] 

  1. # yum install nginx  

输出样例

[plain] 

  1. Dependencies Resolved  

  2.   

  3. ================================================================================  

  4.  Package                  Arch      Version                    Repository  Size  

  5. ================================================================================  

  6. Installing:  

  7.  nginx                    x86_64    0.8.54-1.el6               epel       358 k  

  8. Installing for dependencies:  

  9.  GeoIP                    x86_64    1.4.8-1.el6                epel       620 k  

  10.  fontconfig               x86_64    2.8.0-3.el6                base       186 k  

  11.  freetype                 x86_64    2.3.11-6.el6_1.8           updates    358 k  

  12.  gd                       x86_64    2.0.35-10.el6              base       142 k  

  13.  libX11                   x86_64    1.3-2.el6                  base       582 k  

  14.  libX11-common            noarch    1.3-2.el6                  base       188 k  

  15.  libXau                   x86_64    1.0.5-1.el6                base        22 k  

  16.  libXpm                   x86_64    3.5.8-2.el6                base        59 k  

  17.  libjpeg                  x86_64    6b-46.el6                  base       134 k  

  18.  libpng                   x86_64    2:1.2.46-1.el6_1           base       180 k  

  19.  libxcb                   x86_64    1.5-1.el6                  base       100 k  

  20.  libxslt                  x86_64    1.1.26-2.el6               base       450 k  

  21.  perl                     x86_64    4:5.10.1-119.el6_1.1       base        10 M  

  22.  perl-Module-Pluggable    x86_64    1:3.90-119.el6_1.1         base        37 k  

  23.  perl-Pod-Escapes         x86_64    1:1.04-119.el6_1.1         base        30 k  

  24.  perl-Pod-Simple          x86_64    1:3.13-119.el6_1.1         base       209 k  

  25.  perl-libs                x86_64    4:5.10.1-119.el6_1.1       base       575 k  

  26.  perl-version             x86_64    3:0.77-119.el6_1.1         base        49 k  

  27.   

  28. Transaction Summary  

  29. ================================================================================  

  30. Install      19 Package(s)  

  31. Upgrade       0 Package(s)  

  32.   

  33. Total download size: 14 M  

  34. Installed size: 47 M  

  35. Is this ok [y/N]: y  

如果你想在系统启动时自动运行nginx,输入下列命令:

[plain] 

  1. # chkconfig --level 345 nginx on  

第一次启动nginx,输入下列命令:

[plain] 

  1. # /etc/init.d/nginx start  

输出样例

[plain] 

  1. Starting nginx:                                            [  OK  ]  


安装PHP-FPM

输入下列命令:

[plain] 

  1. # yum --enablerepo=remi install php php-fpm  

输出样例

[plain] 

  1. Dependencies Resolved  

  2.   

  3. ====================================================================================  

  4.  Package            Arch        Version                          Repository    Size  

  5. ====================================================================================  

  6. Installing:  

  7.  php                x86_64      5.3.10-2.el6.remi                remi         2.3 M  

  8.  php-fpm            x86_64      5.3.10-2.el6.remi                remi         1.1 M  

  9. Installing for dependencies:  

  10.  apr                x86_64      1.3.9-3.el6_1.2                  base         123 k  

  11.  apr-util           x86_64      1.3.9-3.el6_0.1                  base          87 k  

  12.  apr-util-ldap      x86_64      1.3.9-3.el6_0.1                  base          15 k  

  13.  httpd              x86_64      2.2.15-15.el6.centos.1           updates      813 k  

  14.  httpd-tools        x86_64      2.2.15-15.el6.centos.1           updates       70 k  

  15.  libedit            x86_64      2.11-4.20080712cvs.1.el6         base          74 k  

  16.  mailcap            noarch      2.1.31-2.el6                     base          27 k  

  17.  php-cli            x86_64      5.3.10-2.el6.remi                remi         2.2 M  

  18.   

  19. Transaction Summary  

  20. ====================================================================================  

  21. Install      10 Package(s)  

  22. Upgrade       0 Package(s)  

  23.   

  24. Total download size: 6.8 M  

  25. Installed size: 21 M  

  26. Is this ok [y/N]: y  

如果你想在系统启动时自动运行php-fpm,输入下列命令:

[plain] 

  1. # chkconfig --level 345 php-fpm on  

PHP仅安装了核心模块,你很可能需要安装其他的模块,比如MySQL、 XML、 GD等等,你可以输入下列命令:

[plain] 

  1. # yum --enablerepo=remi install php-gd php-mysql php-mbstring php-xml php-mcrypt  

第一次启动php-fpm,输入下列命令:

[plain] 

  1. # /etc/init.d/php-fpm restart  

输出样例

[plain] 

  1. Starting php-fpm:                                          [ OK ]  

配置PHP-FPM和Nginx,让他们一起工作

nginx的配置文件在/etc/nginx/nginx.conf,输入下列命令编辑这个文件:

[plain] 

  1. # vi /etc/nginx/nginx.conf  

像下面这样编辑取消注释:

[plain] 

  1.        ...  

  2. location / {  

  3.            root   /usr/share/nginx/html;  

  4.            index  index.html index.htm index.php;  

  5.        }  

  6.        ...  

  7. location ~ \.php$ {  

  8.            root           html;  

  9.            fastcgi_pass   127.0.0.1:9000;  

  10.            fastcgi_index  index.php;  

  11.            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  

  12.            include        fastcgi_params;  

  13.        }  

  14.        ...  

重启Nginx会重新读取配置文件,输入

[plain] 

  1. # /etc/init.d/nginx reload  

现在在document root目录下建立下列PHP文件

[plain] 

  1. # vi /usr/share/nginx/html/info.php  

文件内容如下:

[plain] 

  1. <?php  

  2. phpinfo();  

  3. ?>  

访问 http://YOUR-SERVER-IP

Nginx虚拟主机设置

设置例子

IP: 192.168.1.113

Domain: domain.local
Hosted at: /home/www/domain.local

输入下列命令新建名叫“www”的用户

[plain] 

  1. # useradd www  

创建必要的目录

[plain] 

  1. # mkdir -p /home/www/domain.local/public_html  

  2. # mkdir -p /home/www/domain.local/log  

  3. # chown -R www.www /home/www/  

  4. # chmod 755 /home/www/  


创建虚拟主机配置文件

[plain] 

  1. # cd /etc/nginx/conf.d/  

  2. # cp virtual.conf www.conf  


输入下面命令打开www.conf文件

[plain] 

  1. # vi /etc/nginx/conf.d/www.conf  


增加以下配置

[plain] 

  1. server {  

  2.         server_name  domain.local;  

  3.         root /home/www/domain.local/public_html;  

  4.         access_log /home/www/domain.local/log/domain.local-access.log;  

  5.         error_log /home/www/domain.local/log/domain.local-error.log;  

  6.   

  7.         location / {  

  8.                 index  index.html index.htm index.php;  

  9.         }  

  10.         location ~ \.php$ {  

  11.                 include /etc/nginx/fastcgi_params;  

  12.                 fastcgi_pass  127.0.0.1:9000;  

  13.                 fastcgi_index index.php;  

  14.                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  

  15.         }  

  16. }  


你可以用下列方法检查配置文件是否有语法错误

[plain] 

  1. # /etc/init.d/nginx configtest  


输出样例

[plain] 

  1. the configuration file /etc/nginx/nginx.conf syntax is ok  

  2. configuration file /etc/nginx/nginx.conf test is successful  


现在编辑/etc/php-fpm.d/www.conf文件,将运行php-fpm进程的用户改为“www”,输入

[plain] 

  1. # vi /etc/php-fpm.d/www.conf  

找到“group of processes”,编辑成下面的样子:

[plain] 

  1. ; Unix user/group of processes  

  2. ; Note: The user is mandatory. If the group is not set, the default user's group  

  3. ;       will be used.  

  4. ; RPM: apache Choosed to be able to access some dir as httpd  

  5. user = www  

  6. ; RPM: Keep a group allowed to write in log dir.  

  7. group = www  


最后重启nginx

[plain] 

  1. # /etc/init.d/nginx restart  

  2. # /etc/init.d/php-fpm restart