Я только что запустил новый облачный сервер 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;
}
}
}
я создал index.php
в /srv/www
и начал nginx
и php-fpm
:
/etc/init.d/nginx start
/etc/init.d/php5-fpm start
Я получаю ошибку 502 Bad Gateway. Я делаю что-то неправильно?
Поскольку я не могу добавить комментарий, я отправлю его как ответ ...
Проверьте /etc/php5/fpm/pool.d/www.conf
(или находящийся там файл), если он настроен на работу через сокет TCP или UNIX. Также проверьте, действительно ли работает PHP. И загляните в файлы журнала /var/log/php5-fpm.log
или /var/log/php5-fpm/*
и /var/log/nginx/*
(зависит от настроек).
Вы должны найти здесь причину ошибки.
В моем случае решения были:
1- Чтобы изменить список, например @David:
sudo nano /etc/php/7.0/fpm/pool.d/www.conf
О поиске файлов listen =
, прокомментируйте ... sock и добавьте 127.0.0.1:9000
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
2- Изменение конфигурации сайта Nginx (например, /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
4- Увеличивайте таймаут /etc/nginx/nginx.conf:
keepalive_timeout 65000;
После перезапуска php-fpm и nginx:
sudo service php7.0-fpm restart
sudo service nginx restart
Я рекомендую перед перезапуском nginx проверить, все ли в порядке:
sudo service nginx configtest
Ошибка плохого шлюза означает, что процесс php отвечает с ошибкой. Можете ли вы проверить журнал ошибок PHP? Также попробуйте разместить файл test.php с <?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
чтобы убедиться, что демон php-fpm слушает?