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:为积压的请求发送默认响应