2016-10-11 3 views
2

Я перенес сервер, на котором я должен был Ubuntu 16.04 и systemd заменить upstart. У меня три среды разработки: производство, постановка и разработка. Только последний использует локальную базу данных, остальные два используют удаленный. Итак, для того, чтобы справиться с развертыванием и обслуживанием мне удалось создать следующий файл systemd службы:Как настроить gunicorn для чтения пользовательских настроек с помощью 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 файл, который я использую для развития.

Как я могу убедиться, что он загружает файл настроек.

ответ

2

Ну, передавая в качестве аргумента 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".

https://www.linux.com/learn/understanding-and-using-systemd

Смежные вопросы