2011-02-01 12 views
8

Voy a configurar una aplicación Django simple que se ejecuta en un entorno de producción en una caja Linux. La aplicación tendrá muy poco tráfico, menos de 100 páginas cargadas por día. ¿Está bien usar el servidor web Django incorporado para esto o debería instalar Apache y mod_wsgi? Si es así, ¿cuáles son las razones para esto? Seguridad tal vez?Usando el servidor web incorporado de Django en un entorno de producción

ACTUALIZACIÓN

bien es evidente que no debería usar el servidor incorporado. Algunas de las alternativas a Apache se ven interesantes. ¿Existe alguna que sea más popular/más utilizada con Django quizás?

Respuesta

13

NO USE ESTE SERVIDOR (el servidor web Django incorporado) EN UN AJUSTE DE PRODUCCIÓN. No ha pasado por auditorías de seguridad o pruebas de rendimiento.

http://docs.djangoproject.com/en/dev/ref/django-admin/#runserver-port-or-address-port

Pero usted no tiene el uso de Apache si no quiere. Puede usar directamente Spawning, Gunigorn etc.

Cherokee también es fácil de configurar.

+0

OK, eso está bastante claro, ¿gracias? – paperplane

+0

@paperplane Sí :) – Epeli

+1

Definitivamente no desea utilizar el servidor web incorporado. Si no quiere meterse con una instalación Apache "pesada", puede consultar lighttpd (http://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/?from=olddocs#lighttpd-setup) o nginx (http://code.djangoproject.com/wiki/DjangoAndNginx) – bhamby

16

¿es correcto utilizar el servidor web Django orden interna para este

¿Debo instalar Apache y mod_wsgi?

Sí.

Si es así, ¿cuáles son las razones para esto? Seguridad tal vez?

Parcialmente.

Más importante aún, el pequeño servidor de Django es de un solo hilo y cualquier cuelgue en su código bloquea el servidor. Esto significa que cuando dos usuarios hacen clic casi al mismo tiempo, la consulta del usuario debe recorrer todo el camino a través de Django antes de que la consulta del usuario dos pueda incluso comenzar.

Y esto tendrá que incluir la increíble velocidad de descarga lenta para el escritorio.

Apache (como todas las alternativas, lighttpd o nginx) tiene varios subprocesos. La parte más lenta de la transacción es la descarga de Apache al escritorio. No desea que el código de Python (y Django) maneje esto de una sola vez. Incluso para unos pocos usuarios.

Además, usted no lo Django servir medios estáticos (es decir, archivos CSS y JS biblioteca.)

Una mancha lenta única en su aplicación no afectará el rendimiento general del sistema si Apache y están en mod_wsgi lugar. La página de salida de una solicitud puede descargarse lentamente al escritorio de una PC en paralelo con la salida de otro usuario.

+0

Gracias muy útiles. – paperplane

+0

"Además, no es lo que Django está sirviendo a los medios estáticos (es decir, archivos de biblioteca CSS y JS)" - ¿Por qué? –

2

El servidor integrado de Django no se construyó para la producción. Hay muchas razones por las cuales, principalmente seguridad y eficiencia. La forma recomendada es usar mod_wsgi que está cubierto en los documentos here

9

Use nginx + gunicorn.

Nginx: cinco líneas de configuración. Gunicorn: dos líneas de configuración. Eso es fácil y eficiente. Para un mejor control, puedes engendrar el proceso de gunicornio usando supervisord.

Tanto gunicornicorn como supervisord están disponibles para instalar con pip, y nginx está disponible en casi cualquier distribución en el conjunto de paquetes predeterminado.

+0

¿sabes por cambio si la configuración de Gunicorn es más rápida que la configuración de cgi rápido? – Nick

Cuestiones relacionadas