Este documento describe los pasos para instalar y configurar un servidor Apache con módulos SVN para habilitar el acceso a repositorios SVN a través de HTTP. Inicialmente se instala y configura Apache2, habilitando los módulos DAV y SVN. Luego se instala SVN y crea un directorio raíz para los repositorios. Finalmente se crean archivos de autenticación y permisos y se definen los permisos y propietarios de los directorios para permitir el acceso compartido a los repositorios SVN a través de Apache.
1. 1. Entrar como root.
Comando: sudo su
2. Instalar y configurar apache2.
Commando: sudo apt-get install apache2
En un momento de la instalación te comunica que se utilizará una cantidad
determinada de espacio, y te pregunta si deseas continuar la instalación. Colocas “y”,
presionas la tecla Enter y continúa con la instalación.
2.1 Editar el fichero de configuración httpd.conf
Comando: nano /etc/apache2/httpd.conf
2.2 Adicionarle la línea ServerName localhost
2.3 Habilitar los módulos necesarios.
El repositorio vamos a instalarlo integrado con apache, para poder navegarlo sobre el
protocolo http, por tanto es necesario habilitar al apache los módulos dav_svn y
authz_svn.
Comandos: a2enmod dav_svn y a2enmod authz_svn.
2. 2.4 Configurar integración
Para que el subversión de integre con apache, es necesario decirle al apache donde va a
estar la raíz del repositorio, y algunas otras configuraciones. Para esto ir al fichero
dav_svn.conf que se encuentra en la dirección etc/apache2/mods-available/, buscar los
tags <location></location> y en caso que no estén comentados, comentarlos. Ir al final del
documento y adicionar las siguientes definiciones:
<Location /svn/>
DAV svn
SVNParentPath /svn
SVNListParentPath on
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile /svn/auth.pwd
AuthzSVNAccessFile /svn/access.af
Require valid-user
</Location>
Definición Descripción
Location /svn/ Esto indica la manera de acceso al repositorio, es decir, el
ip-svn. Importante, el símbolo / al final es necesario para
poder listar todos los repositorios a través del apache.
DAV svn Le indica al módulo DAV del apache que se va a manejar
un repositorio de tipo subversión.
SVNParentPath /svn Indica cual es la carpeta que contiene los repositorios, en
este caso está en la raíz del sistema y se llama svn, pero
puede encontrarse en otro lugar y llamarse diferente.
SVNListParentPath on Habilita la opción de listar todos los repositorios partiendo
del SVNParentPath especificado.
AuthType Basic Especifica el tipo de autenticación.
AuthName Especifica para que se utilizará la autenticación. Solo es
informativo.
AuthUserFile Indica el archivo donde se encuentran el par
usuario/contraseña mediante el cual se controlará el
acceso al repositorio SVN.
AuthzSVNAccessFile Indica el archivo de configuración que especifica los
permisos sobre cada repositorio.
Require valid-user Especifica que solo usuarios definidos podrán acceder al
repositorio y que solicite autenticación cada vez que se
intente acceder al SVN.
3. 2.5 Reiniciar el servicio apache2
Comando: /etc/init.d/apache2 restart
3. Instalar y configurar SVN.
Comando: apt-get install subversion libapache2-svn
En un momento de la instalación te comunica que se utilizará una cantidad determinada
de espacio, y te pregunta si deseas continuar la instalación. Colocas “y”, presionas la tecla
Enter y continúa con la instalación.
3.1 Después de la instalación se crea la carpeta donde se almacenarán los repositorios. La
carpeta se llamará svn y se encontrará en la raíz del sistema, siendo consecuente con lo
definido anteriormente.
Comando: mkdir svn
3.2 Posteriormente, se deben crean dos ficheros:
auth.pwd: Tal como se especificó en el punto 2.4, aquí se almacenarán los usuarios y
sus claves de acceso al repositorio.
access.af: Tal como se especificó en el punto 2.4, aquí se almacenarán el acceso a cada
repositorio.
Para crear el fichero el fichero auth.pwd, se debe utilizar
Comando: htpasswd -c /svn/auth.pwd usuario1
4. En este commando se le especifica que el fichero sea creado con el nombre
auth.pwd, en el directorio /svn, además, se le indica que es un archivo que
contendrá usuarios y contraseñas mediante la directiva htpasswd, y al final del
mismo se le especifica que usuario se desea crear: usuario1.
Al ejecutar este comando, el sistema requiere una contraseña y su verificación, como
se muestra en la figura. De esta manera el fichero creado contiene el nombre del
usuario con la contraseña encriptada.
Para adicionar más usuarios, se ejecuta nuevamente el mismo comando, excluyendo
el parámetro –c, que indica que el archivo debe ser creado nuevo.
Comando: htpasswd /svn/auth.pwd usuario2
NOTA: Cada vez que se adicione un usuario nuevo es necesario reiniciar el servidor
apache
Comando: /etc/init.d/apache2 restart
El fichero access.af, es un fichero de texto plano, donde se especifica, por cada
repositorio, que usuarios tendrán acceso y el nivel del mismo.
Para crear el fichero ejecutar:
Comando: touch access.af
Una vez creado el fichero se debe editar para colocar la configuración necesaria, para
esto ejecutar
Comando: nano /svn/access.af
Lo primero que se definirá, si aplica, son los grupos, son muy útiles porque evitan la
repetición de los nombres de usuarios innecesariamente. La sintaxis es:
[groups]
grupo1 = usuario1, usuario2, usuario3…
Se puede definir que todos los usuarios tendrán acceso de lectura a todos los
repositorios con la directiva:
[/]
*= r
5. Posteriormente se debe definir por cada repositorio, los usuarios que tendrán acceso
y el nivel del mismo, para esto se puede utilizar los grupos definidos, o simplemente
los nombres de usuarios. El acceso está especificado por dos permisos: r significa
permisos de lectura, y w significa permisos de escritura. La sintaxis es:
[REPOSITORIO:/]
@grupo1 = rw
usuario4 = r
Se muestra el fichero de configuración de los repositorios actuales.
3.3 Para crear un repositorio nuevo, se debe
Comando: svnadmin create Repo_NEW
Posteriormente definir en el archivo access.af, que usuario tendrán acceso al mismo y
cuales permisos.
3.4 Definir propietario y permisos.
Cada vez que se cree un repositorio nuevo, es muy importante especificarle que el
propietario (owner) es el usuario www-data, y que pertenece al grupo www-data,
ambos corresponden al usuario y grupo con el que corre el apache. Esto es requerido.
Para no entrar a cada repositorio a hacerlo, simplemente se le puede cambiar el owner
a todo el contenido que se encuentre bajo la carpeta svn.
Comando: chown -R www-data:www-data svn/
6. Posteriormente, es necesario darle permisos al usuario owner (www-data) sobre todo
el contenido de la carpeta svn.
Comando: chmod -R 777 svn/