Я пытаюсь следовать этот учебник установить uWSGI
с участием Django
и nginx
на Ubuntu
16.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
.