使用 systemd 设置 gunicorn 套接字的 Django 部署,gunicorn 不遵守 Debian 9.4 上的 gunicorn.conf 文件设置

使用 systemd 设置 gunicorn 套接字的 Django 部署,gunicorn 不遵守 Debian 9.4 上的 gunicorn.conf 文件设置

我按照这里的 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。

我的 Gunicorn 套接字的 nginx 代理正在运行。我可以加载应用程序并在浏览器中使用它,但在一个页面上出现 502 超时。Nginx 错误日志为:

2018/07/25 10:31:18 [错误] 614#614:*3 上游在读取上游响应标头时过早关闭连接,客户端:10.18.3.145,服务器:_,请求:“GET /browse/expenses/ HTTP/1.1”,上游:“http://unix:/run/gunicorn3/socket:/browse/expenses/", 主机:“10.18.3.59”, 引用者:“http://10.18.3.59/

30 秒后发生超时,并且没有写入 gunicorn3.conf/gunicorn.conf 中指定的日志文件,因此看来我的套接字实现不遵守 .conf 文件。我做错了什么?我尝试更改 feritsuser:feritsuser 的 .conf 文件,但仍然没有结果。

答案1

我无法让它使用 .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

相关内容