尝试配置Gunicorn

时间:2019-05-05 00:02:03

标签: python django gunicorn

我一直遵循这个tutorial在django上部署我的django项目。我正在尝试配置gunicorn

我的项目结构与此类似:

enter image description here

在我的settings.py上,我使用DEBUG=False

我创建了gunicorn.socket和gunicorn.service。

/etc/systemd/system/gunicorn.socket

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

/etc/systemd/system/gunicorn.service

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

[Service]
User=someuser
Group=www-data
WorkingDirectory=/home/someuser/myproject
ExecStart=/home/someuser/myproject/myprojectenv/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          Myproject.wsgi:application

[Install]
WantedBy=multi-user.target

我启动并启用Gunicorn套接字:

sudo systemctl start gunicorn.socket 
sudo systemctl enable gunicorn.socket

检查该进程的状态以了解它是否能够启动:

sudo systemctl status gunicorn.socket

这就是我得到的,然后返回到命令行。

Failed to dump process list, ignoring: No such file or directory
β—� gunicorn.socket - gunicorn socket
   Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Sat 2019-05-04 23:12:03 UTC; 13s ago
   Listen: /run/gunicorn.sock (Stream)
   CGroup: /system.slice/gunicorn.socket

May 04 23:12:03 myproject systemd[1]: Listening on gunicorn socket.

接下来,我检查/ run目录中是否存在gunicorn.sock文件:

file /run/gunicorn.sock
/run/gunicorn.sock: socket

似乎文件或目录不存在,但没有提供更多详细信息。 gunicorn.sock似乎存在。

我对Python很熟悉,但对服务器和部署却不熟悉,所以我很茫然。

几个月前,我已经成功地遵循了适用于Ubuntu 16.04的类似教程,但是现在我一直遇到问题。

2 个答案:

答案 0 :(得分:0)

这实际上与您使用systemd有关。您需要在对systemctl的调用中引用服务的名称,而不是您正在执行的套接字。在您的情况下,该服务将称为gunicorn,因为您已将系统单位文件命名为gunicorn.service

systemctl enable gunicorn
systemctl start gunicorn

答案 1 :(得分:0)

我知道,这是个老问题,但是... 我有一些错误。在我的情况下,错误的 WorkingDirectory 和带有模块 wsgi 的应用程序。我认为这是“myproject.wsgi:application”中的错误