Servir un repositorio subversion con Apache-2.0

Cómo montar un repositorio subversion, con Apache, para que sea accesible remotamente

Ingredientes

  • subversion
  • apache2
  • apache2-utils
  • libapache2-svn

Crear el repositorio

Un buen sitio es /var

root@example:/var# mkdir svn
root@example:/var# cd svn
root@example:/var/svn# svnadmin create repo

Servir el repo con apache

Lo más sencillo es editar el fichero /etc/apache2/mods-available/dav_svn.conf. Tienes que añadir un bloque similar a éste:

<Location /svn/myrepo>
  DAV svn
  SVNPath /var/svn/repo
</Location>

Ahora hay que asegurarse de que el módulo DAV_SVN está activado. Normalmente estará activado automáticamente, pero si no es tu caso, se hace con:

# a2enmod dav_svn

Permisos

Hay que permitir que Apache pueda leer y escribir en el repositorio:

# chown -R root.www-data /var/svn
# chmod -R g+rw /var/svn

Cargar los cambios

No se te olvide…

# /etc/init.d/apache2 reload

Acceso remoto

El repositorio es accesible, para clientes subversion, webdav o navegadores web convencionales, a través de:

http://example.com/svn/myrepo/

Con esto tendrás un repositorio complemente público. Todo el que quiera podrá acceder tanto para descargar como para subir ficheros. Como eso normalmente no es lo deseable, sique leyendo…

Repositorio privado

Si lo que quieres es que solo unos usuarios concretos puedan acceder al repositorio tienes que definirlo de este modo:

<Location /svn/myrepo>
  DAV svn
  SVNPath /var/svn/repo
 
  AuthType Basic
  AuthName "My Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
 
  Require valid-user
</Location>

La sistaxis es análoga a la que se utiliza en Apache para restringir el acceso a un directorio. El fichero /etc/apache2/dav_svn.passwd es un fichero de claves típico de Apache. Para añadir usuarios utiliza el método habitual:

# htpasswd2 /etc/apache2/dav_svn.passw usuario

En este caso es muy recomendable habilidar SSL en el servidor Apache, pues de otro modo la contraseña viajaría ‘en claro’ a través de la red.

Acceso restringido

Otra posibilidad (muy común en el mundo del software libre) es tener un repositorio accesible para todo el mundo, pero sólo modificable por ciertos usuarios. En este caso la configuración sería algo como:

<Location /svn/myrepo>
  DAV svn
  SVNPath /var/svn/repo
 
  AuthType Basic
  AuthName "My Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
 
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>

Referencias

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Correccion al crear usuarios

Hay que usar el parárametro "-c" para crear el fichero "/etc/apache/dav_svn.passw", por ejemplo:

# htpasswd -c /etc/apache2/dav_svn.passw xyz
New password:
Re-type new password:
Adding password for user xyz

Imagen de Lk2

Si no existe

Eso solo cuando crees el primer usuario y si no existe el fichero con anterioridad... básicamente -c le dice que cree el fichero

Imagen de david.villa

Setting up Subversion and websvn on Debian

Setting up Subversion and websvn on Debian | es

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de Lk2

Mútiples repositorios con contraseñas

¿Cómo se hace para tener varios repositorios con contraseñas? Es que tengo funcionando un repositorio perfectamente con contraseña, pero he intentado habilitar otros 2 más y funcionan, pero no usan para nada las contraseñas que les he dado ...

*************************************************************
Dime con quien deambulas y te manifestaré tu idiosincracia

Imagen de david.villa

Debería...

…bastar con indicar un AuthUserFile distinto para cada uno

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de nacho

Faltan módulos

Yo he tenido que habiltar algunos módulos más para poder acceder. Me parece que ha funcionado cuando he puesto #a2enmod authn_file

Previamente también cargué todos los módulos auth_*, pero no sé si serán necesarios...

Nacho

Imagen de Lk2

Util no, utilísimo

Que buena recete ... a ver si termino de instalarle la Debian al servidor de mi casa y lo pongo con svn y todo ... Smiling

*************************************************************
A quien ubérrima conífera se adosa, óptima umbría le entolda