Ошибка 500 на index.php с nginx + php-fpm

Вопрос или проблема

Прежде чем начать, я хотел бы сказать, что это мой первый опыт работы с 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

Применение

Шаги по решению проблемы:

  1. Проверьте конфигурацию php-fpm: Убедитесь, что в конфигурационном файле pool.d/www.conf указан правильный адрес и порт.

  2. Перезапустите сервисы: После внесения изменений перезапустите php-fpm с помощью команды:

    sudo systemctl restart php-fpm.service
  3. Проверьте конфигурацию nginx: Убедитесь, что в блоке server вашего сайта указан тот же адрес и порт для fastcgi_pass, что и в конфигурации php-fpm.

  4. Перезапустите nginx: После этого перезапустите сервис nginx, чтобы применить изменения:

    sudo systemctl restart nginx
  5. Проверка журналов: Если проблема не исчезает, проверьте журналы ошибок nginx и php-fpm для получения дополнительных подсказок о природе проблемы. Можно использовать следующие команды:

    sudo tail -f /var/log/nginx/error.log
    sudo tail -f /var/log/php7.2-fpm.log
  6. Тестовая страница PHP: Создайте простой PHP-файл (info.php) в корневой директории веб-сайта с содержимым <?php phpinfo(); ?> и попробуйте открыть его в браузере. Это позволит убедиться, что PHP выполняется правильно.

После выполнения данных рекомендаций, WordPress на вашем сервере должен начать корректно загружаться, избавив вас от ошибки 500.

Оцените материал
Добавить комментарий

Капча загружается...