Я столкнулся с ошибкой при попытке остановить NGINX
используя supervisord
.Supervisord - NGINX stop OSError
Чтобы начать NGINX
без ошибок из supervisord
я должен был предварять sudo
команде Nginx в supervisord.conf
:
[supervisord]
[program:nginx]
command=sudo nginx -c %(ENV_PWD)s/configs/nginx.conf
Когда я запускаю это:
$ supervisord -n
2017-02-09 12:26:06,371 INFO RPC interface 'supervisor' initialized
2017-02-09 12:26:06,372 INFO RPC interface 'supervisor' initialized
2017-02-09 12:26:06,372 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2017-02-09 12:26:06,373 INFO supervisord started with pid 22152
2017-02-09 12:26:07,379 INFO spawned: 'nginx' with pid 22155
2017-02-09 12:26:08,384 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
^C# SIGINT: Should stop all processes
2017-02-09 13:59:08,550 WARN received SIGINT indicating exit request
2017-02-09 13:59:08,551 CRIT unknown problem killing nginx (22155):Traceback (most recent call last):
File "/Users/ocervell/.virtualenvs/ndc-v3.3/lib/python2.7/site-packages/supervisor/process.py", line 432, in kill
options.kill(pid, sig)
File "/Users/ocervell/.virtualenvs/ndc-v3.3/lib/python2.7/site-packages/supervisor/options.py", line 1239, in kill
os.kill(pid, signal)
OSError: [Errno 1] Operation not permitted
же при использовании supervisorctl
, чтобы остановить процесс :
$ supervisorctl stop nginx
FAILED: unknown problem killing nginx (22321):Traceback (most recent call last):
File "/Users/ocervell/.virtualenvs/ndc-v3.3/lib/python2.7/site-packages/supervisor/process.py", line 432, in kill
options.kill(pid, sig)
File "/Users/ocervell/.virtualenvs/ndc-v3.3/lib/python2.7/site-packages/supervisor/options.py", line 1239, in kill
os.kill(pid, signal)
OSError: [Errno 1] Operation not permitted
Есть ли обходной путь для этого?
Вопрос в том, почему вы хотите начать nginx с надзором? Он демонизирует, что означает, что он выходит, и супервизор будет обнаруживать это как отказ (это не так). Его нужно запускать с помощью sudo, поскольку он связывается с низкими номерами портов (80 и 443). Пересмотрите ваше решение контролировать этого демона. Чтобы заставить nginx работать так, чтобы супервизор мог выполнять свою работу, вы должны сказать, что это не для демонализации. [Обратитесь к этому, из nginx docs] (http://nginx.org/en/docs/faq/daemon_master_process_off.html). –
Запуск nginx работает, у меня есть «daemon off» в конфигурации nginx. Проблема заключается в том, как убить его с помощью супервизора. Причина, по которой я хочу запускать/останавливать nginx с супервизором, заключается в том, что мне нужен переключатель включения/выключения для всех процессов, которые я запускаю (веб-серверы, redis, rabbitmq и т. Д.), Включая nginx. –
Просто пытаясь нанести удар в темноте здесь - 'sudo supervisorctl stop nginx', вы пробовали это еще? –