Nginx默认不支持php解释器,虽然Backend动态语言不使用php,但是比较常用的数据库图形化管理工具phpmyadmin,为php所写,要使用的话,必须配置nginx对php的支持。这一点上,通过FastCGI进行支持。昨天下午配置的时候,遇到各种问题,终于搞定。网上的博客大都年代比较久远,复制粘贴真是没有好下场,记录一下一些要点。
网上关于配置Nginx对php支持的博客,Nginx大都使用apt-get安装,但我始终感觉apt-get安装的目录组织,操作起来有点麻烦。而通过源码安装,Nginx所有相关的东西,都在/usr/local/nginx
目录下,操作显得较为方便。
nginx.conf中配置了root路径,即默认Nginx加载html文件的路径,默认是nginx/html
,这一点,影响到下面对php支持的配置项,很多直接复制粘贴别人的配置,不顾自己的环境,肯定成功不了。
sudo apt-get install php5-fpm php5-cli php5-cgi mysql-server php5-mysql
通过spawn-fcgi,管理FastCgi,它原属于lighttpd,但 9.10 后,spawn-fcgi被分离出来单独成包:
sudo apt-get install spawn-fcgi
配置nginx.conf,相当于nginx收到关于php请求时,将其转发给后端的php解释器进行处理,cgi的一种典型实现。fastcgi_param 为默认的Web目录,前面默认设置为html,与配置文件中的root设置要对应。最后一个include的文件,位于conf/路径下
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
首先重启nginx,然后启动fastcgi php。当出现error时,可能是nginx转发了请求,但是后端php解释器没有启动,查看一下9000端口的情况netstat –ant | grep 9000
。具体可以查看error.log中的相应记录。
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi
首先从http://sourceforge.net/projects/phpmyadmin/
下载phpmyadmin的最新版本,解压后,拷贝到/usr/local/nginx/html/
中,权限设置成755,则可以通过ip/phpmyadmin
进行访问图形化管理界面。