Назад | Перейти на главную страницу

Подключение uWSGI для работы с Django и nginx в Ubuntu 16.04

Я пытаюсь следовать этот учебник установить uWSGI с участием Django и nginx на Ubuntu16.04.

Все работает нормально до самого последнего шага (о ирония ...), где я пытаюсь выполнить эту команду:

sudo service uwsgi start

В случае неудачи со следующей ошибкой:

Не удалось запустить uwsgi.service: модуль uwsgi.service не найден.

Другие, похоже, получают аналогичную ошибку:

Не удалось запустить uwsgi.service: не удалось загрузить модуль uwsgi.service: нет такого файла или каталога.

Проблема, похоже, связана с версией Ubuntu. Хотя это руководство предназначено для Ubuntu 14.04, похоже, что оно не будет работать для более новых версий, потому что в версии 15 Ubuntu перешла с upstart демон инициализации в systemd демон инициализации.

Как я могу использовать systemd запустить uWSGI, чтобы он работал с nginx и Django?

В первый модификация необходима для /etc/uwsgi/sites/firstsite.ini файл. Единственное необходимое изменение - это замена разрешений из 664 к 666. Сценарий будет выглядеть так:

[uwsgi]
project = firstsite
base = /home/user

chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true

Во-вторых, поскольку мы используем systemd скорее, чем upstart, следующий файл не нужно и могут быть удалены: /etc/init/uwsgi.conf

Третий, мы создаем следующие systemd сценарий в /etc/systemd/system/uwsgi.service:

[Unit]
Description=uWSGI Emperor service
After=syslog.target

[Service]
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

Обновите состояние системы инициализации systemd с помощью этой новой службы uWSGI на борту

sudo systemctl daemon-reload

Для запуска скрипта вам необходимо выполнить следующее:

sudo systemctl start uwsgi

Чтобы начать uWSGI при перезагрузке вам также понадобятся:

sudo systemctl enable uwsgi

Вы можете использовать следующее, чтобы проверить его статус:

systemctl status uwsgi

Более подробную информацию можно найти Вот.

Чтобы обойти эту ошибку: sudo systemctl daemon-reload для вновь созданных uwsgi.service файл для загрузки.

Чтобы служба запускалась при каждой перезагрузке: sudo systemctl enable uwsgi.