我一直遵循这个tutorial在django上部署我的django项目。我正在尝试配置gunicorn。
我的项目结构与此类似:
在我的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的类似教程,但是现在我一直遇到问题。
答案 0 :(得分:0)
这实际上与您使用systemd
有关。您需要在对systemctl
的调用中引用服务的名称,而不是您正在执行的套接字。在您的情况下,该服务将称为gunicorn
,因为您已将系统单位文件命名为gunicorn.service
。
systemctl enable gunicorn
systemctl start gunicorn
答案 1 :(得分:0)
我知道,这是个老问题,但是... 我有一些错误。在我的情况下,错误的 WorkingDirectory 和带有模块 wsgi 的应用程序。我认为这是“myproject.wsgi:application”中的错误