Запуск службы uWSGI завершается неудачно

У меня проблема, которая сводит меня с ума. Я пытаюсь создать задание Upstart Ubuntu 15.04, которое запускает сервер uWSGI (версия uWSGI 2.0.7-debian) с приложением Django.

Я настроил службу следующим образом и пытаюсь запустить задание, введя команду $ sudo service uwsgi start. В файлах журнала нет вывода, файл сокета не создается и нет ошибки.

# file: /etc/init/uwsgi.conf

description "uWSGI server"

start on runlevel [2345]
stop on runlevel [!2345]

exec /usr/bin/uwsgi --ini /srv/configs/uwsgi.ini

service uwsgi status говорит

● uwsgi.service - LSB: Start/stop uWSGI server instance(s)
Loaded: loaded (/etc/init.d/uwsgi)
Active: active (exited) since Tue 2015-05-05 09:40:08 EEST; 1s ago
  Docs: man:systemd-sysv-generator(8)
Process: 21405 ExecStop=/etc/init.d/uwsgi stop (code=exited, status=0/SUCCESS)
Process: 21460 ExecStart=/etc/init.d/uwsgi start (code=exited, status=0/SUCCESS)

May 05 09:40:08 web-2 systemd[1]: Starting LSB: Start/stop uWSGI server instance(s)...
May 05 09:40:08 web-2 uwsgi[21460]: * Starting app server(s) uwsgi
May 05 09:40:08 web-2 uwsgi[21460]: ...done.
May 05 09:40:08 web-2 systemd[1]: Started LSB: Start/stop uWSGI server instance(s).

Приложение uWSGI настроено как

[uwsgi]

uid = www-data
gid = www-data
socket = /srv/sockets/uwsgi.sock
chmod-socket = 666
master = true
processes = 4
enable-threads = true
plugins = python
chdir = /srv/sites/current
module = wsgi:application
virtualenv = /srv/environments/current
logto = /srv/logs/uwsgi.log
logfile-chown = true
touch-reload = /srv/sites/current/wsgi.py

Служба запускается нормально, и все работает нормально, если служба запускается напрямую, например. введя команду: sudo -u www-data /usr/bin/uwsgi --ini /srv/configs/uwsgi.ini

Для каталогов сокетов и файлов журналов я установил самые мягкие разрешения.

Итак, я в растерянности. Что делать дальше?


person samuke    schedule 05.05.2015    source источник
comment
Судя по тому, что я видел о systemd в Ubuntu 15.04, он может не вести журнал ни в какие файлы /var/log по умолчанию. И он может хранить файлы конфигурации «модуля» где-то помимо /etc/init: я вижу /lib/systemd/system в документации, и ваш вывод состояния показывает /etc/init.d. Так что, возможно, он использует другой файл конфигурации службы, который помещает файл сокета в место, на которое вы не смотрите. Я говорю это, потому что ваш вывод состояния показывает, что systemd думает uwsgi уже запущен. Вы можете искать процесс с ps auxww|wsgi.   -  person nmgeek    schedule 05.05.2015
comment
ps aux | grep wsgi показывает только строку grep, поэтому процессы не запущены. Кроме того, я попытался создать файл uwsgi.service в /lib/systemd/system с помощью этих инструкций, uwsgi-docs.readthedocs.org/en/latest/Systemd.html, но sudo systemctl status uwsgi.service сообщает о том же, что и service uwsgi status.   -  person samuke    schedule 05.05.2015
comment
Я рад, что оказал некоторую помощь. Должны ли вы опубликовать свой собственный ответ на вопрос?   -  person nmgeek    schedule 05.05.2015
comment
Увидев ваш комментарий, я решил проблему за 15 минут. Я бы сказал, что ваша помощь была критической.   -  person samuke    schedule 05.05.2015


Ответы (2)


Благодаря комментарию nmgeeks я начал искать другие места, где настраивается uWSGI.

Пытаясь переместить все, что связано с нашим собственным приложением в /srv, я удалил каталог /run/uwsgi, где uWSGI пытается создать файл PID.

Вы можете найти ссылку на /usr/share/uwsgi/conf/default.ini.

Жаль, что uWSGI не выдает никаких ошибок в этой ситуации, что расстроило меня на целый день.

person samuke    schedule 05.05.2015

Я просто хочу добавить некоторые дополнительные детали. В моем случае я ничего не удалял, но по каким-то причинам systemd не смог создать каталог /run/uwsgi. Итак, я сделал echo "/run/uwsgi 0755 www-data www-data -" > /etc/tmpfiles.d/uwsgi.conf. После этого я перезапустил свою виртуальную машину (я не нашел способа применить эти изменения без перезагрузки), и uwsgi заработал!

Да, очень жаль, что uWSGI не выдает в этой ситуации никакой ошибки.

person Jimilian    schedule 08.05.2016