2010-11-17 21 views
23

ich meine Entwicklungs-Server so konfiguriert:Django + Apache & mod_wsgi: Apache nach dem Neustart ändert

Ubuntu, Apache, mod_wsgi, Python 2.6

ich auf dem Server von einem anderen Computer mit ihm verbunden arbeiten .

In den meisten Fällen haben die Änderungen keinen Einfluss auf die Anwendung, es sei denn, ich starte Apache neu. In einigen Fällen werden die Änderungen wirksam, ohne den Webserver neu zu starten, aber nach drei oder vier Seiten lädt die Anwendung möglicherweise so, als ob sie sich vor den Änderungen verhalten hätte.

Bis jetzt habe ich immer nur Apache neu geladen, da ich den Entwicklungsserver hier bei mir habe, aber HELL wurde nach einer Weile so nervig. Wie kann ich das vermeiden?

Ich kann nicht mit dem Entwicklungsserver arbeiten, da ich eine Umgebung brauche, die so nah wie möglich an der Produktion ist.

Dank

+0

Nur um zu bestätigen, in Ihrem letzten ¶, wenn Sie sagen, Sie können nicht mit dem Entwicklungsserver arbeiten, meinen Sie tatsächlich mit 'manage.py runserver'? –

+0

Zeigen Sie Ihre relevanten Konfigurationsdateien an. Meistens möchte ich das mod_wsgi-Skript sehen, das deine Django-App startet. – rapadura

+0

Dieser Blogbeitrag kann Ihnen helfen: http://blog.dscpl.com.au/2008/12/using-modwsgi-when-developing-django.html ... und dies: http://modwsgi.readthedocs.io /en/develop/user-guides/reloading-source-code.html – Raz

Antwort

14

Mein Vorschlag ist, dass Sie die Anwendung im Daemon-Modus ausgeführt werden. Auf diese Weise müssen Sie Apache nicht neu starten, nur touch my_handler.wsgi und der Daemon weiß, um die App neu zu starten. Das Apache-httpd wird nicht nur dir gehören (in der Produktion), also ist es fair, es nicht bei jedem Update neu zu starten.

+1

Wenn Sie 'graceful' verwenden, sollte dies andere Anforderungen nicht beeinträchtigen. Und auf jeden Fall, wie das OP bemerkt, ist das nur für seinen Entwicklungsserver, oder? –

+0

Ich habe gesehen, dass "anmutige" Streaming Media-Anfragen stören, obwohl es etwas Spezifisches für unser Setup sein könnte. –

-1

Apache lädt die Django-Umgebung beim Starten und führt sie auch dann weiter, wenn die Quelle geändert wird.

Ich empfehle Ihnen, Django 'runserver' (die automatisch auf Änderungen neu startet) in schweren Entwicklungssitzungen, es sei denn, Sie benötigen einige Apache-spezifische Funktionen (wie Multi-Thread).

Beachten Sie auch, dass Änderungen an Vorlagen keinen Neustart des Webservers erfordern.

+1

Der zweite Link von Raz 'Post stellt ein Skript bereit, um das Projekt jedes Mal neu zu laden, wenn eine Datei geändert wird, was bedeutet, dass Apache weder neu gestartet noch auf runserver zurückgegriffen werden muss. –

+0

Entschuldigung, ich habe den Post falsch gelesen und eine Antwort für Windows gegeben, die den Daemon-Modus nicht unterstützt. – Don

6

Keine Änderungen erfordern Sie neu zu starten. Sie müssen einfach mit "sudo /etc/init.d/apache2 reload" neu laden. Was ich in meinem Bashrc zu "a2reload" gemacht habe.

Verwandte Themen