我正在部署一个 django/nginx/gunicorn 网站,并且正在关注本指南执行此操作时。按照子标题“生产部署的最终步骤”,我创建了一个生产 gunicorn 配置文件,并使用 从命令行运行它gunicorn -c config/gunicorn/prod.py
。但是,我注意到 gunicorn 会...停止运行,我不确定为什么。(工作超时?)
我想要了解以下内容:
- 如何设置 gunicorn 使其持续运行,这样我就不必登录到 prod 并启动它,
- 当 gunicorn 死机时,我可以设置电子邮件警报,因为 502 错误很糟糕,
- 如果我做错了什么。
我最初确实尝试过本指南,但由于某种原因无法让它与套接字一起工作。我怀疑这是长期答案,但同样,无法让它启动并运行。
这是我的prod.py
gunicorn 配置:
import multiprocessing
wsgi_app = "config.wsgi:application"
loglevel = "info"
workers = multiprocessing.cpu_count() * 2 + 1
bind = "0.0.0.0:8000"
reload = True
accesslog = "/var/log/gunicorn/access.log"
errorlog = "/var/log/gunicorn/error.log"
capture_output = True
pidfile = "/var/run/gunicorn/prod.pid"
daemon = True
答案1
检查日志:Gunicorn 默认将日志消息写入控制台,因此您应该在控制台输出中看到任何错误消息或其他有用信息。您还可以通过查看 Django 项目目录中的日志目录来检查 Django 应用程序中的日志。
检查配置文件中的语法错误:确保您的 gunicorn 配置文件没有语法错误。您可以通过运行
python -m py_compile config/gunicorn/prod.py.
检查配置文件的权限:确保运行 gunicorn 的用户有权读取配置文件。
检查进程:确保 gunicorn 是唯一正在运行的进程。如果有多个 gunicorn 进程正在运行,则可能会导致问题。您可以使用附言命令检查正在运行的进程,并使用 kill 命令停止它们。
检查 Django 应用程序中的错误:Django 应用程序中的错误可能会导致 gunicorn 停止运行。您可以通过查看日志或运行 Django 开发服务器并通过 Web 浏览器访问应用程序来检查 Django 应用程序中的错误。