Django и Gunicorn не работают должным образом через systemd

Следуя этому замечательному руководству для установки Django с Gunicorn, PostgreSQL и Nginx я обнаружил, что не могу использовать Supervisor, как предлагалось, потому что он не работает с Python 3.

Поскольку systemd является менеджером служб по умолчанию на моем сервере Centos 7, я создал unit-файл, чтобы запустить Gunicorn в соответствии с руководством. Однако это не удалось с такими ошибками, как «no SECRET_KEY set» и «no PostgreSQL password supplied». Поскольку все уже работало до systemd, эти ошибки были странными.

Как и многие другие, я сохранял свои секретные настройки Django как переменные среды, чтобы не хранить их публично в моем репозитории git. Однако эта страница объяснил, что переменные среды в моем ~ / .bashrc не будут распознаваться, поэтому мне придется сделать эти переменные доступными для systemd.

Ниже я кратко изложил свое решение для всех, у кого такие же трудности с запуском Django через systemd.

ОБНОВЛЕНИЕ: лучшее решение позволяет systemd работать без ущерба для Django. Хотя можно указать переменные среды непосредственно в файле модуля systemd, это делает переменные недоступными для Django, когда не запущен как системный демон или отлаживается через оболочку Python.


person ZG101    schedule 23.02.2015    source источник


Ответы (1)


Просто попросите модуль systemd прочитать среду из файла с EnvironmentFile=.

[Service]
EnvironmentFile=-/whatever/django_environment_settings
person Michael Hampton    schedule 09.06.2015
comment
Я пояснил свой ответ. Если вы используете параметр EnvironmentFile, вы ограничиваете работу Django только с systemd. - person ZG101; 09.06.2015
comment
Нет, вы не указываете переменные среды в файле модуля, вы указываете на внешний файл, который их содержит. Это продолжит работать с вашим методом. - person Michael Hampton; 13.06.2015