nginx не запускается при загрузке с systemd в Ubuntu 15. 04 и 15.10

nginx не запускается при загрузке, но запускается нормально вручную. В журналах написано что-то вроде

nginx: [emerg] host not found in upstream "{some hostname}" in /etc/nginx/conf.d/some_site.conf
nginx: configuration file /etc/nginx/nginx.conf test failed

Failed to start A high performance web server and a reverse proxy server.
nginx.service: Unit entered failed state.
nginx.service: Failed with result 'exit-code'.

Похоже, что при загрузке DNS еще не готов, и nginx пытается найти имя хоста, которое у меня есть в качестве обратного прокси.

5
задан 17 January 2016 в 00:17
1 ответ

После некоторых исследований выяснилось, что systemd использует файл ниже для запуска nginx

/lib/systemd/system/nginx.service

Файл в Ubuntu 15.04, Ubuntu 15.10 и даже на самом сайте nginx говорят, что нужно использовать строку After, как показано ниже.

After=network.target

Это заставляет человека думать, что сеть должна быть готова к работе. Однако я нашел ссылку http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ , в которой говорится, что

network.target имеет очень мало смысла во время запуска. Это только указывает на то, что стек управления сетью активирован после того, как он был достигнут.

Далее ссылка говорит, что

network-online.target - это цель, которая активно ожидает, пока новая структура не будет "запущена", где определение "up" определяется программным обеспечением для управления сетью.

Итак, я изменил параметр "После использования", который вместо

After=network-online.target

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

8
ответ дан 3 December 2019 в 01:17

Теги

Похожие вопросы