其实就是php-fpm.conf中的监听有问题,一键安装包的listen默认为:/tmp/php-cgi.sock
但是我们的项目中的fastcgi_pass 127.0.0.1:9000;vhost的文件有这个定义两个是不一样的,所以引发了502错误
事实上只需要把两个改为一致就好了,我这边是都改为了127.0.0.1:9000,不过推荐用原来的/tmp/php-cgi.sock,不然会导致通过lnmp一键安装的phpmyadmin不能使用
以下为扩充内容:
启动php-fpm
/usr/local/php/sbin/php-fpm # /usr/local/php/为php-fpm的安装地址
/usr/local/php/sbin/php-fpm -R # 如果报错显示不能用root用户启动,则可以考虑使用 -R命令
netstat -lnt | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
或者使用如下命令,查看是否9000端口被php-fpm占用:
netstat -tunpl | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2124/php-fpm
php-fpm 关闭:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
或者:pkill php-fpm
启动过程遇到了:
nginx中unix:/tmp/php-cgi.sock错误解决办法
出现这种问题一般是因为/tmp/php-cgi.sock功能是负责流量最主要的特征就是unix socket比tcp快,下面来解决办法。
首先建立/tmp/php-cgi.sock文件,然后将之改所有者改为www-data:
#我直接改成nginx的用户,好像必须要属于nginx的用户组才能正常使用未验证
sudo chown www-data /tmp/php-cgi.sock
到nginx.conf,如果你用的是虚拟机,那么就到相应的vhost里面进行配置里改相关文件:
修改:
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/tmp/php-cgi.sock; #这句可能是尤为关键的一句话因为它一开始启动报错的时候是说这个/tmp/php-cgi.sock已经启动,所以并不是所谓的127.0.0.1:9000这个端口给它用
找到init.d/php-cgi(参考文章开关提到的文章):
修改:
#DAEMON_OPTS=”-a 127.0.0.1 -p 9000 -C 1 -u www-data -f /usr/bin/php-cgi”
DAEMON_OPTS=”-a 127.0.0.1 -s /tmp/php-cgi.sock -C 1 -u www-data -f /usr/bin/php-cgi”
然后分别重启nginx 和 spawn-fcgi即可,你的nginx效率就更高啦!:-)