Instalar Subversion y Autenticación por Apache

Introducción para Instalar Subversion y Autenticación por Apache

Uno de los clientes me ha solicitado la instalación de subversion y la autentificación se realice a través de Apache. Aparte de ello podemos ver un listado de nuestros ficheros a través de nuestro propio navegador.

A la vez añadiremos algunos clientes usados y comandos básicos desde Linux para poder hacer pruebas.

Lo que instalaremos será siempre desde los propios repositorios oficiales y en este caso vamos a trabajar en una distribución Debian 8.1.

Instalando los paquetes necesarios Subversion y Apache SVN

Lo primero que haremos será instalar subversion + tools y el modulo de apache para svn.

apt-get install subversion subversion-tools libapache2-svn apache2

Al instalar los módulos por defecto se habilitan en caso de no hacerlo tenemos que habilitar el dav y dav_svn:

a2enmod dav dav_svn

Si queremos ver una lista de los posibles módulos que podemos habilitar solo tenemos que ejecutar el comando «a2enmod».

Configurando nuestro entorno

Este será nuestro entorno y ficheros con los que vamos a trabajar:

  • Directorio donde guardaremos los repositorios SVN: /var/www/svn
  • Configuración de mod_dav: /etc/apache2/mods-enabled/dav_svn.conf
  • Fichero de usuarios: /etc/svn-usuarios

Lo primero que haremos será crear nuestro directorio:

mkdir -p /var/www/svn

Lo siguiente será configurar nuestro entorno en Apache, para ello editamos: /etc/apache2/mods-enabled/dav_svn.conf

<Location /svn>
 DAV svn
 SVNParentPath /var/www/svn
 AuthType Basic
 AuthName "Repositorios SVN"
 AuthUserFile /etc/svn-usuarios
 Require valid-user
 </Location>

Como podemos ver en la configuración hemos descomentado unas cuantas líneas del fichero y además añadidas otras nuevas. Pero los puntos importantes es donde estará nuestro repositorio «/var/www/svn», el fichero que usaremos para autentificar «/etc/svn-usuarios» y el forzar a que solo usuarios válidos vean los repositorios «Require valid-user».

Configurando los usuarios

Para ello utilizaremos el comando htpasswd el cual nos permitirá guardar los usuarios en un fichero. Por defecto el tipo de cifrado que usa es MD5 pero podemos usar otro tipo de cifrado o guardarlo en plano si lo desea el administrador (no recomendado).

htpasswd -c /etc/svn-usuarios usuario1

Con este comando crearemos por primera vez el fichero y además nos creará el usuario «usuario1». Nos solicitará la password y la confirmación de la password.

Para agregar nuevos usuarios, no tenemos que que usar la opción -c tan solo el comando sin más:

htpasswd /etc/svn-usuarios usuario2

Con esto tendremos 2 usuarios creados y las contraseñas cifradas en MD5.

Creando los repositorios

Usaremos un comando de svn para crear nuestros directorios. En este caso trabajaremos con 2 repositorios de ejemplo:

svnadmin create /var/www/svn/repo1
svnadmin create /var/www/svn/repo2

Daremos permisos a ambos directorios con el usuario de apache «www-data» en el caso de distribuciones Debian o el que usemos en nuestro Apache.

chown -R www-data:www-data /var/www/svn

Probando desde el navegador

La prueba que haremos será básica es acceder desde nuestro navegador a la ruta de nuestro SVN.

http://IP/svn/repo1 o http://IP/svn/repo2

Evidentemente si tenemos configurado un dominio pues podemos acceder a través del dominio.

Si todo ha ido correcto nos mostraría los ficheros de nuestro repositorio (en nuestro caso no hemos metido nada) después de habernos solicitad usuario y contraseña.

Comando básicos SVN

A continuación vamos a poner unos cuantos comandos básicos para trabajar con svn desde entornos Linux.

  1. Importando ficheros desde un directorio: svn import -m «Mi primera vez» /tmp/t1project/ file:///var/www/svn/repo1/
  2. Información acerca de tu proyecto: svn info http://localhost/svn/repo1 –username usuario1
  3. Recuperando información del servidor: svn co http://localhost/svn/repo1 /tmp/myfirstproject –username usuario2
  4. Añadiendo modificaciones: svn add fich3 –username usuario2 && svn commit -m “Modificado fichero 3” –username usuario2
  5. Revisando el historial: svn log http://localhost/svn/repo1 –username usuario1
  6. Ver el listado de ficheros actuales: svnlook tree /var/www/svn/repo1/

Algunas aclaraciones sobre los comandos usados:

  • Todos los comandos han sido ejecutados desde la propia máquina, por lo tanto usamos notaciones locales.
  • Estos comandos se pueden hacer para contenido remoto, evidentemente nos pedirá usuario y contraseña.

Clientes Windows SVN

La verdad que el único cliente Windows que había probado era Tortoise, pero he indagado un poco en la red y he encontrado una entrada en Wikipedia enumerando las distintas diferencias entre cada cliente.

Ver clientes Windows SVN en Wikipedia.

Conclusión

Como podéis observar la implementación es relativamente sencilla, es más si aún queremos rizar el rizo podemos forzar que se haga todo a través de navegación segura (https).

Aparte de ello esto generalmente lo suelen usar programadores para tener un control de versiones de su código.

2 comentarios en “Instalar Subversion y Autenticación por Apache”

    1. Buenas,

      En este tutorial se da por sentado que se tiene instalado apache directamente.

      Pero lo mejor es instalar desde los paquetes oficiales con yum , apt/aptitude.

      Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *