martes, 12 de agosto de 2008

Instalar un servidor Subversion - Debian

Primero qué es Subversion, según Wikipedia es un software de sistema de control de versiones diseñado específicamente para reemplazar al popular CVS, el cual posee varias deficiencias. Es software libre bajo una licencia de tipo Apache/BSD y se le conoce también como svn por ser ese el nombre de la herramienta de línea de comandos. Una característica importante de Subversion es que, a diferencia de CVS, los archivos versionados no tienen cada uno un número de revisión independiente. En cambio, todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en cierto punto del tiempo.

Dado lo anterior, los pasos a seguir para instalar el servidor son los siguientes:

Primer paso: Instalación de las herramientas necesarias
Instalamos los paquetes que nos hacen falta para crear repositorios:

sudo apt-get install subversion subversion-tools

Necesitamos dos módulos de apache instalados en nuestro servidor, si vamos a hacer uso del svn a través de internet. Los módulos son dav y dav_svn. Para comprobar que los tenemos:

a2enmod dav
a2enmod dav_svn

Si no estaban instalados, los instalamos:

sudo apt-get install libapache2-svn
 
Segundo paso: Creación de grupos y usuarios permitidos
Creamos un grupo subversion para manejar fácilmente los permisos:

sudo groupadd subversion

Añadimos a dicho grupo los usuarios que queremos que usen nuestro servidor:

sudo usermod -a -G subversion user1
sudo usermod -a -G subversion user2
sudo usermod -a -G subversion user3

Ahora pasamos a crear los archivos de acceso, los que guardan los nombres y contraseñas de los usuarios que harán uso del repositorio:

sudo htpasswd -c /etc/apache2/dav_svn.passwd user1
sudo htpasswd /etc/apache2/dav_svn.passwd user2
sudo htpasswd /etc/apache2/dav_svn.passwd user3

El primero lleva -c por la simple razón de que crea el archivo. Los demás se añaden a él.
Cada vez que introduzcamos un usuario, se nos pedirá su nueva contraseña.

Tercer paso: Creación de un repositorio
Ahora creamos la carpeta donde ubicaremos el repositorio:

sudo mkdir /home/SVN
sudo svnadmin create /home/SVN

Y le damos los correspondientes permisos:

sudo chown -R www-data:subversion /home/SVN/
sudo chmod -R 770 /home/SVN/ 

Cuarto paso: Configurando Apache para los repositorios
Pasamos a configurar el archivo que gestiona el módulo de apache para el svn:

sudo gedit /etc/apache2/mods-available/dav_svn.conf

Dentro ponemos esta configuración:

##
# SVN
#
<Location /svn>
DAV svn
SVNPath /home/SVN
AuthType Basic
AuthName "Repositorio Subversion del proyecto"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

Si queremos quitar el modo lectura a cualquiera, para que nuestro proyecto sea confidencial o no queremos que sea visto desde fuera, basta reemplazar la sección:

<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>

por:

Require valid-user

Por último, reiniciamos el servicio de apache para que arranque con los cambios introducidos:

sudo /etc/init.d/apache2 restart

Notas finales
Si queremos añadir usuarios a nuestros repositorios:

sudo htpasswd /etc/apache2/dav_svn.passwd otro_usuario

Si queremos crear nuevos repositorios repetiremos todo desde el tercer paso, creando un archivo de contraseñas con otro nombre (seguridad), añadiendo al final del archivo /etc/apache2/mods-available/dav_svn.conf la configuración del nuevo servidor (seguramente cambiará el path al archivo de contraseñas y el path al propio repositorio).

¡Listo! :-)
Explicación obtenida de seguilaflecha.com

No hay comentarios: