Pregunta

Estoy usando Django como marco web y luego Apache y Lighttpd como servidor web y servidor de medios estáticos respectivamente. Lighty sirve todo mi contenido estático bien, pero necesito configurarlo para que sirva los nuevos archivos cargados por el usuario. Lighttpd se ejecuta en una máquina diferente de la de Apache (Django). Mi código django de crear un directorio y luego crear un archivo de imagen se ejecuta en mi máquina Apache, por lo que actualmente se guarda en la misma máquina. Quiero que este directorio y la creación de archivos sucedan en mi servidor de medios estático, que luego debería ser atendido por el servidor de medios. Estoy usando las funciones os.mkdir y urllib.urlretrieve respectivamente para crear el directorio y guardar archivos en la máquina Django (Apache). ¿De todos modos, puedo hacer algunos ajustes de configuración para que estas cosas funcionen o necesito escribir scripts en el servidor de medios y llamarlos desde la máquina Django?

¿Fue útil?

Solución

La respuesta más simple es que el usuario carga en un directorio compartido al que pueden acceder ambos servidores web. Entonces está disponible al instante. Si está utilizando Unix (parece), NFS es una posible solución. Si cree que su sitio escalará a múltiples servidores a la vez, entonces usar rsync para empujar a múltiples servidores perimetrales y posiblemente incluso implementar un esquema de fragmentación es otra solución.

Solo ten cuidado. Hay muchas preocupaciones de seguridad que, dependiendo de su aplicación, debe tener en cuenta.

Si todos los archivos van a un directorio de acceso público, los usuarios podrían adivinar los nombres de los archivos de otras personas y descargarlos. En ese caso, querrás servirlos desde Django con una capa delgada de seguridad en la parte superior.

¡Nunca confíes en tus usuarios! Verifique que lo que cargan esté en un determinado conjunto permitido. Bajo ninguna circunstancia debe permitirles cargar lo que quieran. A menos que, por supuesto, sus usuarios sean unos pocos de confianza. Incluso entonces deberías hacer algunos controles. Probablemente no deberían subir archivos .php para uno. Lo último que desea darles es la capacidad de ejecutar scripts arbitrarios en su servidor. Al menos configure el directorio para servir archivos y no ejecutar nada.

Buena suerte

Otros consejos

Este es el tipo de cosas para las que uso rsync. Haga lo que quiera en el servidor principal y luego periódicamente (o bajo demanda) rsync empuje al servidor estático. Rsync es más rápido (y más funcional) que cualquier cosa que puedas producir con un hack rápido.

Solo porque soy paranoico, hago rsync por hora de todos los sitios de mis clientes en 2 servidores de respaldo, uno de los cuales está en mi garaje. Acabo de cronometrar un & Quot; rsync -a & Quot; contra un sitio de cliente de 1.7GB (que no tenía ningún cambio) y tomó 9.92 segundos de tiempo de reloj de pared, incluidos los 3 apretones de manos de red para sincronizar 3 directorios diferentes. Algo cambió, presto-bango, está hecho, completo con marcas de tiempo, propietario / grupo, etc.

Es sorprendente cómo blas & # 233; puede llegar a ser acerca de la falla del servidor cuando obtiene un verdadero trabajo de copia de seguridad de múltiples máquinas y sin humanos. Duermo muy bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top