Servidor Apache2 + SSL + subversion + websvn + DAV

En esta entrada vamos a tratar la instalación y configuración básica de un servidor de repositorios y control de versiones con subversion bajo Debian squeeze.

Primero descargamos e instalamos los paquetes necesarios y sus dependencias, si no los tuviesemos ya, con sus configuraciones por defecto:

# apt-get install apache2 libapache2-mod-php5 openssl \
subversion libapache2-svn subversion-tools websvn

La configuración por defecto de websvn generará un archivo de configuración que interferirá con nuestros propósitos, por ello puedes borrarlo o comentar su contenido:

# rm /etc/apache2/conf.d/websvn

Acto seguido generamos el certíficado para la conexión segura, que lo haremos de la siguiente forma:

# mkdir /etc/apache2/ssl
# RANDFILE=/dev/random openssl req $@ -new -x509 -days 365 -nodes \
    -out /etc/apache2/sslcerts/websvn.pem \
    -keyout /etc/apache2/sslcerts/websvn.pem

# chmod 600 /etc/apache2/sslcerts/websvn.pem

En el momento de generar un certificado nos solicitará cierta información acerca de este, tales como el país, ciudad/provincia, empresa, área/departamento, etc.
El uso de un certificado generado de esta forma hará que el navegador muestre una alerta de seguridad. Si queremos evitar esto hay que pasar por caja y comprar un certificado a una Autoridad de Certificación.

Configuración de Apache2 + SSL + websvn

Pasamos a configurar el acceso seguro mediante SSL en Apache2, así como la ubicación de los repositorios.

El directorio donde alojaremos los repositorios, recordemos que debe estar accesible para websvn:

# mkdir /var/svn
# chown www-data:www-data /var/svn
# chmod 655 /var/svn

Creamos el archivo de configuración de Apache2:

# vi /etc/apache2/sites-available/svn

Contenido que agregaremos a este archivo:

NameVirtualHost *:443
<VirtualHost *:443>
        ServerAdmin default@exmaple.com
        SSLEngine On
        SSLCertificateFile /etc/apache2/sslcerts/websvn.pem

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>

        Alias /websvn /usr/share/websvn
        <Directory /usr/share/websvn>
                DirectoryIndex index.php
                Options FollowSymLinks
                Order allow,deny
                Allow from all
                AuthType Basic
                AuthName "Subversion Repository"
                AuthUserFile /var/svn/.auth
                Require valid-user
       </Directory>

       <Location /svn/>
                DAV svn
                SVNParentPath /var/svn/
                SVNListParentPath on
                AuthType Basic
                AuthName "Subversion Repository"
                AuthUserFile /var/svn/.auth
                Require valid-user
       </Location>

</VirtualHost>

Ahora agregamos usuarios que tendrán permiso para acceder a nuesto repositorio:

# touch /var/svn/.auth
# chown www-data:www-data /var/svn/.auth
# htpasswd -m /var/svn/.auth nombre_del_usuario

Para agregar varios usuarios repetir la última línea tantas veces como sea necesario. Recuerda que con esta configuración todos los usuarios tendrán los mismos privilegios de acceso. Para afinar puedes consultar la documentación de mod_authz_svn

Observación de seguridad: el archivo con los datos de usuarios y contraseñas encriptadas únicamente sería accesible desde el exterior mediante el intérprete DAV. Si aun así queremos asegurarnos que no es accesible podemos agregar una directiva de seguridad en /etc/apache2/sites-available/svn, dentro del apartado VirtualHost:

<Files ~ "/var/svn/.auth">
Order allow,deny
Deny from all
</Files>

Activamos el sitio en Apache:

# ln -s /etc/apache2/sites-available/svn \
/etc/apache2/sites-enabled/svn

O bien:

# a2ensite svn

Tras esto reiniciamos el servicio Apache:

# /etc/init.d/apache2 restart

Y ya podremos verlo!! Por supuesto debemos autenticarnos antes.
https://direccion_de_mi_sitio/websvn/ para acceder a websvn
https://direccion_de_mi_sitio/svn/ para acceder a subversion

Configurar y usar repositorios

Para agregar un nuevo repositorio:

# cd /var/svn
# mkdir mirepositorio
# svnadmin create mirepositorio
# chown www-data:www-data mirepositorio -R

En la interfaz de websvn aparece un repositorio de muestra llamado “repos 1″, para eliminar este hay que editar el archivo /etc/websvn/svn_deb_conf.inc y comentar o eliminar la línea donde se crea este.

...
#$config->addRepository("repos 1", "file:///var/svn");
...

Y ya por último, cómo agregar la información al repositorio. En mi caso he utilizado el cliente TortoiseSVN. Su uso es tan sencillo como abrir el “Repo-browser”, dar la dirección del repositorio (eg: https://misitio/svn/repositorio1), autenticarse y arrastrar los archivos a añadir o actualizar.

Fuentes consultadas:

Deja un comentario

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

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

Archivos