Pensamientos, agilidad, desarrollo, opensource, linux y cloud computing.
Añadir Acceso via Apache a Subversion en TurnkeyLinux Revision Control
La herramienta TurnkeyLinux Revision Control ofrece de manera rápida un servidor de control de versiones con 4 conocidas y muy utilizadas herramientas para dicho trabajo: Subversion, Git, Bazaar y Mercurial. En lo personal yo lo utilizo más que todo para Subversion y Git. A pesar de venir preconfigurado con las opciones más deseables, en lo personal extraño la posibilidad de poder acceder subversion a través del protocolo http (usando Apache). A continuación explico el procedimiento para agregar esta característica a esta herramienta:
Acceder al servidor via ssh (o via webshell a través de http://ip-del-servidor:12320) con el usuario root y el password establecido al momento de la instalación.
Primero debemos instalar el módulo de apache que permite integrar svn. Para ello ejecutamos el siguiente comando (No olvidar ejecutar apt-get update si es la primera vez que instalamos paquetes en este servidor):
1
$ apt-get install libapache2-svn
Luego procedemos a crear un archivo para guardar los usuarios y passwords encriptados para acceder a los repositorios. El archivo estará ubicado en /etc/subversion y lo llamaremos svn-auth-file. Lo crearemos usando la herramienta de creación de usuarios de Apache htpasswd. Con la opción -cm creamos el archivo por primera vez. Luego para añadir usuarios adicionales solo usaremos -m. Nos preguntará el password del usuario 2 veces. Podemos revisar el archivo generado para ver el listado de usuarios.
Luego debemos editar el archivo de apache para el sitio websvn. Vamos a agregarle seguridad a dicho sitio utilizando nuestro nuevo archivo de usuarios. Para esto editamos el archivo /etc/apache2/conf.d/websvn y agregamos 4 lineas en la descripción del sitio. El archivo debe quedar como sigue:
123456789101112
Alias /svn /usr/share/websvn
<Directory /usr/share/websvn>
DirectoryIndex index.php
Options FollowSymLinks
Order allow,deny
Allow from all
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/subversion/svn-auth-file
Require valid-user
</Directory>
Configuramos el apache para poder acceder a los repositorios. Para ello creamos y editamos el archivo /etc/apache2/conf.d/svnprivate con el siguiente contenido:
Procedemos a recargar apache para que tome las nuevas configuraciones. Debemos ademas darle a apache la propiedad de los archivos de los repositorios de subversion, que estan ubicados en /srv/repos/svn
12
$ service apache2 reload
$ chown -R www-data:www-data /srv/repos/svn/
Hasta aqui, ya podremos acceder via http a nuestros repositorios, puedes probar con tu navegador web abriendo el url http://ip-del-servidor/svn-private/nombredelrepositorio . Aparecerá el dialogo estándar de apache que solicita el usuario y la contraseña. Introducimos los datos del usuario y podremos ver el contenido del repositorio:
Agregando Acceso Seguro SSL (https)
Si intentamos hacer checkout con el cliente subversion via https, vamos a recibir el siguiente error:
“Al certificado del servidor le falta el atributo commonName en el nombre del sujeto”
El cliente de subversion requiere, para poder acceder via https a un repositorio, que el certificado del servidor contenga el atributo commonName, cosa que el certificado por defecto no trae. Por tanto debemos crear un certificado nuevo que contenga ese atributo. Para esto, ejecutamos los siguientes comandos (utilizare el dominio svn.ejemplo.com como ejemplo):
1. Instalamos la herramienta openssl:
1
$ apt-get install openssl
Creamos la llave del certificado utilizando como nombre el dominio (esto es para recordar que la llave pertenece a ese dominio)
Editamos el archivo /etc/apache2/sites-available/default-ssl para configurar el acceso utilizando nuestro certificado recién creado. Para ello modificamos las lineas siguientes:
Desactivamos y activamos el sitio para que tome los cambios, y finalmente recargamos la configuración de apache:
123
$ a2dissite default-ssl
$ a2ensite default-ssl
$ service apache2 reload
Listo, ahora la primera vez que intentemos acceder al repositorio con el cliente de subversion, nos alertará de que el certificado es emitido por una autoridad marcada como confiable. Simplemente respondemos que aceptamos permanentemente el certificado. Luego intentamos de nuevo y nos pedira el nombre de usuario y password y podremos terminar de acceder al codigo fuente.