今天想在自己的服务器上安装一个开源的php论坛平台,论坛平台上传到服务器上,绑定好三级域名之后发现服务器无法解析php文件但是可以解析html,经过google发现原来nginx默认不能解析php,要进行设置才可以。
下面是我在设置nginx解析php的过程和遇到的一些问题。
- 先安装php
sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql
- 安装FastCgi
sudo apt-get install spawn-fcgi
3.配置nginx修改index的一行修改为:
index index.php index.html index.htm;
4.配置nginx去掉下面部分的注释用于支持 php 脚本
location ~ \.php$ {
include /etc/nginx/fastcgi_params; #需放在第一行,否则会出错
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
}
5.重启nginx
service nginx restart
6.启动fastcgi php
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi
为了让php-cgi开机自启动: Ubuntu开机之后会执行/etc/rc.local文件中的脚本 所以我们可以直接在/etc/rc.local中添加启动脚本。 spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi 添加到语句:exit 0 前面才行
7.创建、测试phpinfo
sudo vi /var/www/nginx-default/info.php
<?php phpinfo(); ?>
经过上面的几步后应该就可以解析php了,但是有的时候还是会出现错误。
502 Bad Gateway
首先要使用指令ps aux | grep php
来检查一下php-fpm是否在运行 ,如果在输出的进程中没有php-fpm的字样,你要重新安装php-fpm.如果 有看到php-fpm的字样,那就可以忽略这一步了。
sudo apt-get remove php5 php5-cgi php5-fpm
sudo apt-get install php5 php5-cgi php5-fpm
然后打开配置文件/etc/php5/fpm/pool.d/www.conf
找到listen
修改成和/etc/nginx/sites-available/default
中的fastcgi_pass
一样就可以了, 我是修改成下面这个样子的
listen = 127.0.0.1:9000
File not found
如果经过上面的操作又出现了File not found
这个错误的话,一般都是服务器配置错误了。我的nginx/sites-available/default
配置文件是配置成这样的,我服务器根目录在/var/www/bbs
文件夹下.
server {
listen 80;
root /var/www/bbs;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
server_name bbs.linghun.me;
location ~ \.php$ {
include /etc/nginx/fastcgi_params; #需放在第一行,否则会出错
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
至此就可以解析php了