Instalando Subversion con Apache2 en Ubuntu

Ok, ahora toca ver como instalar el subversion e integrarlo con Apache2 todo esto en Ubuntu 7.10 :P, debería de ser similar para otras distros, sólo que los archivos estarán en otro lugar y algunos comandos podrían ser diferentes, pero debe funcionar para Ubuntu y las distribuciones basadas en el. Subversion (aka SVN) es un software de sistema de control de versiones diseñado específicamente para reemplazar a CVS. Y adivina que, es software libre, liberado bajo licencia Apache/BSD.

Este sistema de versionamiento se usa mucho en entornos de desarrollo, así el código se mantiene en un servidor, todo modifican lo mismo, sabes quien modificó el código, cuando lo hizo, que hizo, además de regresar a versiones distintas, tener por separado el código en desarrollo, el código estable o releases y código de prueba. Además podemos integrarlo con algún IDE (Integrated Development Enviroment), como con Eclipse que veremos en algún post futuro.

Como el post terminó quedando más largo de lo planeado, pues decidí cortarlo, haz click para terminar de leer.

Entonces primero debes de tener instalado, configurado y funcionando a Apache2. Ya que este listo tendremos que instalar el subversion y el módulo para Apache:

$ sudo apt-get install subversion libapache2-svn

Ahora vamos a crear un repositorio (así se le dice donde van los proyectos) subversion, personalmente yo creo un repositorio para cada proyecto que tengo. Este repositorio podrá estar en cualquier parte del sistema, por seguridad les recomiendo crearlo fuera del servidor web (usualmente: /var/www/), yo lo crearé en directorio /var/svn/. Recomiendo hacer todos estos pasos como root. Además este ejemplo constará de la creación de dos repositorios, llamados proyecto1 y proyecto2 (Dios que imaginación!!).

$ sudo su
# mkdir -p /var/svn/
# cd /var/svn/
# svnadmin create proyecto1
# svnadmin create proyecto2

Ahora explico, primero nos cambiamos como root, luego creamos el directorio /var/svn/, después nos cambiamos a ese directorio, ahora con el comando y su opción svnadmin create creamos dos repositorios: proyecto1 y proyecto2. Demasiado fácil, no lo crees?

Lo que sigue es crear un grupo para todos los usuarios que utilicen el subversion, y cambiar los permisos de la locación de los repositorios para que el usuario del Apache2 (por defecto www-data) tenga permiso para leer y modificar los ficheros.

# groupadd svn
# adduser www-data svn
# chown -R www-data.svn /var/svn/

Primero creamos un grupo llamado svn, luego agregamos el usuario www-data al grupo svn, después decimos que el directorio y su contenido pertenecen a www-data del grupo svn.

Ahora tenemos que configurar el Apache2, los archivos de configuración pueden variar de una distribución a otra, aquí me enfoco a Ubuntu, Debian y similares. Tenemos que crear un host virtual para cada repositorio, lo podemos hacer de dos maneras: 1) crear un archivo para cada repositorio (tal vez sería lo ideal), 2) Un solo archivo que contenga todos los repositorios. En este ejemplo me inclinaré por hacer archivos separados.

Entonces crearemos dos archivos, dentro del directorio /etc/apache2/sites-aviable/: mi_host1 (para proyecto1) y mi_host2 (para proyecto2). Añadimos al archivo mi_host1 lo siguiente:

<Location /svn/proyecto1>
DAV svn
SVNPath /var/svn/proyecto1
SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Repositorio Proyecto1"
AuthUserFile /etc/apache2/svn-auth
Require valid-user
</Location>

  • Location: Nombre del directorio raíz del repositorio. No se especifica el PATH completo, sólo el PATH a partir de la raíz de documentos del servidor web (podemos tener varios repositorios cada uno apuntando a un lugar del sistema de ficheros).
  • Dav svn: Activamos el repositorio a través del protocolo web-DAV.
  • SVNPath: Ruta completa al repositorio, esta si que es la ruta física del sistema de ficheros.
  • SVNIndexXSLT: Hoja de transformación con la que se visualizará el contenido del repositorio si accedemos desde un navegador.
  • AuthUserFile: Ruta al archivo de los password (puede existir un archivo por repositorio).
  • Require valid-user: Especifica que solo acepta usuarios válidos, o sea aquellos que introduzcan un nombre y contraseña correctos.

El archivo mi_host2, es muy similar al primero solo con algunos cambios como SVNPath y Location, podríamos usar dos archivos de password, en este ejemplo utilizaré el mismo archivo para ambos repositorios. Si el archivo de password es diferente, entonces AuthUserFile apuntaría a este archivo. El contenido de mi_host2 sería:

<Location /svn/proyecto2>
DAV svn
SVNPath /var/svn/proyecto2
SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Repositorio Proyecto 2"
AuthUserFile /etc/apache2/svn-auth
Require valid-user
</Location>

Ahora activamos los nuevos host virtuales:

# a2ensite mi_host1
# a2ensite mi_host2

Ahora tenemos que crear y llenar el archivo /etc/apache2/svn-auth con los nombres de usuario y password con acceso a los repositorios:

# htpasswd -cm /etc/apache2/svn-auth usuario1
# htpasswd -m /etc/apache2/svn-auth usuario2
# htpasswd -m /etc/apache2/svn-auth usuario3

La opción -c es para crear un nuevo archivo reemplazando al existente, si lo que quieres es modificar el archivo existente debes usar la opción -m del comando httpasswd. Al ejecutar cada instrucción, se te pedirá el password para cada usuario.

Copiamos las hojas de estilos que vienen con libapache2-svn al directorio raíz de la web:

# cp /var/www/apache-default/svnindex.* /var/www/

Reiniciamos el apache2 para que todo haga efecto:

# /etc/init.d/apache2 restart

Y con esto quedaría listo nuestro servidor de subversion. Ahora ya lo podemos usar para esto hay una serie de comandos de svn, que la verdad no se usar, en artículos posteriores veremos como conectar nuestros repositorios a Eclipse (Un gran IDE), para trabajar de manera más eficiente. Si quieres probar que funciona entra en el servidor que lo instalaste, por ejemplo yo lo hice en mi localhost. Entonces entra desde un navegador (recomiendo Firefox :D) a la dirección http://miservidor/svn/proyecto1 o proyecto2, te pedirá el usuario y pass (los cuales metiste en el archivo svn-auth con el comando htpasswd), con esto ya sabemos que nuestro SVN funciona correctamente.

xD Amarok Playing: 05. Various – Pista 5

Basado y modificado de: QuarkWiki.

Anuncios

Una respuesta

  1. […] apache y usando sqlite. Entonces es necesario tener instalado y funcionando un servidor web Apache, Subversion y […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: