EEPICA's BLOG eepica@nirvana:~# ps aux blog | grep eepica

Migrando un servidor Subversion

in Technology

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
  • Crear estructura de soporte svn en nuestra carpeta
      sudo svnadmin create /Path/Repositorio
  • Crear un grupo de usuarios autorizados
      sudo addgroup svn
    • Nota: svn es el nombre del grupo que YO he decidido agregar
  • Asignar propiedad y permisos al repositorio y su contenido.
      sudo chown -R root:svn /Path/Repositorio
    • Propiedad del usuario root
    • sudo chmod -R 770 /Path/Repositorio
    • Permisos de acuerdo a las necesidades, 770 es tan sólo un ejemplo

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
  • En el caso de que queramos controlar el acceso a nuestro repositorio, crearemos usuarios para éste.
      sudo htpasswd -c /etc/apache2/dav_svn.passwd usuario1
    • El parámetro -c creará el archivo, por lo cual si vamos a agregar más usuarios a éste archivo usaremos el comando sin el parámetro -c.
    • dav_svn.passwd puede ser cambiado por el nombre que quieras dar al archivo en el que almacenarás los usuarios.
    • usuario1 será el nombre del usuario que agregarás, cambialo por el de tu preferencia.

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
  • Restauración:
  • #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.

Categories

Leave a comment