最近安装nginx+php,用于测试,因为第一次安装,所以在安装过程中遇到各种问题,网上搜索了许多关于这方面的资料。网上资料很多要么是不负责的copy,有误人之嫌,要么就是因版本过低,不适合目前版本的安装。经过多日摸索和群里热心Q友的帮助,终于成功地搭建了nginx+php.


环境:centos6.5

      nginx1.6.2

      php5.5.10

一、安装nginx

1、安装nginx依赖包(gcc、openssl-devel、pcre-devel、zlib-devel)

   检查系统是否已安装了gcc、openssl-devel、pcre-devel、zlib-devel:

   rpm -qa gcc、openssl-devel、pcre-devel、zlib-devel

   如果有未安装的依赖包,可以使用yum安装:

   yum -y install XX

2、依赖包安装完后,下载和安装nginx

   #cd /usr/local/src #进入src目录

   #wget http://nginx.org/download/nginx-1.6.2.tar.gz

   #tar -zxvf nginx-1.6.2.tar.gz #解压文件

   #cd nginx-1.6.2

   #./configure --prefix=/usr/local/nginx-1.6.2 --with-http_stub_status_module \

      --with-google_perftools_module

   #make  #编译nginx

   #make install

   --prefix用于指定安装路径,--with-google_perftools用于启用支持TCMalloc优化nginx的google-perftools模块(如果不用TCMalloc优化nginx,可以不加此参数)。可以通过 ./configure --help查看更多的参数。  

   到此,nginx已安装完成,安装目录为/usr/local/nginx-1.6.2.

二、安装php5.5.10

    因为nginx不支持对外部的直接调用或者解释,要使nginx支持php就必须安装Fastcgi程序。PHP5.0之前的版本没有集成php-fpm,要作为补丁编译到php内核中。PHP5.0之后的版本已经集成了php-fpm,只需要在编译安装PHP时加入--enable-fpm参数。


1、检查、安装依赖包(gcc、gcc-c++、libxml2、libxml2-devel、autoconf、libjpeg、libjpeg-devel、libpng、libpng-devel、freetype、freetype-devel、zlib、zlib-devel、glibc、glibc-devel、glib2、glib2-devel)

   #rpm -qa  #检查依赖包是否安装

   #yum -y install XX #安装依赖包


2、依赖包安装好后,下载和安装PHP-5.5.10

   #cd /usr/local/src

   #wget http://mirrors.sohu.com/php/php-5.5.10.tar.gz

   #tar -zxvf php-5.5.10

   #cd php-5.5.10

   #./configure --prefix=/usr/local/php5.5.10 --enable-fpm

   #make #编译PHP,编译过程耗时比较长,需要等待

   #make test #测试,测试后没有error提示,则可以进行安装

   #make install

   在./configure这一步骤,网上很多资料都提到要加enable-fast-fcgi,但在PHP5.0之后的版本中,这个参数是无效的,也就是说不存在这个参数。如果加了这个参数,编译会提示无效参数,通过./configure --help查看帮助,也没有此参数信息,这是新版本与旧版本另一个不同之处。

   make install后,会有二个warning提示,这是因为pear版本过低的原因。

   到此PHP已安装完成,但因为安装目录没有php.ini这个全局配置文件,需要从安装包中复制php.ini-production到/usr/local/php5.5.10/lib,并命名为php.ini.

   #cp php.ini-production /usr/local/php5.5.10/lib/php.ini

   配置php.ini就不在此细说,需要注意的是配置文件中指定的用户和用户组要与nginx配置文件中指定的用户和用户组一致。

3、启动php-fpm

   #/usr/local/php5.5.10/sbin/php-fpm

   查看php-fpm是否启动和监听IP、端口,通过ps和netstat查看相关信息

[root@bogon php5.5.10]# netstat -antl | grep 9000
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      
[root@bogon php5.5.10]# ps -ef | grep php
root     10637     1  0 06:04 ?        00:00:00 php-fpm: master process (/usr/local/php5.5.10/etc/php-fpm.conf)
nobody   10638 10637  0 06:04 ?        00:00:00 php-fpm: pool www                
nobody   10639 10637  0 06:04 ?        00:00:00 php-fpm: pool www                

三、配置nginx来支持PHP

1、nginxr的配置文件nginx.conf在/usr/local/nginx/conf目录下。下面是在nginx下支持PHP解析的一个虚拟主机配置实例。  

server {
        listen       80;
        server_name  192.168.0.73;
        location / {
            root   html;
            index  index.html index.htm;
        }
        location ~ \.php$ {
                   root html;
                   fastcgi_pass 127.0.0.1:9000;
                   fastcgi_index index.php;
                   fastcgi_param SCRIPT_FILENAME  /usr/local/ngin/html$fastcgi_script_name;
                   include      fastcgi_params;
                   }

    需要注意红色字体的地方,必须为为html目录的绝对路径,而不是相对路径,否则在访问PHP网页时会出错。

    为确保配置文件正确,使用下面的命令来检测配置文件的正确性:

    #/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

    如果配置文件正确,则会显示如下:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

2、启动nginx

      #/usr/local/nginx/sbin/nginx

     查看nginx进程

     [root@bogon php5.5.10]# ps -ef | grep nginx
      root 3894 1 0 03:30 ?  00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
      nobody 12674 3894 0 06:44 ? 00:00:00 nginx: worker process      

3、测试nginx对PHP的支持

   在/usr/local/nginx/html新建一个index.php文件,内容如下:

  <?php phpinfo(); ?>

   在浏览器访问:http://192.168.0.73/index.html,浏览器会显示"Welcome to Nginx!",则表示nginx正常运行。

   接着浏览器访问:http://192.168.0.73/index.php,如果php能够正常解析,会出现PHP安装配置以及功能列表信息,如下图显示: