2010-11-17 16 views
23

he configurado mi servidor de desarrollo de esta manera:Django + Apache y mod_wsgi: tener que reiniciar después de Apache cambia

Ubuntu, Apache, mod_wsgi, Python 2.6

Yo trabajo en el servidor desde otro ordenador conectado a ella .

La mayoría de las veces los cambios no afectan a la aplicación a menos que reinicie Apache. En algunos casos, los cambios surten efecto sin reiniciar el servidor web, pero después de, digamos, 3 o 4 cargas de página, la aplicación puede comportarse como solía comportarse antes de los cambios.

Hasta ahora acabo de volver a cargar cada vez que apache ya que tengo el servidor de desarrollo aquí conmigo, pero HELL después de un tiempo se volvió tan molesto. ¿Cómo puedo evitar esto?

No puedo trabajar con el servidor de desarrollo ya que necesito un entorno lo más parecido posible al de producción.

Gracias

+0

Sólo para confirmar, en su última ¶ cuando se dice que no puede trabajar con el servidor de desarrollo, es lo que realmente quiere decir el uso de 'manage.py runserver'? –

+0

Muestra tus archivos de configuración relevantes. En general, me gustaría ver el script mod_wsgi que inicia la aplicación django. – rapadura

+0

Esta publicación de blog puede ayudarlo: http://blog.dscpl.com.au/2008/12/using-modwsgi-when-developing-django.html ... y esto: http://modwsgi.readthedocs.io /es/develop/user-guides/reloading-source-code.html – Raz

Respuesta

14

Mi sugerencia es que se ejecuta la aplicación en modo demonio. De esta manera no se le pedirá que reinicie apache, solo touch my_handler.wsgi y el daemon sabrá si reinicia la aplicación. El httpd de apache no será solo tuyo (en producción), por lo que es justo no reiniciarlo en cada actualización.

+1

Si usa 'graceful' no debería afectar negativamente a otras solicitudes. Y en cualquier caso, como el OP señala, esto es solo para su servidor de desarrollo, ¿verdad? –

+0

He visto 'graceful' interferir con la transmisión de solicitudes de medios, aunque podría ser algo específico de nuestra configuración. –

-1

Apache carga el entorno Django al arrancar y lo sigue ejecutando incluso cuando se cambia la fuente.

Le sugiero que utilice Django 'runserver' (que se reinicia automáticamente en los cambios) en sesiones de desarrollo pesado, a menos que necesite algunas características específicas de Apache (como multi-hilo).

Tenga en cuenta también que los cambios en las plantillas no requieren el reinicio del servidor web.

+1

El segundo enlace de la publicación de Raz proporciona una secuencia de comandos para volver a cargar automáticamente el proyecto cada vez que se cambia un archivo, lo que implica que no se reinicia apache ni se recurre al uso de runserver. –

+0

Lo siento, leí mal la publicación y respondí por Windows, que no es compatible con el modo daemon. – Don

6

No es necesario realizar ningún cambio para reiniciar. Simplemente necesita volver a cargar usando "sudo /etc/init.d/apache2 reload". Lo cual tengo un alias en mi bashrc para 'a2reload'.

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