Trabajo con un cliente que tiene un servidor Plesk dedicado basado en Linux. El sitio web (digamos example.com
) está activo y, dado que normalmente se requieren grandes modificaciones, es muy difícil hacer que funcionen directamente en funcionamiento. El servidor no tenía SVN, sólo FTP.
Creé un subdominio staging.example.com
y puse archivos allí a través de FTP para que el cliente pueda ver las modificaciones antes de publicarlas. No hace falta decir que es una verdadera molestia para mí recordar todos y cada uno de los archivos relacionados con cada tarea, cargarlos y probarlos en la etapa de preparación y luego volver a recordar cuáles eran los archivos y hacerlo nuevamente para el servidor en vivo. He "fracasado con éxito" varias veces al hacer esto sin problemas.
Quiero usar SVN ahora. Logré instalar SVN usando SSH (tengo acceso completo a él) y un repositorio (en /var/www/vhosts/example.com/svn/repos
), pero otras configuraciones me parecen ambiguas. Quiero que la configuración sea así:
- Servidor SVN (ejecutándose en
svn.example.com
- ya hecho) - Copia 'maestra' en
staging.example.com
, en/var/www/vhosts/example.com/staging
(No estoy seguro si 'maestro' tiene algún significado específico en SVN. Solo me refiero a la copia principal) - Un directorio de trabajo en
www.example.com
, en/var/www/vhosts/example.com/httpdocs
para que pueda actualizar svn para realizar mis cambios en vivo - Otro directorio de trabajo en mi computadora donde haría el trabajo real.
Mi plan es trabajar en mi computadora, confirmarlo para que pueda probarse en la etapa de preparación y, si todo está bien, actualizar desde el sitio en vivo para realizar mis cambios.
Por favor guíame cómo puedo lograr esto. También tenga en cuenta que soy programador, no administrador de sistemas, por lo que mi plan podría tener algunos problemas. Si lo cree así, indique una solución alternativa. He estado usando SVN durante mucho tiempo, pero eso fue solo checkout-commit-update-resolve, sin configuración. Por eso necesito ayuda ahora.
Respuesta1
La solución más sencilla probablemente sea simplemente comprobar el código (solo el tronco, sin ramas, etc.) en los tres lugares. Luego sólo necesita asegurarse de hacer "svn up" en las carpetas correctas en el momento correcto.
Entonces, prueba lo siguiente (los comentarios describen cada bit).
#SSH to the server as a user who can modify /var/www/vhosts/...
...
cd /var/www/vhosts/ # Since this is a live server, we need to make the
# changeover fast, so work in a new folder.
mkdir example.com_svn # Make the new folder
cd example.com_svn
svn co http://example.com/svn/repos/website staging # Check out the repository
# into a new folder called
# "staging".(Change "website"
# to your folder name)
svn co http://example.com/svn/repos httpdocs # Ditto, but "httpdocs"
# At this point you need to make the file permissions and ownership the same as
# the folders within the /var/www/vhosts/example.com.
# Once you've done that continue...
cd ..
mkdir example.com_old
mv example.com/staging example.com_old/. && mv example.com_svn/staging example.com/.
# This will make the svn version of the staging site live. Check that it works
# then do the same with the httpdocs folders.
Una solución más complicada sería utilizar dos ramas de código, una para la puesta en escena y la otra para el directo. Pero eso probablemente sería excesivo para esto...
Respuesta2
Versión extendida de la respuesta ed.
Prefacio
Debe adquirir algunas habilidades de administración de Subversion para que todo funcione correctamente y comprender los procesos subyacentes.
Rostro
Tienes que tener:
- Un repositorio
- Dos sucursales (al menos) en el repositorio (fe
STAGING
yLIVE
) - Gancho posterior a la confirmación con lógica empresarial integrada "publicar en el objetivo STAGE o LIVE"
Trescuatro copias de trabajo: DEV (su lugar de trabajo local, vinculado a la rama STAGING), MERGE (su lugar de trabajo local, vinculado a la rama LIVE), STAGING (en el servidor STAGING, vinculado a la rama STAGING), LIVE (en el servidor LIVE, vinculado a LIVE rama)- Cliente SVN instalado en STAGING y LIVE
Flujo de trabajo:
- Editar código en DEV
- Confirmación: el gancho posterior a la confirmación actualizará WC en STAGING
- Cambios de prueba en STAGING
- Fusionar en MERGE WC (probado) cambios desde la rama STAGING / fusionar de STAGING a la rama LIVE de manera efectiva /
- Confirmar cambios en la rama LIVE: el gancho posterior a la confirmación actualizará WC en LIVE con los cambios combinados (el gancho puede detectar dicho tipo de confirmación por palabra clave en el mensaje de confirmación //
svnlook log | grep KEYWORD
o mediante cambios en la rama LIVE //svnlook dirs-changed
)
Nota:
En lugar de WC en los servidores, ssh & svn up
puede usar FTP o scp: menos Subversion, más dolores de cabeza con la actualización de sitios (los archivos eliminados desaparecerán).noser eliminado por FTP|scp y el proceso en común parece más complejo /para mí/)