Instalación de WebDAV en Apache

WebDAV es el acrónimo de Web-based Distributed Authoring and Versioning, que viene a significar Autoría y Versionado distribuido basado en Web, que quizás tampoco diga mucho a algunas personas, pero que quedará bastante claro con un ejemplo. La naturaleza de la información existente en el web es básicamente de solo lectura, una persona solicita acceder a una página web y el servidor le responde con una copia de dicha página, que el usuario puede ver en su navegador. Sin embargo, no hay ningún medio definido en el protocolo HTTP de que un usuario pueda modificar una página o crear una nueva, para ello es habitual tener que recurrir a otros protocolos como ftp o sftp. WebDAV es un protocolo construido sobre HTTP, al cual complementa con un conjunto de instrucciones que permiten esta comunicación bidireccional, ofreciéndonos la posibilidad de crear, modificar o mover documentos en un servidor remoto, y que incluso nos permite construir sistemas de archivos distribuidos accesibles desde cualquiers sitio.

Para poder utilizar WebDAV por lo tanto necesitamos dos cosas, un servidor que entienda el protocolo y un cliente que pueda comunicarse con el servidor. En cuanto a lo segundo, la mayoría de los sistemas operativos modernos (Windows XP, Linux, Max OS X) permiten conectarnos transparentemente con servidores WebDAV, aunque también existen multitud de aplicaciones clientes desarrolladas por terceras empresas y que pueden ofrecer funcionalidades complementarias. Por lo tanto tenemos un único punto por resolver para poder empezar a usar WebDAV y es montar un servidor que hable este protocolo, para lo que vamos a utilizar el módulo mod_dav que viene incluido con Apache 2.0

Hace unos meses publiqué un artículo en el que se explicaba cómo instalar Apache 2 con MySQL y PHP4, ahora voy a dar algunas indicaciones sobre como instalar y configurar el módulo mod_dav, pero conviene que leas ese árticulo si tienes previsto compilar e instalar apache desde cero. Si ya partes de una compilación e instalación anterior, conviene ejecutar un make clean antes de nada.

Instalando mod_dav

Para instalar mod_dav lo primero que necesitamos es compilar su módulo, para lo que utilizaremos la siguiente configuración:

bash# ./configure --prefix=/usr/local/apache 
--enable-cache=shared --enable-deflate=shared 
--enable-disk-cache=shared --enable-file-cache=shared 
--enable-mem-cache=shared --enable-headers=shared 
--enable-usertrack=shared --enable-ssl=shared 
--enable-http --enable-proxy=shared 
--enable-proxy-http=shared --enable-rewrite=shared 
--enable-so --enable-info=shared 
--enable-speling=shared --enable-mime-magic=shared 
--enable-suexec=shared --enable-cgi=shared 
--enable-vhost_alias=shared
--enable-dav=shared --enable-dav-fs=shared

He añadido una última línea en la que indico que quiero que se compilen los módulos mod_dav y mod_dav_fs como shared. Tras realizar la configuración y si todo es correcto, hay que ejecutar el comando make. Suponiendo que ya tengamos apache2 instalado de una compilación e instalación anterior, sería suficiente con copiar los archivos .so, sin tener que hacer un make install.

bash# cp modules/mod_dav.so /usr/local/apache/modules
bash# cp modules/mod_dav_fs.so /usr/local/apache/modules

Una vez copiado el módulo ya estáría listo para cargarlo y configurarlo en Apache.

Configurando DAV

Lo primero que vamos a hacer es cargar los módulos necesarios, editando el archivo httpd.conf y añadiendo las siguientes líneas:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

En la página de mod_dav de Apache hay información completa sobre las directivas existentes y su funcionamiento, en nuestro caso vamos a utilizar las mínimas a modo de ejemplo, con el fin de ofrecer WebDAV en un dominio virtual del servidor y utilizando autenticación básica para limitar el acceso a los usuarios autorizados, de forma que podamos disponer de un punto de almacenamiento en internet accesible por varios usuarios.

Lo primero es indicar el nombre de la base de datos de lock que se utilizará, mediante la directiva DAVLockDB. Es importante tener especial cuidado con esta directiva, ya que es frecuente fuente de errores.

DavLockDB /usr/local/apache/var/DAVLockDB

Lo que indica la directiva no es ni el nombre de un archivo ni el de una carpeta, si no la parte inicial del nombre de un archivo. El módulo creará un archivo de nombre DAVLockDB.orig y otro de nombre DAVLockDB.xxxxx dentro de la carpeta /usr/local/apache/var, para lo cual es necesario que el usuario bajo el que correo Apache tenga permisos de escritura en ella.

Activación de DAV

Mediante la directiva DAV podemos activar el soporte DAV para el servidor completo, para un directorio o para un dominio en concreto, siendo suficiente para ello con colocar la directiva en un sitio o en otro en función de las necesidades. En nuestro caso vamos a configurar un dominio específico que nos va a servir como almacenamiento web, para lo que activaremos el módulo dentro de un VirtualHost específicamente creado para ello.

<VirtualHost 192.168.10.1:80>
    ServerName dav.example.com
    DocumentRoot "/www/dav/data"
 
    DAV on
 
</VirtualHost>

Como no queremos que cualquiera pueda acceder a nuestro repositorio, vamos a utilizar los mecanismos de autenticación de Apache para controlar el acceso. Lo primero será crear un archivo de usuarios válidos.

bash# htpasswd -c /www/dav/.htpasswd patxi

Una vez creado el archivo podemos modificar la configuración del VirtualHost para hacer uso de la autenticación

<VirtualHost 192.168.10.1:80>
    ServerName dav.example.com
    DocumentRoot "/www/dav/data"
 
    <Directory /www/dav/data>
        DAV On
        AuthUserFile /www/dav/.htpasswd
        AuthName "WebDAV en dav.example.com"
        AuthType Basic
        Require valid-user
        Order Allow,Deny
        Allow from All
   AllowOverride None
        Options Indexes 
    </Directory>
</VirtualHost>

En este punto ya tenemos apache listo y con el módulo de DAV configurado, por lo que reiniciamos el servidor para que los cambios hechos en la configuración surtan efecto. A partir de este momento podríamos utilizar cualquier cliente compatible con WebDAV para conectarnos a la URL http://dav.example.com, pudiendo utilizarla como punto de almacenamiento en web, que es lo que nos habíamos marcado como objetivo.

Referencias

Twitter Digg Delicious Stumbleupon Technorati Facebook Email

4 Respuestas para “Instalación de WebDAV en Apache”

  1. necesito reinstalar Web Dav olvide todo. ayuda ayuda

  2. hola me gustaria que me ayudaran a usar el Webdav, cuento con un VPS cento de Linux, pero no se como iniciar el webdav o que hay que configurarlo o por donde empezar le agradeceria mucho su ayuda, pues he visto que al usar este protocolo da mas seguridad a los archivos ademas de un ambiente de respaldo web.

Trackbacks/Pingbacks

  1. Cómo montar tu propio servidor de archivos on the cloud con WebDav « iTank / Ideas Tank - 02. Ene, 2011

    […] Instalación de WebDAV en Apache […]

  2. 3. Servidor de ficheros WebDAV - 13. Feb, 2013

    […] http://www.eslomas.com/2005/11/instalacion-de-webdav-en-apache/ […]