25 de febrero de 2010

SUBVERSION + APACHE2 + SSL + INTERFACE WEB (websvn) en UBUNTU

Después de pelearme durante una buena temporada para conseguir que todo esto funcione junto en mi PC y sin darse de leches unos con otros, he decidido poner esta receta por que pienso que tal vez a algun@ mas le pueda ser útil.
  • Instalación de los paquetes necesarios:
$ sudo aptitude install apache2 openssl subversion libapache2-svn subversion-tools websvn
  • Fabricamos un certificado "casero"
$ sudo mkdir /etc/apache2/ssl
$ sudo RANDFILE=/dev/random openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
$ sudo chmod 600 /etc/apache2/ssl/apache.pem
  • Creando el repositorio
$ sudo cd /home/
$ sudomkdir svn
$ sudo svnadmin create svn/prueba
 
Damos de alta algunos usuarios:
 
$ sudo htpasswd -c -m /home/svn/.dav_svn.passwd user1

La opción -c sólo es necesaria la primera vez que ejecute este comando, a fin de crear el archivo de las contraseñas. Posteriormente ya no se ejecuta
 
$ sudo htpasswd -m /home/svn/.dav_svn.passwd user2

Por último otrogamos a la carpeta y a lo que esta contiene los permisos necesarios para que apache acceda a ella
 
$ sudo chown www-data:www-data -R svn
  • Configurando apache
Para que el tema nos sea mas sencillo primero vamos a sacar una copia de una plantilla de sitio web de las que vivene por defecto con apache 2
 
$ cd /etc/apache2/sites-available/
$ sudo cp default svn

Una vez hecho esto damos de alta a nuestro nuevo sitio web y damos tambien de alta un modulo de apache necesario
 
$ sudo a2ensite svn
$ sudo a2enmod ssl

A continuacion pasamos a editar nuesta copia de plantilla (svn), la editamos para adaptarla a nuestras necesidades. Recordad que es muy importante sustituir la linea "/home/svn/prueba" por la ruta a vuestro repositorio, "/svn/prueba" por la ruta a teclear despues de "https://nombrehost", y "/home/svn/.dav_svn.passwd" por la ruta a vuestro fichero de autenticaciones.
 
NameVirtualHost *:443

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem

LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so

...


   DAV svn
   SVNPath /home/svn/prueba
   AuthType Basic
   AuthName "My Subversion Repository"
   AuthUserFile /home/svn/.dav_svn.passwd
   Require valid-user

Creo que las lineas
 
LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so

Podrían quitarse y sustituirse por estos comandos de consola:
 
$ sudo a2enmod dav
$ sudo a2enmod dav_svn
$ sudo a2enmod ssl

Pero no estoy muy seguro :S
  • Interface web
$ sudo dpkg-reconfigure websvn

Seguimos las instrucciones que aparecen, y simplemente debemos decirle a websvn en dónde están nuestros repositorios subversion
Por ultimo reiniciamos apache
 
$ sudo apache2ctl restart

Si todo salió bien poniendo https://localhost/websvn en nuestro navegador web, deberiamos ver nuestros repositorios y sus archivos
  • Nota
Si accedemos a nuestros repositorios vía https://localhost/svn/prueba nos pide nombre de usuario y contraseña. Sin embargo de la forma https://localhost/websvn no. Sería bueno también limitar el acceso al entrar al repositorio de forma "visual". Seguiré investigando, si hay noticias edito

2 comentarios:

  1. Yo en el curro he puesto apache2 con ssl para un servidor python y no he tenido mayor problema. A no ser que el problema te viniese de subversión.

    ResponderEliminar
  2. Si, tu intenta juntar en una misma maquina las 4 cosas del post y luego me cuentas que tal te ha ido, que apache y ssl en ubuntu se montan con la minga.
    Pero el modulo dav_svn y de apache para poder tener acceso a subversion hay que configurarlo a pelo majete...

    ResponderEliminar