最近在虚拟机上装了个CentOS6.5,由于是以最小化的方式装的,装LNMP环境时缺少好多东西,特别是安装PHP时缺少很多东西,过程是非常的曲折。
我装的版本分别是:Nginx 1.6.0,Mysql 5.6.19,PHP 5.5.14。前两个用Yumj装起来还比较顺利,装PHP的时候我采用自己编译的方式安装,以php-fpm的方式与Nginx配合,装完后写了个php文件,一访问提示File not found,查看Nginx日志,有错误信息:
[error] "1842#0" *7 connect() failed (111: Connection refused)
用命令netstat -ano | grep 9000查了一下,发现9000端口没开,应该是php-fpm没有启动。马上去启动:
#/usr/local/sbin/php-fpm
启动php-fpm后还是提示File not found。再查看Nginx的错误日志,这回的错误信息是:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
折腾了半天,发现Nginx默认的配置文件是站点的root写在了各个location配置块里了,之前只改了根目录的配置,没注意php配置这块里也有一个,将root这个参数移到server块下,将配置PHP的那块location改成:
- location ~ .php$ {
- try_files $uri =404;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
其中try_files $uri =404;这个配置项是为了让Nginx判断文件不存在就直接返回404,而不用再发给php-fpm去处理。
重启Nginx:
#service nginx restart