nginx学习手札---nginx+php整合入门篇 (转)
时间:2009-12-16
来源:互联网
折腾两天,终于在今天调通了,居然是因为配置文件中有一个参数没有写,真是气死了,看来以后还需要细心些呀,下面我就把php+nginx的实现方法写下来
不像apache和lighttpd,nginx并不能自动的启动spawn FCGI processes,所以需要人为在nginx启动前加载fcgi进程,我使用的是lighttpd带的spawn-fcgi程序,可以下载lighttpd的源码包,./configure && make后,然后cp src/spawn-fcgi /usr/local/php/bin/
现在可以手动启动fcgi程序了/usr/local/php/bin/spawn-fcgi -a 127.0.0.1 -p 10005 -u daemon -f /usr/local/php/bin/php-cgi
这其中daemon是启动nginx程序的用户,其他参数可以执行/usr/local/php/bin/spawn-fcgi查看
接下来是nginx的配置了
nginx安装这里就不在赘述了,php我用的5.2.6,编译时只加了--enable-fastcgi --enable-force-cgi-redirect这两个参数,其他参数请根据各人实际需求添加,这是这两个是必须的
然后在nginx.conf文件中加入
location ~ .*\.php?$ {
root html;
index index.php;
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_pass 127.0.0.1:10005;
fastcgi_index index.php;
}
在这里我使用了nginx自带的fastcgi_params配置文件,具体内容如下fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
#fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200
其中蓝色部分是默认配置文件中没有的,也是最关键的,我就是差这一条,卡住了两天,接下来就可以在html文件夹下建立info.php文件了,内容如下
<?php
phpinfo();
?>
保存退出后启动nginx程序
/usr/local/nginx/sbin/nginx
然后通过http://youip/info.php,就可以看到php的详细信息了
到此一个可用的,简单的nginx+php环境就做好了
接下来就对fastcgi_params文件内容按我自己的理解做个解释吧,还望各位看官拍砖
fastcgi_param QUERY_STRING $query_string;以这个为例,这个参数的意思就是,取query_string变量的值付给QUERY_STRING,然后通过fastcgi_param程序去运行,然而这些参数中的变量都是可以通过info.php来查看的。举例来说吧,fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;在info.php中查到$document_root是/usr/local/nginx/html,$fastcgi_script_name是所请求的url,在我的例子中就是info.php这文件,当然,如果要是把info.php放到了html/phpinfo文件夹下,那$fastcgi_script_name就是/phpinfo/info.php,这样连起来,SCRIPT_FILENAME就是/usr/local/nginx/html/info.php,然后再交友fastcgi_param来处理,其他参数完全可以按照此理解进行对照
参考文章:http://wiki.codemongers.com/NginxHttpFcgiModule#fastcgi_param
http://wiki.codemongers.com/NginxFcgiExample
不像apache和lighttpd,nginx并不能自动的启动spawn FCGI processes,所以需要人为在nginx启动前加载fcgi进程,我使用的是lighttpd带的spawn-fcgi程序,可以下载lighttpd的源码包,./configure && make后,然后cp src/spawn-fcgi /usr/local/php/bin/
现在可以手动启动fcgi程序了/usr/local/php/bin/spawn-fcgi -a 127.0.0.1 -p 10005 -u daemon -f /usr/local/php/bin/php-cgi
这其中daemon是启动nginx程序的用户,其他参数可以执行/usr/local/php/bin/spawn-fcgi查看
接下来是nginx的配置了
nginx安装这里就不在赘述了,php我用的5.2.6,编译时只加了--enable-fastcgi --enable-force-cgi-redirect这两个参数,其他参数请根据各人实际需求添加,这是这两个是必须的
然后在nginx.conf文件中加入
location ~ .*\.php?$ {
root html;
index index.php;
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_pass 127.0.0.1:10005;
fastcgi_index index.php;
}
在这里我使用了nginx自带的fastcgi_params配置文件,具体内容如下fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
#fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200
其中蓝色部分是默认配置文件中没有的,也是最关键的,我就是差这一条,卡住了两天,接下来就可以在html文件夹下建立info.php文件了,内容如下
<?php
phpinfo();
?>
保存退出后启动nginx程序
/usr/local/nginx/sbin/nginx
然后通过http://youip/info.php,就可以看到php的详细信息了
到此一个可用的,简单的nginx+php环境就做好了
接下来就对fastcgi_params文件内容按我自己的理解做个解释吧,还望各位看官拍砖
fastcgi_param QUERY_STRING $query_string;以这个为例,这个参数的意思就是,取query_string变量的值付给QUERY_STRING,然后通过fastcgi_param程序去运行,然而这些参数中的变量都是可以通过info.php来查看的。举例来说吧,fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;在info.php中查到$document_root是/usr/local/nginx/html,$fastcgi_script_name是所请求的url,在我的例子中就是info.php这文件,当然,如果要是把info.php放到了html/phpinfo文件夹下,那$fastcgi_script_name就是/phpinfo/info.php,这样连起来,SCRIPT_FILENAME就是/usr/local/nginx/html/info.php,然后再交友fastcgi_param来处理,其他参数完全可以按照此理解进行对照
参考文章:http://wiki.codemongers.com/NginxHttpFcgiModule#fastcgi_param
http://wiki.codemongers.com/NginxFcgiExample
作者: zhoulian 发布时间: 2009-12-16
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28