Я использую django и сейчас пытаюсь настроить сервер с помощью nginx и uwsi. теперь я хорошо запускаю nginx + socket + uwsgi_emperor. для запуска uwsgi я использую следующую команду в терминале:
/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data
, и она отлично работает. Теперь я хочу добавить службу с systemctl {start|stop|restart|status} uwsgi.service
, чтобы я мог легко использовать UWSGI. проблема здесь возникает. Здесь /etc/systemd/system/uwsgi.service:
[Unit]
Description=uWSGI Emperor
After=syslog.target
[Service]
# i'm putting code same code of terminal exactly here:
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data
# Requires systemd version 211 or newer
RuntimeDirectory=uwsgi
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
теперь, когда я запускаю его с systemctl start uwsgi.service
, он работает, и я вижу, что systemctl status uwsgi.service
загружается хорошо, но когда я хочу получить доступ к ip, в journalctl -b -u uwsgi
появляется ошибка, которая показывает, что мой django не может получить доступ (прочитать) к переменной окружения. потому что я использую несколько переменных окружения в настройках django, поэтому без их значения django не может работать правильно. это случилось? (когда я запускаю uwsgi в командной строке, все хорошо, но когда я хочу использовать ту же команду в systemctl, django не может прочитать переменную окружения и возникает ошибка). спасибо
показанный мой django не может получить доступ (читает) переменную среды
Поскольку systemd не работает в оболочке с Вашим пользователем и что пользовательская среда и те переменные.
когда я работающий uwsgi в командной строке
затем Вы используете своего собственного пользователя с той средой и теми переменными.
Вам нужен a
EnvironmentFile=/dir/to/file
перед Вашим ExecStart
. Или если не то, чтобы многие можно также сделать
Environment={VAR}={VALUE}
(одна строка на переменную), где