#django #gunicorn
#django #gunicorn
Вопрос:
Я перенес сервер, который у меня был, на Ubuntu 16.04 и systemd
заменил upstart
. У меня есть три среды разработки: производственная, промежуточная и разработка. Только последний использует локальную базу данных, два других используют удаленную. Итак, для обработки развертывания и службы мне удалось создать следующий systemd
файл службы:
[Unit]
Description=Gunicorn service for Project
After=network.target
[Service]
User=projuser
WorkingDirectory=/home/projuser/sites/Project/source
ExecStartPre=/usr/bin/env DJANGO_SETTINGS_MODULE=v3.settings_staging
ExecStart=/home/projuser/sites/Project/env/bin/gunicorn --bind 127.0.0.1:8090 --workers 6 --access-logfile ../access.log --error-logfile ../error.log v3.wsgi:application
[Install]
WantedBy=multi-user.target
Служба запускается, но, похоже, игнорирует эту строку : ExecStartPre=/usr/bin/env DJANGO_SETTINGS_MODULE=v3.settings_staging
. В журналах я вижу следующее:
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
В основном потому, что он использует мой settings.py
файл по умолчанию, который я использую для разработки.
Как я могу убедиться, что он загружает промежуточный settings.py файл?
Ответ №1:
Ну, передача в качестве аргумента gunicorn
также работает:
--env DJANGO_SETTINGS_MODULE=myproject.settings
https://gunicorn-docs.readthedocs.io/en/latest/run.html#gunicorn-django
То, что я хотел, можно было бы достичь, имея следующий файл в /etc/systemd/system
:
[Unit]
Description=Gunicorn service for a Django Project
After=network.target
[Service]
User=a_user
WorkingDirectory=/home/a_user/project/source
Environment="DJANGO_SETTINGS_MODULE=app.settings_staging"
ExecStart=/home/a_user/envs/project_env/bin/gunicorn --bind 127.0.0.1:8090 --workers 6 --access-logfile ../access.log --error-logfile ../error.log v3.wsgi:application
[Install]
WantedBy=multi-user.target
Обратите внимание на следующую строку: Environment="DJANGO_SETTINGS_MODULE=app.settings_staging"
.