赞
踩
如果upstream是fastcgi://127.0.0.1:9000,造成这个问题的原因大致有四个
1.php-fpm没有安装
centos安装php php-fpm 以及 配置nginx
2.php-fpm没有运行
可查看端口是否存在,默认端口是9000
netstat -ant | grep 9000
/usr/local/php/sbin/php-fpm
3.php-fpm队列满了
php-fpm.conf配置文件pm.max_children修改大一点,重启php-fpm并观察日志情况
4、php5.3之后的版本,php-fpm.conf里的listen的默认配置是127.0.0.1:9000,就不会生成php-fpm.sock,因此如果需要Nginx里的配置有链接tmp/php-fpm.sock的话,需要将listen的地址配置成和nginx的配置文件一致,同时保证这个路径已经存在,这样在启动./php-fpm的时候,会在对应路径上自动生成php-fpm.sock,例如:
让PHP-FPM使用Unix套接字
默认情况下监听端口 9000 。 另外,也可以使PHP-FPM使用Unix套接字,这避免了TCP的开销。要做到这一点,打开 /etc/php-fpm.d/www.conf…
vi /etc/php-fpm.d/www.conf
… 修改后如下:
[...] ;listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php5-fpm.sock [...]
然后重新加载 PHP-FPM:
systemctl restart php-fpm.service
接下来通过你的nginx的配置和所有的虚拟主机和改线 fastcgi_pass 127.0.0.1:9000; to fastcgi_pass unix:/tmp/php5-fpm.sock;,像这样:
vi /etc/nginx/conf.d/default.conf
[...] location ~ .php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } [...]
最后重新加载 nginx:
systemctl restart nginx.service
这样配置好后,就会在/var/run/php-fpm/目录下自动生成一个php5-fpm.sock文件,然后一切OK。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。