人工手动安装好了LNMP环境,但在网站上打开php网页都变成了下载。研究了一下,原来是Nginx还没配置好以支持php。
修改Nginx的配置文件
我的Nginx安装目录是 /usr/local/nginx,切换到该目录:
cd /usr/local/nginx
打开nginx.conf配置文件:
vim conf/nginx.conf
在配置文件里面看到一段被注释掉的话:
#location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}
去掉注释,再根据实际的网站根目录修改一下:
location ~ \.php$ {root /home/html; #这是我的网站根目录fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;include fastcgi_params;}
注意 fastcgi_pass 127.0.0.1:9000; 这一行,我们现在进入php的配置文件里确认php是不是使用这个端口,因为有些版本,如lnmp.org的版本,他们用的是socket。端口不一致将会出现 502 Bad Gateway 错误。
确保和PHP的端口一致
我的PHP安装目录是 /usr/local/php/ ,切换到该目录:
cd /usr/local/php/
再进入配置文件目录:
cd etc/php-fpm.d
vim www.conf
在里面可以看到监听的端口为:
listen = 127.0.0.1:9000
可以看到是一致的。
如果是lnmp.org的版本,他们的是 listen = /tmp/php-cgi.sock 。如果是这样,就要把Nginx配置里面 fastcgi_pass 对应的值改成 unix:/tmp/php-cgi.sock 。
重启一下Nginx,使配置生效:
cd /usr/local/nginx
sbin/./nginx -t #检查配置文件是否正确
sbin/./nginx -s reload #重启
注意路径问题
然后打开网站,出现了新错误,网页显示“File Not Found”。
出现这个错误是因为路径配置错误。打开Nginx的配置文件,修改下面这个路径即可:
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
再次reload Nginx,打开网站的phpinfo()测试文件,成功!
其他注意事项
如果Nginx有配置ssl,记得在配置ssl的代码块里也加入上面那段代码:
server {listen 443 ssl;server_name linxianzhan.cn;ssl_certificate /usr/local/nginx/cert/server.crt;ssl_certificate_key /usr/local/nginx/cert/server.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root /home/html;index index.html index.htm;}location ~ \.php$ {root /home/html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}