配置 nginx+codeigniter+php
为了配置nginx+codeigniter+php,我都不知道花了多少时间,壮烈了多少脑细胞……主要是基本的例子程序都不成,URI的参数总是传不过去。经过………………奋战………………奋战……………………终于弄好了。给新手朋友们一个见面礼吧~~
php:5.3.2
nginx:0.8.35
server:CentOS release 5.2
1, php编译时要加上fastcgi和pfm两项,将 --enable-fastcgi --enable-fpm 打开。pfm是从svn.php.net网站上下对应的5.3版的文件。
cd /usr/local/php-5.3.2
svn co http://svn.php.net/repository/php/php-src/branches/PHP_5_3/sapi/fpm sapi/fpm <-- 要先安装subversion
./buildconf --force <-- 出错的话,看看是不是没装autoconf , 正确的话在./configure --help中可以看到enable-fpm这一项。
./configure --prefix=/usr/local/php -enable-fastcgi --enable-fpm ... <-- 再加上你想要的参数,可能会出错几次[——!],缺什么就装什么吧.
make
make install
cp php.ini-production ../php/etc/php.ini
cd ../php
cp etc/php-fpm.conf.default etc/php-fpm.conf
修改php-fpm.conf文件,以下三行注释放开。
pm.start_servers = 20 <--- 我设的5,单纯测试用的话可以小点.
pm.min_spare_servers = 5
pm.max_spare_servers = 35
sbin/php-fpm -i etc/php.ini -y etc/php-fpm.conf
ok --> php配置完成!
2,配置nginx.conf文件,我用的是nginx 0.8.35,官网直接挡的.编译安装比较简单,主要说一下配置文件的修改.
server {
......
location / {
root /var/www/codeigniter; <-- 默认的安装目录,可以修改成自己的web站点安装目录.
indexindex.php index.htm; <-- 加上index.php
if (!-e $request_filename) { // 注意下边改成自己的IP地址和端口号
rewrite ^/(index.php/)(.*)([/])$ http://192.168.1.100:8080/$2/index.php break;
}
}
......
location ~ \.php$ { <-- 去掉fastcgi这部分注释,主要任务就是发现是访问php的就转给PHP处理.
include fastcgi_params;
fastcgi_paramSCRIPT_FILENAME/usr/local/nginx/codeigniter/index.php; <-- 要换成自己的站点
fastcgi_indexindex.php;
fastcgi_pass 127.0.0.1:9000;
if ($fastcgi_script_name ~ "^(/index.php)(/.*)(\.php)$") { <-- 以下是uri处理部分
set $path_info $2/;
}
fastcgi_param PATH_INFO $path_info;
}
}// server
/nginx/sbin/nginx <-- 启动nginx
配置完了,希望对大家有用。:victory: 如果在url中输入的不是http://<server>/index.php/blog/ 而是 http://<server>/blog/index.php的话,会出现问题。在nginx的配置文件中的fastcgi部分加入下列代码就可以了。
if ($fastcgi_script_name ~ "^(/.*)(\.php)$") {
set $path_info $1/;
} 我测试了下,你写的没有用呢,, server
{
listen 80;
server_namewww.xxx.com;
index index.html index.htm index.php;
root/var/www/html;
#limit_conn crawler20;
location ~ .*.php
{
#fastcgi_passunix:/tmp/php-cgi.sock;
fastcgi_pass127.0.0.1:9000;
fastcgi_index index.php;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
#set $real_script_name $1;
set $path_info $2;
}
include fcgi.conf;
fastcgi_param PATH_INFO $path_info;
}
这是我修改后的,经我自己服务器测试,可运行, 好帖,收藏 不错
按照这样的方法不能用
页:
[1]