Почему Upstart не запускает uWSGI?

Я пытаюсь настроить проект Django на моем VPS. Я пытаюсь заставить uWSGI Императора бежать и таким образом порождать вассалов. Я настроил все мои конфигурационные файлы, как предлагалось многими сайтами, включая документацию uWSGI. Тем не менее, когда я запускаю команду файла

 paul@example:/$ sudo service uwsgi start 
Я получаю следующее:

 начало: Неизвестная работа: uwsgi 

Я подумал, что это потому, что Upstart не смог распознать файл uwsgi.conf http://uwsgi-docs.readthedocs.org/en/latest/Upstart.html меня есть в / etc / init /. Но после обзора я не могу найти ничего плохого в этом.

Пол @ пример: / etc / init $ sudo vim uwsgi.conf
# Emperor uWSGI скрипт

предстартовый скрипт
    регистратор "pre-start для uWSGI Emperor"
конец сценария

сценарий после запуска
    регистратор "постстарт для uWSGI Emperor"
конец сценария

описание "UWSGI Emperor"

начать на уровне выполнения [2345]
остановитесь на уровне выполнения [!2345]

респаун

env LOGTO = /var/log/uwsgi.log

exec / usr / local / bin / uwsgi --master --die-on-term --emperor /etc/uwsgi/vassals --logto $ LOGTO

Я также проверил мои файлы /etc/uwsgi/vassals, чтобы убедиться, что они в рабочем состоянии. Мой единственный файл сейчас - это файл mysite.ini:

Пол @ пример:/etc/uwsgi/vassals $ sudo vim mysite.ini 
[Uwsgi]
base = /home/paul/djprojs/mysite/
chdir = %(базовый)
мастер = правда
темы = 20
socket = /tmp/sockets/%n.sock
home = /home/paul/.virtualenvs/dj
env = DJANGO_SETTINGS_MODULE=%n.settings
module = django.core.handlers.wsgi:WSGIHandler()

Но это выглядит хорошо для меня тоже.

Наконец, для проверки и запуска uWSGI из командной строки, я запустил его без Upstart. Я побежал

пол @exmaple/$ uwsgi - император /etc/uwsgi/vassals

и это сработало:

*** Запуск uWSGI 1.9.13 (32 бита) [суббота, 27 июля, 19:23:43 2013] ***
скомпилировано с версией: 4.6.3 21 июля 2013 г. 03:35:50
os: Linux-3.2.0-24-virtual #37-Ubuntu SMP Ср 25 апреля 12:51:49 UTC 2012
имя узла: пример.ме
машина: i686
источник часов: Unix
обнаруженное количество ядер процессора: 1
текущий рабочий каталог: /
обнаруженный двоичный путь: / usr / local / bin / uwsgi
*** ПРЕДУПРЕЖДЕНИЕ: вы запускаете uWSGI без его главного диспетчера процессов ***
лимит количества ваших процессов 3922
размер вашей памяти составляет 4096 байт
обнаружено максимальное число дескрипторов файлов: 1024
*** начинающий uWSGI Император ***
*** Обнаружен режим has_emperor (fd: 6) ***
[uWSGI] получение конфигурации INI из mysite.ini
*** Запуск uWSGI 1.9.13 (32 бита) [суббота, 27 июля, 19:23:43 2013] ***
скомпилировано с версией: 4.6.3 21 июля 2013 г. 03:35:50
os: Linux-3.2.0-24-virtual #37-Ubuntu SMP Ср 25 апреля 12:51:49 UTC 2012
имя узла: пример.ме
машина: i686
источник часов: Unix
обнаруженное количество ядер процессора: 1
текущий рабочий каталог:/etc/uwsgi/vassals
обнаруженный двоичный путь: / usr / local / bin / uwsgi
лимит количества ваших процессов 3922
размер вашей памяти составляет 4096 байт
обнаружено максимальное число дескрипторов файлов: 1024
блокировка двигателя: надежные мьютексы
сокет uwsgi 0 привязан к адресу UNIX /tmp/sockets/mysite.sock fd 3
Версия Python: 2.7.3 (по умолчанию, 10 апреля 2013, 06:03:17)  [GCC 4.6.3]
Установите для PythonHome значение /home/paul/.virtualenvs/dj
Основной интерпретатор Python инициализирован в 0x9bdb000
Поддержка потоков Python включена
Ваш журнал ожидания сокета сервера ограничен 100 соединениями
ваша милость за грациозные операции на рабочих составляет 60 секунд
сопоставлены 410112 байт (400 КБ) для 20 ядер
*** Рабочий режим: с резьбой ***
Приложение WSGI 0 (точка монтирования ='') готово через 0 секунд на интерпретаторе 0x9bdb000 pid: 18213 (приложение по умолчанию)
*** uWSGI работает в режиме нескольких переводчиков ***
порожденный мастер-процесс uWSGI (pid: 18213)
порожденный UWSGI рабочий 1 (pid: 18214, core: 20)

Тогда я остался без приглашения bash. UWSGI cli показывает все запросы сервера и не возвращает, чтобы я мог набрать другую команду. Я действительно чувствую, что должен быть лучший способ сделать это (иначе, используя 'sudo service uwsgi start/restart'), но я не уверен, как это сделать. Я посмотрел этот пост, но я не уверен, что другой уровень запуска решит проблему под рукой.

1 ответ

Решение

К сожалению, это трудно отладить в сценариях выскочки. Проблема в вашей линии:

env LOGTO = /var/log/uwsgi.log

Вы не можете иметь пробелы вокруг '='. Просто измените на:

env LOGTO=/var/log/uwsgi.log

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

Другие вопросы по тегам