Назад | Перейти на главную страницу

Развертывание Django с сокетом gunicorn, настроенным с помощью systemd, gunicorn не соблюдает настройки файла gunicorn.conf в Debian 9.4

Я выполнил инструкции по развертыванию systemd здесь, на http://docs.gunicorn.org/en/stable/deploy.html

/etc/systemd/system/gunicorn3.service:

[Unit]
Description=gunicorn3 daemon
Requires=gunicorn3.socket
After=network.target

[Service]
PIDFile=/run/gunicorn3/pid
User=feritsuser
Group=feritsuser
RuntimeDirectory=gunicorn3
WorkingDirectory=/home/feritsuser/Ferits
ExecStart=/usr/bin/gunicorn3 --pid /run/gunicorn3/pid   \
          --bind unix:/run/gunicorn3/socket Ferits.wsgi
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

/etc/systemd/system/gunicorn3.socket

[Unit]
Description=gunicorn3 socket

[Socket]
ListenStream=/run/gunicorn3/socket

[Install]
WantedBy=sockets.target

/etc/tmpfiles.d/gunicorn3.conf:

d /run/gunicorn3 0755 feritsuser feritsuser \
--workers 2 \
--timeout 300 \
--error-logfile /var/log/gunicorn3/error.log \
--log-level=debug 

У меня есть Gunicorn.conf с символической ссылкой на gunicorn3.conf.

Мой прокси-сервер nginx для сокета Gunicorn работает. Я могу загрузить приложение и использовать его в браузере, но у меня тайм-аут 502 на одной странице. Журнал ошибок Nginx:

2018/07/25 10:31:18 [ошибка] 614 # 614: * 3 восходящее соединение преждевременно закрыто при чтении заголовка ответа от восходящего потока, клиент: 10.18.3.145, сервер: _, запрос: "GET / просмотр / расходы / HTTP /1.1 ", восходящий поток:"http: // unix: / run / gunicorn3 / socket: / браузер / расходы /", хост:" 10.18.3.59 ", реферер:"http://10.18.3.59/"

Тайм-аут наступает через 30 секунд, и он не записывается в файл журнала, указанный в gunicorn3.conf / gunicorn.conf, поэтому похоже, что моя реализация сокета не соблюдает файл .conf. Что я делаю не так? Я пробовал использовать файлы .conf для feritsuser: feritsuser, но все равно ничего.

Мне так и не удалось заставить его использовать файл .conf, даже когда он указывал его в gunicorn3.service. Что в итоге сработало, так это полностью избавиться от файла .conf и изменить мой файл gunicorn3.service следующим образом:

[Unit]
Description=gunicorn3 daemon
Requires=gunicorn3.socket
After=network.target

[Service]
PIDFile=/run/gunicorn3/pid
User=feritsuser
Group=feritsuser
RuntimeDirectory=gunicorn3
WorkingDirectory=/home/feritsuser/Ferits
ExecStart=/usr/bin/gunicorn3 --pid /run/gunicorn3/pid \
          --bind unix:/run/gunicorn3/socket Ferits.wsgi \
          --workers 2 \
          --timeout 300 \
          --error-logfile /var/log/gunicorn3/error.log \
          --log-level=debug
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target