Django + apache & mod_wsgi:更改后必须重新启动 apache

Posted

技术标签:

【中文标题】Django + apache & mod_wsgi:更改后必须重新启动 apache【英文标题】:Django + apache & mod_wsgi: having to restart apache after changes 【发布时间】:2011-05-11 11:56:48 【问题描述】:

我这样配置我的开发服务器:

Ubuntu、Apache、mod_wsgi、Python 2.6

我从另一台连接到服务器的计算机上工作。

大多数情况下,更改不会影响应用程序,除非我重新启动 Apache。 在某些情况下,更改无需重新启动网络服务器即可生效,但假设在 3 或 4 个页面加载后,应用程序的行为可能与更改之前的行为相同。

直到现在我每次都重新加载 apache,因为我在这里有开发服务器,但是一段时间后地狱变得如此烦人。我怎样才能避免这种情况?

我无法使用开发服务器,因为我需要一个尽可能接近生产环境的环境。

谢谢

【问题讨论】:

显示你的相关配置文件。主要是我想看看启动你的 django 应用程序的 mod_wsgi 脚本。 这篇博文可能对您有所帮助:blog.dscpl.com.au/2008/12/… ...还有这个:modwsgi.readthedocs.io/en/develop/user-guides/… 只是为了确认一下,在你最后一个¶当你说你不能使用开发服务器时,你真的是指使用manage.py runserver吗? 【参考方案1】:

我的建议是在守护程序模式下运行应用程序。 这样你就不需要重新启动apache, 只需touch my_handler.wsgi,守护程序就会知道重新启动应用程序。 apache httpd 将不仅是您的(在生产中),因此不要在每次更新时重新启动它是公平的。

【讨论】:

如果您使用graceful,它不应该对其他请求产生不利影响。无论如何,正如 OP 所说,这只是为了他的开发服务器,对吧? 我看到graceful 干扰了流媒体请求,尽管它可能是我们设置的特定问题。 我应该在哪里创建这个文件?【参考方案2】:

Apache 在启动时会加载 Django 环境,即使源代码发生更改也会继续运行。

我建议您在繁重的开发会话中使用 Django 'runserver'(在更改时自动重新启动),除非您需要一些 Apache 特定的功能(例如多线程)。

另请注意,模板中的更改不需要重新启动 Web 服务器。

【讨论】:

Raz 帖子中的第二个链接提供了一个脚本,可以在每次更改文件时自动重新加载项目,这意味着既不重新启动 apache,也不使用 runserver。 对不起,我看错了帖子并给出了Windows的答案,它不支持守护程序模式。【参考方案3】:

没有更改需要您重新启动。您只需使用“sudo /etc/init.d/apache2 reload”重新加载。我在 bashrc 中将其别名为“a2reload”。

function a2reload ()
sudo /etc/init.d/apache2 reload

【讨论】:

如何解决?

以上是关于Django + apache & mod_wsgi:更改后必须重新启动 apache的主要内容,如果未能解决你的问题,请参考以下文章

Django,apache,mod_wsgi - 错误:脚本头过早结束

使用 mod_wsgi 在 apache 上设置 Django

Apache + mod_wsgi + django:为积压的请求发送默认响应

Django/Apache 使用 mod_wsgi 冻结

无法使用 mod-wsgi 在 Apache 上部署 django

Django / Apache / mod_wsgi - WEB 应用程序挂起 - 无法启动