Pregunta

Estoy desarrollando una aplicación django en Windows, SQLite y el servidor de desarrollo django. Lo he implementado en mi servidor host que ejecuta Linux, Apache, FastCgi, MySQL.

Desafortunadamente, el servidor ha devuelto un error en el producto mientras todo está bien en la máquina de desarrollo. Le pedí a mi proveedor una solución de preproducción para poder depurar y comprender el problema.

De todos modos, ¿cuáles son según usted los errores más probables que pueden ocurrir al mover una aplicación django de dev a prod?

Mejor

Actualización: creo que un pre-prod es la mejor manera de abordar este tipo de problema. Pero me gustaría construir una lista de verificación de lo que se debe hacer antes de poner en producción. Gracias por las valiosas respuestas que recibí hasta ahora :)

Actualización: FYI, he implementado el servidor de preprod y la notificación por correo electrónico según lo sugerido por shanyu y puedo ver que el error proviene de smart_if templatetag que estoy usando en esta nueva versión. ¿Algún truco con etiquetas de plantilla?

Actualización: creo que he arreglado el pb que fue causado, creo, por el envío de Filezilla FTP. Estaba usando el " reemplazar si es más nuevo " opción que supongo está causando algunos resultados inesperados. Usando el " reemplazar todo " opción solucionar el problema. Sin embargo, fue una oportunidad para mí para aprender más sobre la implementación. Thansk por sus respuestas.

¿Fue útil?

Solución

Los

problemas que normalmente tengo incluyen:

  1. Configuraciones de producción mal configuradas, ya sea en mi producción localsettings.py, wsgi / cgi o archivos de sitio apache en / etc / sites-available
  2. Diferencias en la base de datos. Utilizo South para las migraciones y me he encontrado con algunos problemas sutiles al realizar mi migración en PostgreSQL cuando funcionó sin problemas en sqlite.
  3. Alojamiento de archivos estático desde que hago trampa y uso el servidor Django en desarrollo
  4. Permisos, tanto en el sistema de archivos como en la base de datos
  5. Problemas de red raros, pero posibles, que me impiden obtener mis dependencias, ya sea en PyPi o en algún sitio de terceros

Formas en que he mitigado estos problemas:

  • Use la misma base de datos en producción y desarrollo (en su caso, MySQL en todas partes)
  • He descubierto que es útil tener una " prueba " entorno que imita la producción de todas las formas posibles (puede ser en hardware de gama baja o incluso en la misma máquina). De esta manera, si hay algún problema en este "tipo de producción" Enivornment, puedo resolverlos sin desconectar mi servidor de producción.
  • Script todo para implementaciones repetibles. Utilizo fabric , pero zc.buildout o Paver también funcionarían. Estas herramientas ayudan a reducir los errores tipográficos durante la implementación y reducen el tiempo de implementación de mi aplicación.
  • Use el control de versiones (mercurial, git, subversion) y una herramienta de migración de esquemas (como South), por lo que si algo sale mal cuando se implementa en producción, tiene la posibilidad de retroceder los cambios y permitir que la producción se ejecute en el antiguo código con el antiguo esquema de la base de datos.
  • No he configurado un " proxy de huevo " todavía, pero lo estoy considerando, para evitar problemas al descargar dependencias.
  • He encontrado que pip's dependencias de congelación son útiles, en caso de que una nueva, incompatible el cambio a una biblioteca ocurrió desde que lo descargué inicialmente
  • Usar un marco de prueba web como Windmill o Selenium para probar mi aplicación en mi " test " entorno, para que pueda obtener mucha cobertura de prueba de mi sistema muy rápidamente.

Otros consejos

Con respecto a su caso, puedo pensar en 2 cosas simples que pueden ayudarlo:

  1. Puede habilitar Django para enviar mensajes cuando ocurran excepciones dando detalles sobre ellos. Mire aquí para más detalles.
  2. Estará mejor si configura un entorno de prueba en el servidor prod (por ejemplo, test.example.com) para que pueda verificar si las cosas saldrán bien o no antes de implementar la aplicación.

Creo que estos fueron los podcasts que escuché recientemente (de Pycon 2009):

  

Localice Django en el mundo real (PyCon 2009):

     

http://advocacy.python.org/podcasts/pycon.rss

     

Partes 1 a 3

Muy buena introducción al diseño de sus aplicaciones para la implementación, en particular para su reutilización y redistribución.

Regs.

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