systemctl .service не может прочитать переменную окружения

Я использую 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 не может прочитать переменную окружения и возникает ошибка). спасибо

1
задан 29 July 2019 в 16:05

1 ответ

показанный мой django не может получить доступ (читает) переменную среды

Поскольку systemd не работает в оболочке с Вашим пользователем и что пользовательская среда и те переменные.

когда я работающий uwsgi в командной строке

затем Вы используете своего собственного пользователя с той средой и теми переменными.


Вам нужен a

EnvironmentFile=/dir/to/file

перед Вашим ExecStart. Или если не то, чтобы многие можно также сделать

Environment={VAR}={VALUE}

(одна строка на переменную), где

  • {VAR} является названием Вашей переменной среды
  • {ЗНАЧЕНИЕ} является значением того {VAR}
2
ответ дан 7 December 2019 в 13:15

Другие вопросы по тегам:

Похожие вопросы: