1

Я установил 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 действительно запускается правильно. Это похоже на то, как если бы родительский процесс не получил сообщение "Я запущен" от своего дочернего процесса (-ов), правильно являющегося проблемой. Когда он работает (systemd ожидает его запуска), я могу успешно свернуть его так:

$ 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 ответ1

3

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

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

daemon off;

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .