我刚创build一个新的Rackspace云服务器,并运行以下内容:
apt-get install php5 nginx php-fpm
当我导航到IP地址时,我看到默认的Nginx消息。 然后我复制我的/etc/nginx/sites-available/default文件从另一个工作设置我有:
server { listen 80; server_name localhost; root /srv/www; index index.php; location / { try_files $uri $uri/ /controllers$uri.php; location ~ \.php$ { try_files $uri /index.php; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } } }
我在/srv/www创build了index.php ,并启动了nginx和php-fpm :
/etc/init.d/nginx start /etc/init.d/php5-fpm start
我得到一个502错误的网关错误。 难道我做错了什么?
由于我无法添加评论,因此我会将其作为答案发布。
如果它设置为在TCP或UNIX套接字上运行,请检查/etc/php5/fpm/pool.d/www.conf (或其中的文件)。 另外检查PHP是否真的在运行。 并查看日志文件/var/log/php5-fpm.log或/var/log/php5-fpm/*和/var/log/nginx/* (取决于设置)。
你应该find错误的原因。
错误的网关错误意味着php进程正在响应一个错误。 你可以检查你的PHP错误日志? 也可以尝试使用<?php phpinfo(); ?>放置一个文件test.php <?php phpinfo(); ?> <?php phpinfo(); ?> @ / srv / www /,然后尝试直接从你的服务器的命令行ala命令:
curl http://127.0.0.1:9000/test.php;
你有没有检查明显的东西,如你有一个文件@ /srv/www/index.php? 你运行ps aux和grepped的nginx和PHP,以确保他们正在运行?
运行如何: netstat -an | grep LISTEN netstat -an | grep LISTEN以确保php-fpm守护进程在监听?
在我的情况下,解决scheme是:
1-像@David一样更改列表器:
sudo nano /etc/php/7.0/fpm/pool.d/www.conf
在文件中searchlisten = ,comment … sock并添加127.0.0.1:9000
;listen = /var/run/php5-fpm.sock listen = 127.0.0.1:9000
2-在Nginx Site的变更(例如/etc/nginx/sites-available/mysite.com)
server { . . . location ~ \.php$ { . . . #fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_pass 127.0.0.1:9000; . . .
3-增加超时和max_children:
/etc/php/7.0/fpm/php.ini => default_socket_timeout = 60000 /etc/php/7.0/fpm/php.ini => pm.max_children = 20 /etc/php/7.0/fpm/pool.d/www.conf => request_terminate_timeout = 60000
在/etc/nginx/nginx.conf中增加4个超时时间:
keepalive_timeout 65000;
重新启动php-fpm和nginx之后:
sudo service php7.0-fpm restart sudo service nginx restart
我推荐在重启nginx之前testing一下是否正常:
sudo service nginx configtest