人工手动安装好了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;
}
}