Я выполнил инструкции по развертыванию 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