#django #virtualenv #uwsgi #mailman
#django #virtualenv #uwsgi #почтальон
Вопрос:
Я создаю проект django (mailman3) и получаю к нему доступ с помощью uwsgi. У меня он успешно запускается при запуске uwsgi в virtualenv из командной строки.
Я пытаюсь создать службу systemd для управления uwsgi. Он успешно загружает виртуальную среду для uwsgi и запускается. Но когда он пытается запустить процесс django с помощью attach-daemon, управляйте.py не может найти модуль django, т. Е. Он не получает виртуальную среду.
В файле /etc/uwsgi.ini у меня есть:
virtualenv = /opt/mailman/venv
chdir = /opt/mailman/mailman-suite/mailman-suite_project
attach-daemon = ./manage.py qcluster
Служба systemd имеет:
ExecStart=/opt/mailman/venv/bin/uwsgi --ini /etc/uwsgi.ini
Когда systemd запускает службу, мой журнал ошибок сообщает:
[...]
WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x558c5945bc30 pid: 15392 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 15392)
spawned uWSGI worker 1 (pid: 15416, cores: 2)
Traceback (most recent call last):
File "./manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'
Ответ №1:
Вот кусочек головоломки:
Он работал локально с активным virtualenv. Но при запуске systemd, даже с использованием uwsgi из virtualenv, процесс attach-daemon не унаследует virtualenv.
Изменение строки конфигурации на следующую включает virtualenv:
attach-daemon = /opt/mailman/venv/bin/python3 ./manage.py qcluster