【问题标题】:What are the recomended ways to manage a django project in production (in apache server) [closed]在生产中管理 django 项目的推荐方法是什么(在 apache 服务器中)[关闭]
【发布时间】:2026-02-20 12:10:01
【问题描述】:

我的目标是让 django 应用程序在崩溃时自动重启,并将错误写入日志文件。有人建议使用 supervisord、daemontools 或 django-supervisor,但我在让它们中的任何一个工作时遇到问题。

例如,在 supervisord 中,应用程序提示我输入要管理的“程序”,并且它想要一个目录。我不知道这实际上意味着什么。如果我想管理它,与我的所有 django 项目重叠的“程序”是什么?

我把它设置为:

[progam:webserver]
command=/home/user/apps/django/apache2/bin/start # I think this is wrong
restart=true
logfile=/home/path/to/file

但我不认为这是正确的。我不知道网络服务器背后的基础知识以及它如何与 django 应用程序或 mod_wsgi 等交互。

我想 tl;dr 有三个问题。一个是你们建议如何在 apache 中管理 django 项目。其次,我应该如何配置我的 supervisord 以连接到我的 django 项目? [编辑] 第三个问题,除了记录崩溃之外,还应该添加哪些其他很酷的功能来管理 Web 应用程序?

谢谢!

【问题讨论】:

    标签: python django apache daemon


    【解决方案1】:

    当您使用 apache 运行 django 时,不需要管理员。当 django 出错时,它将发生在 apache 请求中。 Apache 已经是一项服务。跟踪 apache 正在处理的请求数量或其资源使用情况可能很重要,但有一些不错的开源工具(其中之一是 nagios)。

    一些 python 网络服务器(我相信 gunicorn)可以(也许应该?)使用主管进行管理。但是,对于 apache,这不是必需的。

    Apache 将处理日志记录到您在虚拟主机中设置的错误日志。此外,您可以让 django 向您发送有关错误的电子邮件(我认为这很酷) django-sentry 看起来真的很酷https://github.com/getsentry/sentry。它提供了很好的错误管理。

    【讨论】:

    • 但是它会重新启动 django 应用程序吗?我认为这是与日志记录一起的关键功能。
    • 是的,当请求到来时,我相信每个请求都会启动一个新的 django 应用程序,因此 django 并没有真正运行。
    • 哦,哇,所以我想那时甚至不需要 supervisord。那为什么supervisor甚至是一种服务呢?对于不使用 apache 作为服务器的人?
    • supervisor 在这种情况下非常有用。就像你可以将任何脚本变成服务一样while True: #do something可以变成服务并在出错时重新启动
    • 啊,谢谢,只是为了将来参考,django 怎么能连接到 supervisord?实际上保持 django 运行的中心进程是什么? command=/home/apps/django/apache/start 可能不是哈哈。
    最近更新 更多