Instalación de Subversion y Apache en Ubuntu

4
30177

Instalación de Subversion y Apache en Ubuntu

Índice de contenidos.

1. Introducción

Este tutorial muestra los pasos necesarios para instalar un Subversion accesible a través de un servidor Apache en un sistema operativo Linux (concretamente Ubuntu).
Hay muchas formas de configurar el acceso y seguridad de Subversion, la que se muestra en este tutorial es una de ellas pero no necesariamente se considera la mejor.

2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Asus G50Vseries (Core Duo P8600 2.4GHz, 4GB RAM, 320 GB HD).
  • Sistema operativo: Ubuntu Desktop 8.04 (Hardy), Kernel: 2.6.24
  • Subversion 1.4.6
  • Apache 2.2.8

3. Instalación de Subversion

Para instalar subversion seguimos los pasos planteados en el siguiente tutorial de Alejandro.
Instalar Subversion

Los resumimos aquí:

apt-get install subversion subversion-tools

Creamos el usuario y grupo svn. Creamos el directorio /var/lib/svn donde almacenaremos el repositorio y le asignamos los permisos necesarios al grupo svn.

4. Instalación de Apache

Para hacer accesible nuestro subversion a través de HTTP vamos a instalar Apache. Para ello instalamos el módulo de apache-svn

apt-get install apache2 libapache2-svn

5. Configuración del repositorio

Para crear el repositorio lo haremos a través de la configuración de Apache. Para ello vamos al directorio /etc/apache2/mods-enabled y editamos el fichero dav_svn.conf

Descomentamos la línea y ponemos el nombre a nuestro repositorio, por ejemplo

Habilitamos el repositorio descomentando la línea DAV svn

Indicamos el path a nuestro repositorio SVNPath /var/lib/svn/repoJuan

Habilitamos la seguridad descomentando las siguientes líneas

AuthType Basic

AuthName «Subversion Repository»

AuthUserFile /etc/apache2/dav_svn.passwd

Bloqueamos el acceso al repositorio para que no sea accedido por ningún usuario que no esté permitido

 
      Require valid-user 

Finalmente el fichero queda así

 

  # Uncomment this to enable the repository 
  DAV svn 

  # Set this to the path to your repository 
  SVNPath /var/lib/svn/repoJuan 

  # Alternatively, use SVNParentPath if you have multiple repositories under 
  # under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...). 
  # You need either SVNPath and SVNParentPath, but not both. 
  #SVNParentPath /var/lib/svn 

  # Access control is done at 3 levels: (1) Apache authentication, via 
  # any of several methods.  A "Basic Auth" section is commented out 
  # below.  (2) Apache  and , also commented out 
  # below.  (3) mod_authz_svn is a svn-specific authorization module 
  # which offers fine-grained read/write access control for paths 
  # within a repository.  (The first two layers are coarse-grained; you 
  # can only enable/disable access to an entire repository.)  Note that 
  # mod_authz_svn is noticeably slower than the other two layers, so if 
  # you don't need the fine-grained control, don't configure it. 

  # Basic Authentication is repository-wide.  It is not secure unless 
  # you are using https.  See the 'htpasswd' command to create and 
  # manage the password file - and the documentation for the 
  # 'auth_basic' and 'authn_file' modules, which you will need for this 
  # (enable them with 'a2enmod'). 
  AuthType Basic 
  AuthName "Subversion Repository" 
  AuthUserFile /etc/apache2/dav_svn.passwd 

  # To enable authorization via mod_authz_svn 
  #AuthzSVNAccessFile /etc/apache2/dav_svn.authz 

  # The following three lines allow anonymous read, but make 
  # committers authenticate themselves.  It requires the 'authz_user' 
  # module (enable it with 'a2enmod'). 
   
      Require valid-user 
   


6. Añadir usuarios al Subversion

Para añadir los usuarios con permisos de acceso a nuestro repositorio los añadimos al grupo svn de la siguiente forma:

usermod -G svn juan

Para que el subversion pueda gestionar las credenciales de los usuarios creamos el fichero /etc/apache2/dav_svn.passwd que anteriormente habilitamos en el fichero de configuración del repositorio dav_svn.conf (nos pedirá introducir la contraseña para el usuario):

htpasswd -c /etc/apache2/dav_svn.passwd juan
New password: 
Re-type new password: 
Adding password for user juan

7. Creación del repositorio

Ya únicamente nos queda crear el repositorio que configuramos anteriormente llamado repoJuan. Para ello utilizamos la herramienta svnadmin instalada anteriormente
mediante el paquete subversion-tools

svnadmin create /var/lib/svn/repoJuan

Una vez creado el repositorio es aconsejable crear los directorios base del subversrion trunk, tags y branches.

sudo svn mkdir -message="Directorios base del subversion" \
  file:///var/lib/svn/repoJuan/trunk \
  file:///var/lib/svn/repoJuan/tags \
  file:///var/lib/svn/repoJuan/branches

Si todo ha ido bien nos aparecerá algo como

Commit de la revisión 1.

Por último queda dar permisos al usuario del Apache para que pueda acceder al repositorio

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

Ya solo nos queda reiniciar el Apache para que coja la configuración que acabamos de montar.

/etc/init.d/apache2 restart

Al reiniciar el Apache puede que nos de el siguiente error:

apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName

Para solucionarlo editamos el fichero /etc/apache2/httpd.conf y le añadimos la línea:

ServerName localhost

Finalmente para acceder a nuestro repositorio entramos con el navegador a la dirección http://localhost/repoJuan

8. Conclusión

Como véis la instalación de Subversion y Apache no tiene mucho más misterio por lo que no hay excusas para montarlo en cualquier organización o incluso en cualquier proyecto personal que estemos realizando. De esta manera tendremos un control de versiones de nuestros archivos y estaremos siempre a salvo de pérdidas o errores.

4 COMENTARIOS

  1. Hola Juan, muy bueno el tutorial.
    Quisiera saber si el Tortoisse es el mejor cliente para el Subversion, y si hay que agregar permisos o algo con las nuevas versiones de Subversion que incorporan apache.
    Gracias, Diego.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad