2010-11-17 83 views
23

我配置我的開發服務器這樣:的Django +阿帕奇與mod_wsgi的:不必重新啓動Apache後改變

Ubuntu的,阿帕奇,mod_wsgi的,Python的2.6

我的服務器上運行從連接到另一臺計算機。

大多數情況下,這些更改不會影響應用程序,除非我重新啓動Apache。 在某些情況下,更改會在不重新啓動Web服務器的情況下生效,但讓我們說3或4頁加載後,應用程序的行爲可能與之前的行爲一樣。

直到現在我只是每次重新加載apache,因爲我在這裏有開發服務器,但是HELL經過一段時間後變得非常討厭。我怎樣才能避免這種情況?

我無法使用開發服務器,因爲我需要的環境與生產環境儘可能接近。

謝謝

+0

只是爲了確認,在你最後的¶當你說你不能使用開發服務器時,你是否確實使用'manage.py runserver'? – 2010-11-17 16:19:41

+0

顯示您的相關配置文件。大多我喜歡看到啓動你的Django應用程序的mod_wsgi腳本。 – rapadura 2010-11-17 15:35:02

+0

這個博客文章可能會幫助你:http://blog.dscpl.com.au/2008/12/using-modwsgi-when-developing-django.html ...和這個:http://modwsgi.readthedocs.io /en/develop/user-guides/reloading-source-code.html – Raz 2010-11-17 15:41:31

回答

14

我的建議是,你在守護進程模式下運行應用程序。 這樣你將不需要重新啓動Apache, 只是touch my_handler.wsgi和守護程序將知道重新啓動應用程序。 Apache httpd不會只是你的(在生產中),所以在每次更新時都不要重新啓動它。

+1

如果使用'graceful',它不應該對其他請求產生不利影響。在任何情況下,由於OP注意到這僅僅是他的開發服務器,對吧? – 2010-11-17 16:19:02

+0

我見過'優雅'干擾流媒體請求,雖然它可能是特定於我們的設置。 – 2015-01-26 23:07:49

-1

Apache在啓動時加載Django環境,即使在源發生更改時也會繼續運行它。

除非你需要一些Apache特有的功能(比如多線程),否則我建議你在繁重的開發會話中使用Django'runserver'(它會自動重啓更改)。

另請注意,模板中的更改不需要重新啓動Web服務器。

+1

Raz的帖子的第二個鏈接提供了一個腳本,每次更改文件時都會自動重新加載項目,這意味着既不重新啓動apache,也不使用runserver。 – 2015-09-03 16:22:25

+0

對不起,我誤解了這篇文章,並給出了一個不支持守護進程模式的Windows的解答。 – Don 2015-09-07 07:51:23

6

沒有變化需要您重新啓動。您只需使用「sudo /etc/init.d/apache2 reload」重新加載。我在我的bashrc中有'a2reload'的別名。

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