Вопрос или проблема
Прежде чем начать, я хотел бы сказать, что это мой первый опыт работы с VPS
, у меня есть минимальный сервер Ubuntu 18.04 64bit.
Для всего, что я пробовал до сих пор, я не пытался использовать сложные приложения. Просто обычный html файл с сообщением
Hello
и чистая установка WordPress.
Для начала я устанавливаю Vesta Panel
, потому что мне легче контролировать некоторые базовые задачи и настройки. Для установки этой панели я использую nginx + php-ftpm
. После установки WordPress с этой конфигурацией я получаю ошибку 500 с следующим сообщением:
2020/06/23 23:09:09 [error] 12335#12335: *11 connect() failed (111: Connection refused) while connecting to upstream, client: x.x.x.x, server: example.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9001", host: "example.com"
Эта ошибка появляется только когда я пытаюсь получить доступ к главной странице WordPress или к любому файлу с названием index.php
, если это файл index.html
, он загружается нормально.
После этого я восстановил VPS
и установил Vesta Panel
с использованием nginx + apache
. С этой конфигурацией WordPress работает так, как ожидается. Когда я захожу на мой домен example.com
, шаги для создания сайта WordPress появляются как положено.
С обеими конфигурациями, папка, содержащая все файлы сайтов, находится в /home/admin/web/{domain.com}/public_html
.
Изменение: как было запрошено в комментариях, я добавляю больше информации к вопросу.
systemctl status php-fpm.service
возвращает:
php-fpm.service - LSB: starts php7.2-fpm
Loaded: loaded (/etc/init.d/php-fpm; generated)
Active: active (exited) since Wed 2020-06-24 01:44:40 UTC; 10h ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 614)
CGroup: /system.slice/php-fpm.service
Jun 24 01:44:40 agdevision.com.br systemd[1]: Starting LSB: starts php7.2-fpm...
Jun 24 01:44:40 agdevision.com.br systemd[1]: Started LSB: starts php7.2-fpm.
sudo journalctl -u php-fpm.service
возвращает:
-- Logs begin at Fri 2019-03-08 08:44:31 UTC, end at Wed 2020-06-24 12:08:35 UTC. --
Jun 24 01:44:40 agdevision.com.br systemd[1]: Starting LSB: starts php7.2-fpm...
Jun 24 01:44:40 agdevision.com.br systemd[1]: Started LSB: starts php7.2-fpm.
Служба php-fpm
работает, но не прослушивает порт 9001. Пожалуйста, проверьте вашу конфигурацию FPM (обычно в /etc/php/7.2/fpm/pool.d/www.conf
на системах Debian/Ubuntu). Важный параметр следующий:
listen = 127.0.0.1:9001
Не забудьте перезапустить службу FPM, выполнив sudo systemctl restart php-fpm.service
после редактирования файла.
.
Ответ или решение
Ошибка 500 на странице index.php при использовании nginx и php-fpm является распространенной проблемой, с которой сталкиваются многие администраторы серверов, особенно если они новички в управлении виртуальными частными серверами (VPS). Давайте разберемся, почему это может происходить и как правильно настроить сервер для корректной работы WordPress с этой конфигурацией.
Теория
Ошибка 500 указывает на то, что сервер столкнулся с внутренней ошибкой и не может выполнить запрос. В контексте конфигурации nginx + php-fpm, это часто связано с неправильной настройкой FastCGI проксирования, особенно если соединение между nginx и php-fpm не установлено должным образом.
Наиболее вероятная причина данной ошибки в следующем:
- Проблема с проксированием FastCGI: Сообщение об ошибке 111: Connection refused указывает на то, что nginx не может подключиться к php-fpm по указанному в конфигурации адресу и порту.
- Неправильная конфигурация php-fpm: Если php-fpm не настроен на прослушивание правильного порта или сокета, nginx не сможет отправить запросы для выполнения PHP-скриптов.
Пример
В вашем случае, сервис php-fpm активен, но он, вероятно, не настроен на прослушивание порта 9001, который вы указали в конфигурации nginx. Конфигурация, относящаяся к FastCGI и соединению nginx с php-fpm, может выглядеть следующим образом в файле конфигурации nginx для вашего сайта (обычно в /etc/nginx/sites-available/default
или аналогичном):
server {
listen 80;
server_name example.com;
root /home/admin/web/{domain.com}/public_html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass 127.0.0.1:9001; # Проверьте, что это соответствует настройкам php-fpm
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Что касается php-fpm, убедитесь, что конфигурационный файл /etc/php/7.2/fpm/pool.d/www.conf
(или аналогичный) содержит правильную строку:
listen = 127.0.0.1:9001
Применение
Шаги по решению проблемы:
-
Проверьте конфигурацию php-fpm: Убедитесь, что в конфигурационном файле pool.d/www.conf указан правильный адрес и порт.
-
Перезапустите сервисы: После внесения изменений перезапустите php-fpm с помощью команды:
sudo systemctl restart php-fpm.service
-
Проверьте конфигурацию nginx: Убедитесь, что в блоке server вашего сайта указан тот же адрес и порт для fastcgi_pass, что и в конфигурации php-fpm.
-
Перезапустите nginx: После этого перезапустите сервис nginx, чтобы применить изменения:
sudo systemctl restart nginx
-
Проверка журналов: Если проблема не исчезает, проверьте журналы ошибок nginx и php-fpm для получения дополнительных подсказок о природе проблемы. Можно использовать следующие команды:
sudo tail -f /var/log/nginx/error.log sudo tail -f /var/log/php7.2-fpm.log
-
Тестовая страница PHP: Создайте простой PHP-файл (
info.php
) в корневой директории веб-сайта с содержимым<?php phpinfo(); ?>
и попробуйте открыть его в браузере. Это позволит убедиться, что PHP выполняется правильно.
После выполнения данных рекомендаций, WordPress на вашем сервере должен начать корректно загружаться, избавив вас от ошибки 500.