Re: Не запустился nginx при старте OpnenVZ контейнера

Gena Makhomed gmm на csdoc.com
Сб Дек 26 03:41:53 UTC 2015


On 25.12.2015 3:03, Gena Makhomed wrote:

> Проблема в том, что nginx запускается еще до того, как поднята сеть:
>
> Dec 24 18:55:15 hroniky-com systemd: Starting nginx - high performance
> web server...
> Dec 24 18:55:18 hroniky-com systemd: Starting System Logging Service...
> Dec 24 18:55:18 hroniky-com systemd: Starting LSB: Bring up/down
> networking...
> Dec 24 18:55:18 hroniky-com nginx: nginx: the configuration file
> /etc/nginx/nginx.conf syntax is ok
> Dec 24 18:55:18 hroniky-com nginx: nginx: [emerg] bind() to
> 172.23.23.161:80 failed (99: Cannot assign requested address)
> Dec 24 18:55:18 hroniky-com nginx: nginx: configuration file
> /etc/nginx/nginx.conf test failed
>
> Похоже, что запускается именно
> ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
>
> А вот до ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
> По условию After=network.target remote-fs.target nss-lookup.target
> дело просто не доходит, поскольку тест конфига завершился с ошибкой.
>
> Имхо было бы правильным не считать
> nginx: [emerg] bind() to 172.23.23.161:80 failed (99: Cannot assign
> requested address)
>
> Ошибкой тестирования конфига:
> nginx: configuration file /etc/nginx/nginx.conf test failed
>
> Потому что при запуске nginx через systemd конфиг тестируется тогда,
> когда еще сеть не поднята, согласно условий unit-файла nginx.service

Точнее, может быть добавить параметр командной строки -w:

  -q            : suppress non-error messages during configuration testing
  -w            : treat all errors as warnings

-w будет всегда завершать выполнение nginx -t с нулевым кодом возврата.

и только для systemd использовать именно этот новый параметр:

ExecStartPre=/usr/sbin/nginx -t -w -c /etc/nginx/nginx.conf

?

Или как лучше можно решить эту проблему с nginx/systemd race condition?

-- 
Best regards,
  Gena



Подробная информация о списке рассылки nginx-ru