最近安装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安装配置以及功能列表信息,如下图显示: