Настройка nginx и супервизора в Ubuntu

Я использую установку django-gunicorn-nginx, следуя этому руководству http://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/ До установки nginx все работает. Затем я установил супервизор, настроил его, а затем перезагрузил свой сервер и проверил, он показывает 502 плохой шлюз. Я использую Ubuntu 12.04 LTS.

/etc/supervisor/conf.d/qlimp.conf

[program: qlimp]
directory = /home/nirmal/project/qlimp/qlimp.sh
user = nirmal
command = /home/nirmal/project/qlimp/qlimp.sh
stdout_logfile = /path/to/supervisor/log/file/logfile.log
stderr_logfile = /path/to/supervisor/log/file/error-logfile.log

Затем я перезапустил супервизора и запускаю эту команду $ supervisorctl start qlimp, и я получаю эту ошибку

unix:///var/run/supervisor.sock no such file

Есть ли проблема в настройке моего супервизора?

Спасибо!


person rnk    schedule 23.05.2012    source источник


Ответы (11)


Отсутствие файла сокета, вероятно, означает, что супервизор не запущен. Причина, по которой он не работает, может заключаться в том, что в вашем файле qlimp.conf есть какая-то ошибка. Если вы сделаете

sudo service supervisor start

вы можете увидеть, так это или нет. Если супервизор уже запущен, он скажет. И если он ловит ошибку, он обычно дает вам более полезное сообщение об ошибке, чем supervisorctl.

person kdazzle    schedule 17.09.2013
comment
У меня такая же ошибка. Ваша команда исправила это. Как отладить ошибку в файле qlimp.conf? - person Pratik Poddar; 22.03.2014
comment
Когда я запускаю это, я получаю IOError: [Errno 13] Permission denied: '/var/log/supervisor/supervisord.log' - person nu everest; 26.05.2014
comment
Оказывается, у меня был пользователь без полномочий root, указанный в [supervisord] - person nu everest; 26.05.2014
comment
привет @nueverest, как ты разрешаешь отказ в разрешении? - person sulaiman sudirman; 16.05.2015
comment
@sulaiman убедитесь, что вы просматриваете свой файл conf в [supervisord], указанный там пользователь должен иметь root-доступ. - person nu everest; 18.05.2015

Я столкнулся с той же проблемой, что и вы, и после нескольких раз пришло решение:

  1. Сначала удалите версию супервизора apt-get:

      sudo apt-get remove supervisor
    
  2. Убейте процесс супервизора бэкэнда:

     sudo ps -ef | grep supervisor
    
  3. Затем получите самую новую версию (версия apt-get была 3.0a8):

    sudo easy_install(pip install) supervisor==3.0b2 
    
  4. Повторите конфигурационный файл (право доступа root):

    echo_supervisord_conf > /etc/supervisord.conf
    

5. Запустите супервизор:

   sudo supervisord

6.Введите supervisorctl:

   sudo supervisorctl

Сделано все что угодно! Повеселись!

person Scen    schedule 29.07.2013
comment
Когда я запускаю sudo echo_supervisord_conf > /etc/supervisord.conf, я получаю Permission Denied - person nu everest; 26.05.2014
comment
@nu everest Так что вместо этого вы должны работать как суперадминистратор. - person Scen; 09.06.2014
comment
Поэтому вы должны работать как суперадминистратор. ЕЩЕ НЕ РАБОТАЕТ, ЕСТЬ ДРУГИЕ ПРЕДЛОЖЕНИЯ? @Сцена - person Ferid Š. Sejdović; 31.05.2021

Попробуй это

cd /etc/supervisor
sudo supervisord
sudo supervisorctl restart all
person Anil    schedule 06.11.2014
comment
Это сработало для меня, потому что супервизор не установлен как служба на моем сервере. Мне нужно запустить его вручную после перезагрузки с помощью supervisord, прежде чем я смогу использовать supervisorctl. Спасибо, Анил. - person OskarD90; 19.02.2016
comment
У меня сработало, у меня это работает внутри докера, и файл sock выглядит так, как будто он не был создан при запуске, хотя supervisord был в списке ps. sudo supervisord, кажется, пнул его, чтобы создать его, хотя он выдал предупреждающее сообщение о том, что я запускаю его как root - person tristanbailey; 05.03.2016

Вы уверены, что супервизор установлен и работает? Есть ли файл сокета в /var/run/supervisor.sock?

Ошибка указывает на то, что supervisorctl, CLI управления, не может получить доступ к сокету UNIX для связи с supervisord, демоном.

Вы также можете проверить /etc/supervisor/supervisord.conf и посмотреть, совпадают ли значения разделов unix_http_server и supervisorctl.

Обратите внимание, что это проблема уровня Ubuntu, а не проблема с Python, Django или nginx, и поэтому этот вопрос, вероятно, относится к ServerFault.

person Martijn Pieters    schedule 23.05.2012
comment
Нет. В /var/run нет файла supervisor.sock Почему так? - person rnk; 23.05.2012
comment
Если /etc/supervisor/supervisord.conf, раздел unix_http_server имеет запись файла, указывающую на /var/run/supervisor.sock, значит supervisord не запущен или не установлен. Запустите sudo /etc/init.d/supervisor start, чтобы посмотреть, запустится ли он. - person Martijn Pieters; 23.05.2012
comment
Я попытался запустить sudo /etc/init.d/supervisor start и получил ошибку path/to не найден. Затем я изменил на /etc/supervisor/log/ Теперь я получил файл supervisor.sock. Перезагрузил и проверил. Все еще получает 502 неверный шлюз - person rnk; 23.05.2012
comment
Правильно, теперь у вас либо проблема с конфигурацией nginx, либо ваш апстрим не работает. Попробуйте получить прямой доступ к localhost:8001. - person Martijn Pieters; 23.05.2012

В Ubuntu 16+ это, похоже, было вызвано переключением на systemd, этот обходной путь может быть исправлен для новых серверов:

 # Make sure Supervisor comes up after a reboot.
 $ sudo systemctl enable supervisor

 # Bring Supervisor up right now.
 $ sudo systemctl start supervisor

а затем проверьте свой статус iconic.conf [Мой пример] руководителя

$ sudo supervisorctl status iconic

введите описание изображения здесь

PS: Убедитесь, что у gunicorn не должно быть проблем во время работы.

person Dinesh Sunny    schedule 16.10.2016

Ошибка может быть связана с тем, что у вас нет прав. Возможно, вы можете исправить ошибку таким образом, откройте свой терминал и введите vim /etc/supervisord.conf для редактирования файла, найдите строки

[unix_http_server]
;file=/tmp/supervisor.sock   ; (the path to the socket file)
;chmod=0700                  ; socket file mode (default 0700)

и удалите точку с запятой в начале строки ;file=/tmp/supervisor.sock и ;chmod=0700, перезапустите ваш супервизор. Я предлагаю вам сделать это.

person Karl Doenitz    schedule 12.02.2015

Убедитесь, что в /etc/supervisor.conf существуют следующие два раздела

[unix_http_server]
file=/tmp/supervisor.sock ; path to your socket file

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
person Yuvaraj Loganathan    schedule 02.07.2014
comment
какой путь к файлу сокета? - person avi; 05.07.2014

Вы можете сделать что-то вроде этого: -

sudo touch /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock
sudo service supervisor restart

Это определенно работает, попробуйте это.

person Manish Silawat    schedule 01.04.2017

В моем случае Supervisor не работал. Чтобы определить проблему, я запускаю:

sudo systemctl status supervisor.service

Проблема заключалась в том, что мои журналы указывали на несуществующий каталог, поэтому мне просто пришлось его создать.

Я надеюсь, что это помогает :)

person Alan Wagner    schedule 03.04.2017
comment
Спасибо! Это решило это для меня. На самом деле, supervisor.conf был в порядке, но служебный файл в папке conf.d указывал на несуществующий каталог. - person Daniel; 14.02.2019

touch /var/run/supervisor.sock
sudo supervisord -c /etc/supervisor/supervisord.conf

и после супервизора перезапустите все

если вы хотите слушать порт супервизора

ps -ef | grep supervisord

если вы хотите убить процесс

kill -s SIGTERM 2503  
person ercvs    schedule 19.06.2018

Создайте файл conf и ниже добавьте строки

Помните, что для работы с Nginx необходимо отключить автозапуск при загрузке системы, который вы активировали при установке Nginx.

https://askubuntu.com/questions/177041/nginx-disable-autostart

Примечание. Для работы с супервизором все процессы супервизора должны быть в режиме "демон выключен".

[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
autostart=true
autorestart=true
startretries=5
stopasgroup=true
stopsignal=QUIT
numprocs=1
startsecs=0
process_name=WebServer(Nginx)
stderr_logfile=/var/log/nginx/error.log
stderr_logfile_maxbytes=10MB
stdout_logfile=/var/log/nginx/access.log
stdout_logfile_maxbytes=10MB

sudo supervisorctl reread && sudo supervisorctl update

введите здесь описание изображения

person Pratik Panchal    schedule 07.08.2019