El propósito en este artículo es explicar una opción para configurar Apache2, Múltiples repositorios con Subversión, Acceso a los repositorio mediante WebDav y OpenSSL en Ubuntu Server (Casi un Debian).
Como siempre menciono en los artículo en lo que el tema de configuración trata, esta configuración fue la que me funcionó de acuerdo a la experiencia al momento de configurar los servicios que a lo largo de este How To se mencionan, si alguien tiene alguna sugerencia, critica, etc. para mejorar esta configuración será bien recibida.
Por favor no corte y pgue todo lo que se escribe ejecute los comando y lea las instrucciones antes de hacer algo.
Habrá momento de la configuración que no me detendré a explicar asumiendo que son cosas sencillas y se deben manejar.
Lo primero que haremos es instalar los siguientes paquetes.
El Servidor Web Apache.
#aptitude install apache2
Instalamos Subversión y el modulo de apache de este Sistema de Control de Versiones.
#aptitude install subversión #aptitude install libapache2-svn
Ya con estos paquetes instalados podemos crear repositorios para ilustrar el how to crearemos dos repositorios en el directorio que mejor nos parezca en mi caso los cree en /var/svn/.
Creamos el directorio svn
#mkdir /var/svn/
Y ahora creamos los repositorios.
#svnadmin create /var/svn/web1 #svnadmin create /var/svn/web2
Donde web1 y web2 son nuestros repositorios, para no tener problema de permisos con apache le asignare los permisos necesarios, para hacer esto le asignaré el directorio donde se encuentran nuestros repositorios (/var/svn/) y todo lo que este ahí adentro al usuario de apache (www-data), ejecutando el siguiente comando.
#chown -R www-data:www-data /var/svn/*
Ahora colocaremos un archivo en el directorio que mas les guste para que nos sirva como data de prueba en nuestro repositorio web1 con la finalidad que el mismo este haciendo el trabajo.
#echo “Test Repositorio” > /tmp/test.txt
Subimos este archivo al repositorio y verificamos que el mismo este el repositorio, para referencia sobre los comando de svn pueden consultar aquí.
#svn import –m “Import inicial del repositorio web1” \ /tmp/ svn+ssh://127.0.0.1/var/svn/web1 #svnlook tree /var/svn/web1
Hacemos un checkout del repositorio y lo guardaremos en el directorio checkout.
#svn co svn+ssh://127.0.0.1/var/svn/web1 checkout
Si verificamos que contiene este directorio el mismo deberá contener el archivo test.txt
#ls –l checkout
Hasta aquí hemos configurado el Subversión, ahora corresponde hacer la configuración al WebDav de Subversión el cual nos va a permitir acceder al repositorio mediante apache.
Para esto cargamos los siguientes módulos.
#a2enmod dav #a2enmod dav_svn
Una vez cargados estos módulos creamos el ficheros de acceso.
#htpasswd –c /etc/apache/svn.passwd user1 #htpasswd /etc/apache/svn.passwd user2
Algo importante al momento de crear este fichero se puede observar en el comando de arriba que la primera línea tiene la opción –c esto se hace solamente cuando creamos por primeras el fichero si colocamos esta opción ya creado el fichero simplemente borrara los usuarios que estén creados.
ditamos el archivo /etc/apache2/mods-available/dav_svn.conf, en este archivo indicamos donde se encuentra nuestro repositorio vamos a configurar web1 para los demás repositorios el lo mismo, el url que se encargara de atender la petición, el fichero de acceso (svn.passwd) y el tipo de autenticación.
Este es archivo deberá quedar así:
10 11 12 13 14 15 16 | <location>
DAV svn
SVNPath /var/svn/web1
AuthName “Subversion Repositorio web1”
AuthUserFile /etc/apache2/svn.passwd
Require valid-user
</location> |
Recargamos la configuración de apache
#/etc/init.d/apache2 force-reload
Nos queda probar si esta funcionando Subversión, para esto abrimos nuestro navegador y colocamos http://localhost/svn/web1, nos debe solicitar usuario y clave, estos datos fueron los que se colocaron al momento de crear el fichero svn.passwd. Una vez autenticado podremos ver el archivo test.txt que subimos inicialmente, de la misma forma podremos hacer checkout del repositorio colocando la misma url.
http://localhost/svn/web1 checkout
Esta es una vista muy básica del repositorio mediante una interfaz web para mejorar esta presentación vamos a instalar websvn y enscript este paquete nos muestra el código fuente coloreado de acuerdo al lenguaje que se utilice, pero ante debemos instalar php ya que websvn esta hecho en php.
#aptitude install php5 #aptitude install websvn
dejo una imagen que muestra al momento de configurar websvn.
#aptitude install enscript
Con esto si volvemos a colocar en el navegador http://localhost/svn/web1 debe mostrarse más amigable el contenido del repositorio.
El siguiente paso es configurar el SSL, para efecto del How to yo coloco la configuración del SSL para todo el sitio esto significa que escucha por el puerto 80 en caso que ustedes desean ponerlo por otro puerto simplemente sustituyan 80 por por el puerto que ustedes prefieran normalmente se coloca en el puerto 443.
Lo primero que haremos es generar nuestro Certificado Digital.
#openssl req $@ -new -x509 -days 365 -nodes -out \ /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
Al ejecutar ese comando le solicitara cierta información que debe colocar.
Una vez generado el certificado editamos el archivo /etc/apache2/sites-available/default y debera quedar algo como este.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | NameVirtualHost *:80 <virtualhost> ServerAdmin admin@ser.com DocumentRoot /var/www/ SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so <directory> Options FollowSymLinks AllowOverride All </directory> <location> Options FollowSymLinks order allow,deny allow from all AuthType Basic AuthName "Subversion Repository" Require valid-user AuthUserFile /etc/apache2/svn.passwd </location> <directory> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all RedirectMatch ^/$ /principal/ </directory> ServerSignature On </virtualhost> |
Volvemos a cargar la configuración de nuestro servidor web.
#/etc/init.d/apache2 force-reload
Solo nos queda ingresar a nuestro sitio vía https. https://localhost/
Si quieren probar toda esta configuración pero en la web y no de manera local pueden consultar Servidor Web con Dirección IP dinamica.
De esta manera a quedado configurado nuestro servidor de manera segura, espero les sirva esta configración.
Enlaces con los cuales me apoye al momento de hacer la configuración.
May 21st, 2008 at 4:00 pm
[...] http://cachi.temiga.org/2008/02/11/montando-apache-ssl-subversion-webdav-websvn-en-ubuntu-server/ [...]