我想使用 digitalocean droplet 来托管 django 网站。我尝试使用 gunicorn 和 nginx 在服务器上运行应用程序,当我尝试从浏览器访问服务器时出现 502 错误,我一直在试图弄清楚发生了什么。
我一直在关注这教程。我的 droplet 是 Ubuntu 20.04。
这是我的/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=root
Group=www-data
WorkingDirectory=/home/root/mysite
ExecStart=/home/root/mysite/venv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
mysite.wsgi:application
[Install]
WantedBy=multi-user.target
我可以运行gunicorn --bind 0.0.0.0:8000 mysite.wsgi
,并且python manage.py runserver
没有显示任何错误。当我运行时sudo systemctl status gunicorn.socket
,套接字似乎处于活动状态。
但是,当我运行时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 2023-03-14 05:25:01 UTC; 4min 53s ago
TriggeredBy: ● gunicorn.socket
Process: 74292 ExecStart=/home/root/mysite/venv/bin/gunicorn --access-logfile - --workers 3 --bind>
Main PID: 74292 (code=exited, status=200/CHDIR)
Mar 14 05:25:01 mysite systemd[1]: Started gunicorn daemon.
Mar 14 05:25:01 mysite systemd[1]: gunicorn.service: Main process exited, code=exited, status=200>
Mar 14 05:25:01 mysite systemd[1]: gunicorn.service: Failed with result 'exit-code'.
我正在使用 gunicorn 版本 20.0.2。
通过查看 nginx 错误日志,我发现当我尝试访问该网站时不断出现以下错误:
2023/03/14 05:12:12 [error] 72896#72896: *22 connect() to unix:/run/gunicorn.sock failed
(111: Connection refused) while connecting to upstream, client: xxx.xxx.xxx.xxx,server
mysite.dev, request: "GET / HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/",
host: "xxx.xx.xxx.xxx"
任何帮助都非常感谢!谢谢!