2008-09-01 16 views
7

Soy consciente de Capistrano pero es un poco demasiado pesado para mí. Personalmente configuré dos repositorios Mercurial, uno en el servidor de producción y otro en mi máquina de desarrollo local. Regularmente, cuando una nueva característica está lista, envío los cambios desde el repositorio en mi máquina local al repositorio en el servidor, y luego actualizo en el servidor. Esta es una manera bastante simple y rápida de mantener los archivos sincronizados en varias computadoras, pero no ayuda a actualizar la base de datos.¿Cómo se actualiza la aplicación web en el servidor?

¿Cuál es su solución al problema?

Respuesta

1

Solía ​​usar git push para publicar en mi servidor web pero últimamente solo he estado usando rsync. Intento que mi sitio sea tan independiente de dónde se está ejecutando como sea posible (usando rutas relativas, etc.) y hasta ahora ha funcionado bastante bien. El único desafío es mantener las bases de datos sincronizadas, y para eso usualmente uso la base de datos de producción como maestro y hago copias de seguridad e importaciones regulares en mi base de datos de prueba.

+0

Estoy haciendo lo mismo, pero últimamente me hizo pensar que esto realmente no es atómico. No es óptimo para un sitio web utilizado constantemente (las personas pueden acceder a él en una etapa interrumpida en la que aún no se han sincronizado todos los archivos). – Gilles

+0

Agregaré que una forma más óptima de hacerlo es sincronizar a una carpeta A mientras que la carpeta B contiene su sitio web en vivo y luego hacer el cambio de forma A a B sobrescribiendo un enlace simbólico que apunta a la versión actual en vivo. Y luego la próxima vez, rsync a B. – Gilles

0

@ Andrew

Para utilizar git push para desplegar su sitio tendrá que hacer primero configurar un servidor remoto en su archivo .git/config para empujar a. Luego debe configurar un gancho que básicamente realizará un restablecimiento de git, duro para copiar el código que acaba de copiar en el repositorio al directorio de trabajo.

Sé que esto es un poco vago, pero en realidad borré la carpeta .git del lado del servidor una vez que cambié a rsync, por lo que no tengo los scripts exactos que utilicé para hacer que ocurriera la magia. Sin embargo, podría ser un buen candidato para una pregunta completa, por lo que podría obtener más respuestas de esa manera.

edición: Sé que ha pasado un tiempo, pero finalmente encontré lo que estaba usando de nuevo:

Deploy a project using Git push

1

O Fabric, si lo prefiere Python.

+0

Más detalles sobre la tela: http://stackoverflow.com/questions/1233655/what-is-the-simplest-way-to-ssh-using-python – hughdbrown

1

¿Qué es un peso pesado sobre capistrano? si quieres sincronizar archivos, seguro que rsync es genial. pero si vas a necesitar hacer actualizaciones de db, ¿quizás el límite no es tan malo?

Cuestiones relacionadas