2009-03-14 30 views
11

Tengo un sitio que se ejecuta en Django, (pero la pregunta se aplica a cualquier cosa, php, etc)¿Debo usar git para implementar sitios web?

Actualmente estoy usando unison para desplegar mis cambios, y yo (un poco acostumbrados a) encanta porque antes de que yo lo estaba haciendo manualmente !!

Ahora, como yo estoy haciendo mis pies mojados con git, estoy empezando a encantar! Y estoy pensando si tal vez debería usarlo en lugar de unísono para implementar mis cambios.

De esta forma tendré la ventaja adicional de poder revertir mis cambios si de alguna manera su implementación resultara un desastre.

La pregunta es:

  • Es git adecuado para el despliegue de sitios web?

  • ¿Alguna cosa/problema/problema que deba tener en cuenta?

Respuesta

16

que usan Git para rastrear mi sitio web, y desplegarlo como esto:

git archive --format=tar --prefix="homepage/" master | gzip | ssh webserver "tar xvz -C ~/public_html" 

Esto merece una pequeña explicación.El comando de archivo para git exportará los archivos de la rama principal, que se comprime con gzip para minimizar el tráfico de red. Se recibe de forma remota a través de ssh, que se descomprime en el directorio de destino final.

La secuencia de comandos de implementación que uso tiene un poco más en marcha, pero esta es la pieza más importante.

+0

¿Cómo se arregla para que los archivos se eliminen del servidor? ¿Puede 'rsync' tomar la entrada de estilo tar? – mjs

+0

Con cada implementación, se crea un directorio nuevo y con versiones, al que se hace un enlace simbólico, lo que facilita la reversión. Aquí es donde entra en juego la parte "tiene un poco más de juego". –

+0

Hasta ahora uso unison, también. Esto tiene la ventaja de que los cambios en ambos lados se sincronizan automáticamente (excepto que el mismo archivo se cambió en ambos lados). También quiero cambiar a la implementación de git en el servidor. Pero no así. Un pago de git se ejecuta en el servidor. El código se actualiza por git pull. – guettli

5

Bueno, yo uso SVN para implementar mi sitio web, así que yo diría que ¡adelante! Tenga en cuenta que es posible que deba reiniciar/volver a cargar el servidor cada vez que actualice el código del sitio web (no estoy seguro de si Django o lo que sea que esté ejecutando puede solucionarlo).

+0

Como referencia: no es directamente django lo que determina si el servidor necesita ser recargado, sino el puente servidor-python. En la configuración de Apache-w/-modpython, los cambios en el código python requieren un reinicio de Apache, los cambios en las plantillas (o archivos estáticos) no lo hacen. Los cambios de ORM requieren mucho más. –

+0

Técnicamente, el importador personalizado de mod_python puede volver a cargar el código de Python modificado sin un reinicio del servidor, pero normalmente reinicio de todos modos para estar seguro. –

9

Si la pregunta es si puede usar git para implementar su aplicación django, ¡la respuesta es segura!

Sin embargo, la implementación de producción de una aplicación popular puede volverse compleja e ir más allá de simplemente retrotraer archivos. Es posible que necesite ejecutar scripts de DB (tanto scripts de actualización como de versión anterior), reiniciar tareas cron o mover archivos.

Como parte de su proceso de implementación, es posible que desee hacer una copia de seguridad de su base de código en su totalidad para que pueda deshacer cualquier número de versiones.

Una forma de hacerlo es con Capistrano que automatiza todo el proceso de distribución para usted. Usted crea scripts en su entorno de desarrollo y ejecuta comandos como: implementación de tapa, tapa desplegar_con_migraciones, restauración de tapa, etc. y todo se automatiza desde el inicio de sesión hasta el proceso de copia de seguridad y la ejecución de scripts de DB. Al automatizar la implementación, elimina los errores en su entorno de producción. Hace poco hablé con una organización que borró accidentalmente toda su base de datos mientras estaba en medio de una implementación y necesitaba restaurar todo, desde las copias de seguridad. Los errores de implementación realmente pueden romper su negocio, por lo que desea automatizar esto si lo toma en serio.

Aunque Capistrano es una herramienta de despliegue basada en Ruby de uso general con Rails, es independiente en términos de sus capacidades de automatización. Hay numerosos mensajes en Internet que discuten los beneficios de implementar aplicaciones de Django con Capistrano (google - django capistrano).

También puede comprobar check out this link here

+0

Creo que está complicando esto ... La pregunta nunca menciona nada que se parezca a los sitios web de negocios populares/complejos ... pero, capistrano es una buena sugerencia – dbr

Cuestiones relacionadas