最近安裝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
依賴包安裝完後,下載和安裝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 #可以通過 ./configure --help查看更多的參數
--prefix用於指定安裝路徑,--with-google_perftools用於啓用支持TCMalloc優化nginx的google-perftools模塊(如果不用TCMalloc優化nginx,可以不加此參數)。
#make #編譯nginx
#make install
到此,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 #安裝依賴包
依賴包安裝好後,下載和安裝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
網上很多資料都提到要加enable-fast-fcgi,這一步是不需要的,如果加了這個參數,編譯會提示無效參數,通過./configure --help查看幫助,也沒有此參數信息,這是新版本與舊版本另一個不同之處。
#make #編譯PHP,編譯過程耗時比較長,需要等待
#make test #測試,測試後沒有error提示,則可以進行安裝
#make install
到此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配置文件中指定的用戶和用戶組一致。
2、啓動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安裝配置以及功能列表信息,如下圖顯示: