nginx истекает время ожидания при запуске

nginx истекает время ожидания при запуске

Я установил, nginxиспользуя эту sources.list.dзапись:

deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

Версия nginx — 1.12.2-1~xenial. Сервер работает под управлением Ubuntu 16.04 LTS с ядром 4.4.0-36-generic.

Моя проблема в том, что nginxдемон не запускается:

$ sudo systemctl start nginx
Job for nginx.service failed because a timeout was exceeded. See "systemctl status nginx.service" and "journalctl -xe" for details.

К сожалению, эти журналы не содержат много информации:

$ sudo journalctl -xe
Feb 05 10:43:50 SERVERNAME nginx[17035]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Feb 05 10:43:50 SERVERNAME nginx[17035]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Feb 05 10:45:21 SERVERNAME systemd[1]: nginx.service: Start operation timed out. Terminating.
Feb 05 10:45:21 SERVERNAME systemd[1]: Failed to start nginx - high performance web server.
-- Subject: Unit nginx.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit nginx.service has failed.
--
-- The result is failed.
Feb 05 10:45:21 SERVERNAME systemd[1]: nginx.service: Unit entered failed state.
Feb 05 10:45:21 SERVERNAME systemd[1]: nginx.service: Failed with result 'timeout'.

Насколько я могу судить,nginx действительно запускается правильно. Как будто родительский процесс не получает сообщение "I am started" от своих дочерних процессов, что и является проблемой. Когда он запущен (systemd ждет его запуска), я могу успешно выполнить curl следующим образом:

$ curl http://localhost:8000
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.12.2</center>
</body>
</html>

Я чувствую себя потерянным в этом, кроме, возможно, тестирования другой nginxверсии или чего-то еще. Есть идеи? Я мог бы перезагрузить сервер, но это кажется глупым на сервере Linux.

Обновление 9:56 UTC: Проверено с 1.13.8-1~xenial, та же проблема.

решение1

В конце концов я нашел проблему, это была глупая проблема...

Я начал свою nginxконфигурацию, скопировав настройки из контейнера Docker, в nginxконфигурации которого был следующий параметр:

daemon off;

Это было как раз в сценарии Docker (где процесс nginxвыполнялся с помощью runit, т. е. им не systemdуправлял init в стиле -style). Это приводило к тому, что процесс nginxникогда не демонизировался и управление возвращалось systemd -> это воспринималось как «превышено время ожидания из-за неизвестной проблемы» и systemdзавершалось.

Итак, это оказалось простой ошибкой конфигурации. Я хотел разместить ее здесь, так как это может помочь другим, кто тоже совершает эту неуклюжую ошибку. :-)

Полная информация об этом ключевом слове:http://nginx.org/en/docs/ngx_core_module.html#daemon

решение2

Проблемой также может быть индивидуальная настройка локализации pid в nginx.conf:

pid ../logs/nginx.pid;

его необходимо сопоставить с настройкой PIDFile в файле nginx.service (/lib/systemd/system/nginx.service): PIDFile=/var/run/nginx.pid

Здесь этого нет ;]

решение3

Это также может произойти при копировании конфигурации nginx в openresty. У меня была эта строка в конфигурации, и openresty не запускался как служба:

pid /run/nginx.pid;

Связанный контент