Следуя этому замечательному руководству для установки 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.