Gunicorn 启动失败并抛出 "gunicorn.service: Failed with result 'exit-code'." 错误。

9

我正试图按照这篇[链接][1]在 Digital Ocean 上部署一个简单的 Django 应用程序,我按照每个步骤逐步操作,通过 python manage.py runserver 成功运行该项目,没有任何错误,但是当我尝试使用 gunicorn 实现它时,它会抛出以下错误:

gunicorn.service:以'exit-code'结果失败。

以下是我的配置信息:

sudo nano /etc/systemd/system/gunicorn.socket

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

sudo nano /etc/systemd/system/gunicorn.service

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

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

[Install]
WantedBy=multi-user.target

sudo systemctl status gunicorn.socket

 gunicorn.socket - gunicorn socket
   Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Tue 2019-11-26 07:39:39 UTC; 12min ago
   Listen: /run/gunicorn.sock (Stream)
   CGroup: /system.slice/gunicorn.socket

Nov 26 07:39:39 POS systemd[1]: Listening on gunicorn socket.

当我尝试启动gunicorn时,它会抛出以下错误:

sudo systemctl status gunicorn

● gunicorn.service - gunicorn daemon
   Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2019-11-26 07:39:43 UTC; 13min ago
  Process: 718 ExecStart=/home/pos/env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock pos.wsgi:application (code=exited, status=1/FAILURE)
 Main PID: 718 (code=exited, status=1/FAILURE)
Nov 26 07:39:43 POS gunicorn[718]:     Arbiter(self).run()
Nov 26 07:39:43 POS gunicorn[718]:   File "/home/pos/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 198, in run
Nov 26 07:39:43 POS gunicorn[718]:     self.start()
Nov 26 07:39:43 POS gunicorn[718]:   File "/home/pos/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 155, in start
Nov 26 07:39:43 POS gunicorn[718]:     self.LISTENERS = sock.create_sockets(self.cfg, self.log, fds)
Nov 26 07:39:43 POS gunicorn[718]:   File "/home/pos/env/lib/python3.7/site-packages/gunicorn/sock.py", line 172, in create_sockets
Nov 26 07:39:43 POS gunicorn[718]:     sock_name = sock.getsockname()
Nov 26 07:39:43 POS gunicorn[718]: OSError: getsockaddrlen: bad family
Nov 26 07:39:43 POS systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE
Nov 26 07:39:43 POS systemd[1]: gunicorn.service: Failed with result 'exit-code'.

请帮我解决这个问题吗? [1]: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04
2个回答

9

最新版本的gunicorn(20.0.3)可能会导致此问题

尝试安装旧版本的gunicorn:

pip install gunicorn==20.0.2

5

看起来您正在尝试在ExecStart中监听 unix:/run/gunicorn.sock,但套接字实际上在 run/gunicorn.socket。尝试更改它,并运行systemctl daemon-reload以查看是否有所不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接