Migrando un servidor Subversion
Migración es una palabra que me he acostumbrado a usar, ver, leer y con la cual en general, he aprendido a convivir. En ésta ocasión realicé la migración de un servidor de control de versiones que trabaja con subversión.
Lo primero para migrar un servidor es tener un nuevo sitio a dónde migrar los datos. En general, para tener nuestro servidor subversión necesitamos instalar las paquetes correspondientes para ello, éstos paquetes son subversion y subversion-tools. Los pueden instalar con su herramienta de paquetería favorita y obvio dependiendo del sabor de GNU / Linux que usen quizá el nombre de estos varíe.
Teniendo los paquetes básicos nuestro servidor de control de versiones estará listo para ser configurado. Lo importante a nivel de configuración es:
- Crear una carpeta para que contenga nuestro repositorio
sudo mkdir /Path/Repositorio
sudo svnadmin create /Path/Repositorio
sudo addgroup svn
sudo chown -R root:svn /Path/Repositorio
sudo chmod -R 770 /Path/Repositorio
0k. En este momento tenemos nuestro repositorio para uso interno. En el caso de querer o necesitar acceso a través de red, deberemos instalar un servidor Web que nos preste éste servicio. En éste caso nos basaremos en el siempre vivo Apache2.
Entonces, después de instalar apache2, debemos instalar el módulo que permitirán a apache interactuar con nuestro servidor de control de versiones. Estos módulo es libapache2-svn, así que después de instalarlo sólo debemos pasar a configurarlo, para lo cual hacemos lo siguiente:
- Ajustamos nuevamente la propiedad de nuestro repositorio y su contenido
sudo chown -R www-data: /Path/Repositorio
sudo htpasswd -c /etc/apache2/dav_svn.passwd usuario1
Configurar el módulo dav_svn:
- La configuración se realizará en el archivo dav_svn.conf en la mayoría de distribuciones se encuentra en /etc/apache2/mods-available/dav_svn.conf
- En general tu archivo debería quedar de la siguiente forma
<Location /svn> #Path después de tu dominio DAV svn #Módulo SVN SVNParentPath /Path/Repositorio #Ubicación AuthType Basic #Tipo de autenticación AuthName "Subversion Repository" #Nombre AuthUserFile /etc/apache2/dav_svn.passwd #Archivo con usuarios y permisos <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> #Este NO obligará a loguearse antes de revisar el contenido </Location>
Con ésto tu repositorio ya podrá ser accedido a través de la web.
Ahora debemos sacar un backup de nuestro repositorio y restaurarlo en el nuevo servidor, ésto lo hacemos de la siguiente forma:
- Backup:
#svnadmin dump /Path/Antiguio/Repositorio < NombreNuevoRepo.svn_dump
#svnadmin load /Path/Repositorio > NombreNuevoRepo.svn_dump
De esta manera podrás restaurar los repositorios necesarios, no olvides reconfigurar los permisos de tus repositorios restaurados.
Finalmente un par de trucos para no hacer tu servidor tan asequible.
- Cambia el puerto de acceso a tu servidor Web (Generalmente es 80)
- No permitas la lectura de tu repositorio sin autenticación (Comenta el parámetro LimitExcept)
- Crea grupos de acuerdo a los diferentes repositorios que contengas en tu servidor (Puedes hacerlo creando un archivo con nombres de usuarios y permisos ya sea de lectura y/o escritura, éste agrégalo a dav_svn.conf)
- Ubica el Path de tu repositorio en un lugar poco común.
- En pocas palabras... asegura tu servidor!
Saludos!
eepica.