查看:2215|回复:0
Nginx fastcgi安装与配置详解发表时间:2013-01-08 14:48:39

我爱java

0分享0主题0帖子

学徒一级

(初出茅庐)

因为Nginx不自带PHP模块,对于PHP的处理,需要转发给其他有PHP脚本处理能力的系统服务,包括可以的选择有apache,fastcgi等。

下面记录了这种方式的配置方法,系统为Debian Linux。

首先安装nginx和php5-cgi

apt-get -y install nginx
apt-get -y install php5-cgi

vi /etc/php5/cgi/php.ini
#add:
cgi.fix_pathinfo = 1

vi /etc/init.d/php-fastcgi
#paste from init.d/php-fastcgi file
#注意,修改/usr/bin/php-cgi为/usr/bin/php5-cgi,否则加载不了zend
chmod 755 /etc/init.d/php-fastcgi

vi /etc/default/php-fastcgi
#paste from default/php-fastcgi file

重启php5-cgi
/etc/init.d/php-fastcgi stop
cat /var/run/php-fastcgi.pid, 然后杀死这个pid,然后再
/etc/init.d/php-fastcgi start

禁止 php5-cgi开机运行
vi /etc/default/php-fastcgi
START=no

/usr/bin/php5-cgi -v
可以看到zend optimizer加载了

#start php-fastcgi:
/etc/init.d/php-fastcgi start
ps ax | grep php 可以看到:
/usr/bin/php5-cgi -q -b localhost:9000

#To have php-fastcgi start at boot time, run
update-rc.d php-fastcgi defaults

#Configuring nginx

nginx上传附件大小限制:
server{中添加body size设置,默认是1M
client_max_body_size 100m;
client_body_timeout 300;
client_header_timeout 60; (这个不用了)

vi /etc/nginx/nginx.conf
设置以下参数
user www-data www-data;
worker_processes 5;
keepalive_timeout 30;
events {
use epoll;#Linux 下性能最好的 event 模式
worker_connections 2048;# 每个工作进程允许最大的同时连接数
}

http里面添加:
include /etc/nginx/sites-enabled/*;
把server{}拷贝出来放到虚拟主机目录下面default:

设置虚拟主机目录
mkdir /etc/nginx/sites-enabled/
cd sites-enabled
vi default
拷贝nginx.conf中的虚拟主机server过来

虚拟主机:
index index.php index.html index.htm;

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_read_timeout 30;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

注意:$_SERVER["SERVER_NAME"]或getenv(’SERVER_NAME’)获取的始终将是Nginx server_name配置中的第一个域名,这一点在程序开发中需要注意。这第一个域名就相当于Apache虚拟主机配置中的ServerName,后面的域名就相当于Apache的ServerAlias。

vi /etc/nginx/fastcgi_params
添加这一 //暂时去掉,不管用
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
注意:
$document_root变量只有在location中设置了root才管用,否则默认是/usr/local/nginx/html

重启nginx
/etc/init.d/nginx restart

测试php

vi /var/www/nginx-default/info.php
phpinfo();
?>

您需要登录以后才可以回帖    登录|注册