Instalando Apache + SSL + Subversion + WebDAV + WebSVN en Ubuntu Server.

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.

config2websvn.png

#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.

http://blog.odonnell.nu/32.html

http://www.reviewingit.com/index.php/content/view/62/1/

  • Share/Save/Bookmark

1 Comment

Other Links to this Post

  1. Division entre Cero » Blog Archive » Organización, sistema y trabajo — May 21, 2008 @ 4:00 pm

RSS feed for comments on this post. TrackBack URI

Leave a comment