Montar un servidor de versiones svn en centos desde ssh

A continuación detallo los pasos a seguir para montar un servidor de versiones en un servidor con centos desde consola ssh.

Paso 1: Instalar el servidor de Subversion

Una vez hecho login con el usuario root, usamos yum para instalar los paquetes de subversion (si en vez de CentOs utilizas otra distribución, quizás tengas que usar aptget u otro gestor de paquetes).

Cuando nos pregunte si YES/NO damos YES

Paso 2: Configurar Apache

Ahora hemos de configurar apache para que cuando alguien llame a https://svn.midominio.com/repositorio1 se esté conectando a subversion via WEBDAV.

Instalamos el mod_dav_svn para apache (DAV es la tecnología que nos permitirá hacer commits a través de http).

Cuando nos pregunte si YES/NO damos YES

Hemos de asegurarnos de que en /etc/httpd/conf/httpd.conf está la línea Include conf.d/*.conf. la cual se encarga de cargar los modulos mod_dav_svn.so  y mod_authz_svn.so.

Paso 3: Crear el repositorio Subversion

Crearemos el directorio svn  en /var/, donde se alojarán los repositorios de subversion

Creamos el directorio del repositorio donde se instalarán los archivos des repositorio en cuentión

Instalamos un repositorio en ese directorio mediante el comando svnadmin create

Muy importante es dar permisos de escritura a este directorio. Si no es así, apache no podrá modificar estos archivos y por tanto, los commits nunca funcionarán.

Paso 4: Configurar el httpd.conf

Me abro el archivo /etc/httpd/conf/httpd.conf

Me voy al final y añado lo siguiente:

Donde:

Una explicación breve sobre lo que acaba de introducir:

Tabla 3.1. Configuración de httpd.conf de Apache

Configuración Explicación
<Location /svn> Significa que los repositorios de Subversion están disponibles en la URL http://MiServidor/svn/
DAV svn Le dice a Apache qué módulo será responsable de servir esa URL – en este caso, el módulo de Subversion.
SVNListParentPath on Para Subversion 1.3 y superiores, esta directiva habilita el listado de todos los repositorios disponibles bajo SVNParentPath.
SVNParentPath D:\SVN Le dice a Subversion que busque repositorios bajo D:\SVN
SVNIndexXSLT “/svnindex.xsl” Utilizado para mejorar la visualización desde un navegador de web.
AuthType Basic Se utiliza para activar la autentificación básica, es decir, Usuario/contraseña
AuthName “Subversion repositories” Se utiliza cuando le aparezca un diálogo de autentificación al usuario como información para decirle para qué se necesita su autentificación
AuthUserFile passwd Especifica qué archivo de contraseñas se utiliza para la autentificación
AuthzSVNAccessFile Lugar del archivo de Acceso para las rutas dentro del repositorio de Subversion
Require valid-user Especifica que sólo los usuarios que hayan introducido un par usuario/contraseña válido podrán acceder a la URL

Paso 5: Crear usuarios y repositorios

La aplicación htpasswd crea un archivo en /etc/svn-auth-file e introduce un usuario con nombre usuario1 (en seguida nos pide que escribamos y confirmemos su contraseña).

¡Alerta! Si queremos crear más usuarios, no debemos usar la opción -c, ya que esta crea un nuevo fichero, sobreescribiendo el anterior.

Para el segundo y siguientes usuarios, usaremos:

Si queremos borrar un usuario, podemos editar el fichero o usar la opción -D mayúscula.
Además, a mi me interesa tener varios repositorios, sólo he de hacer los pasos 3, 4 (sólo el punto 2, añadiendo un bloque debajo del otro) y 5 cambiando “repositorio1? por otro nuevo repositorio.

Paso 6: Reiniciar el Servidor Apache

ó

Paso 7: Acceder al repositorio por la url

Ejemplo: