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


14

Я намагаюся виконати цей підручник для налаштування uWSGIз Djangoі nginxввімкненням Ubuntu16.04.

Все працює чудово до самого останнього кроку (о, іронія ...), де я намагаюся виконати цю команду:

sudo service uwsgi start

Якщо не вдається наступна помилка:

Не вдалося запустити uwsgi.service: Блок uwsgi.service не знайдено.

Інші, схоже, отримують подібну помилку:

Не вдалося запустити uwsgi.service: Не вдалося завантажити файл uwsgi.service: такого файлу чи каталогу немає.

Здається, проблема пов’язана з версією Ubuntu. Хоча цей підручник спрямований на Ubuntu 14.04, схоже, він не працюватиме для новіших версій, оскільки у версії 15 Ubuntu перейшов з upstartдемон- systemdinit на демон init .

Як я можу використовувати systemdзапуск uWSGI, щоб він працював з nginx та Django?

Відповіді:


27

Перше зміна необхідна , так це в /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

Оновіть стан системної системи init за допомогою цієї нової послуги uWSGI на борту

sudo systemctl daemon-reload

Для запуску сценарію потрібно виконати наступне:

sudo systemctl start uwsgi

Для того щоб почати uWSGIперезавантаження, вам також знадобляться:

sudo systemctl enable uwsgi

Ви можете використовувати наступне, щоб перевірити його стан:

systemctl status uwsgi

Деякі подальші подробиці можна знайти тут .


1
Як змусити systemd використовувати python virtualenv? Коли я бігаю, systemctl status uwsgiотримую ImportError: No module named site.
tlng05

2
епічний ..... я так довго боровся з цим .... дякую за прямо-просте покрокове рішення, яке ви написали тут. +1
Ракіб

1
Я користувався ним кілька разів, дуже корисна відповідь
jozi

0

Щоб усунути цю помилку: sudo systemctl daemon-reloadдля завантаження щойно створеного файлу uwsgi.service .

Для того, щоб почати обслуговування на кожній перезавантаження sudo systemctl enable uwsgi.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.