|
Configuración de Apache, como servidor WebDAV En este artículo, explicaré como convertir en Linux, nuestro
servidor web Apache (que previamente habremos instalado), en un
servidor WebDAV. El fin de este dossier, será el de poder publicar los
calendarios que desarrollemos con la aplicación iCal de Apple, de una
forma muy similar a como lo haríamos con una cuenta .mac.
Una vez publicados nuestros calendarios, podrá la gente suscribirse a ellos o consultarlos vía web.
¿Qué es un servidor WebDAV?.
WebDAV (Web-based Distributed Authoring and Versioning), es una serie
de extensiones del protocolo HTTP que permite a los usuarios colaborar
en la edición y administración de recursos web en un servidor remoto.
En definitiva, lo que nos permite WebDAV, es de una forma muy
sencilla, gestionar totalmente los ficheros que hay almacenados en un
servidor WebDAV. No solo consistirá en poder almacenar en dicho
servidor, todos los ficheros que queramos, sino que además, podremos
por ejemplo moverlos de ubicación, modificar sus propiedades, nombre o
niveles de acceso/seguridad, escribir en ellos vía http, etc...
Lo que nos propone WebDAV, es ni más ni menos que trasladar el
"trabajo en grupo o compartido" a la web, utilizando para ello el
protocolo http. Por tanto, WebDAV nos permitirá que varios usuarios
estén trabajando con los ficheros almacenados en el servidor (que
podrán ser cualquier tipo de archivo: documentos, imágenes, etc...),
pero no por ello deja que este trabajo entorpezca el de los demás
usuarios, ya que tiene la posibilidad de crear los típicos "locks" en
los ficheros, es decir, cuando un usuario este trabajando con un
fichero, no dejará que ningún otro usuario trabaje en ese mismo
instante con ese archivo, para así, no sobrescribir el trabajo
realizado.
Además, WebDAV, al más puro estilo CVS, nos permitirá llevar un
control de las versiones de un mismo fichero, pudiendo recuperar en
caso de fallo, cualquiera de las versiones anteriores.
¿Qué es iCal?.

Para
los que no conozcan el programa iCal, es una aplicación de calendario,
mediante la cual podemos gestionar todas nuestras citas o tareas
pendientes, de una forma similar a como lo haríamos con aplicaciones
como korganizer, evolution u outlook.
La ventaja que tiene iCal frente a soluciones similares son varías:
- Mediante iCal podemos gestionar tantos calendarios como nosotros
queramos, pudiendo, por ejemplo, distinguir fácilmente entre un
calendario personal o laboral. Para ello, iCal se vale de unas
etiquetas de colores que automáticamente le asignará a los eventos
pertenecientes a ese determinado calendario.
Además, para facilitar aún más la gestión de estos calendarios,
podremos elegir, entre ver los eventos por separado o todos juntos
(identificandolos por su color). - Mediante iCal, podemos compartir nuestros calendarios fácilmente,
con la ayuda de una cuenta .mac o de un servidor WebDAV. Será muy fácil
publicar nuestros calendarios, para que la gente pueda acceder a ellos
vía web o suscribiendose (ahorrandose por tanto, el tener que visitar
la web de eventos).
- Además, será muy fácil configurar nuestra aplicación para que
automáticamente actualice estas publicaciones, cuando hemos introducido
algún cambio en alguno de los calendarios publicados.
- También muy fácilmente, podremos suscribirnos a un calendario que
haya publicado alguien en internet. De esta forma, cuando arranquemos
nuestra aplicación iCal, automáticamente nos actualizará los eventos o
citas referentes a estos calendarios.
- Mediante la ayuda de aplicaciones como iSync, podremos sincronizar
nuestras citas con las que tengamos apuntadas en nuestro teléfono móvil
o PDA.
Instalación del modulo mod_dav.
Como hemos dicho en la introducción de este artículo, para poner en
marcha nuestro servidor WebDAV, vamos a utilizar un servidor Apache,
que previamente hayamos instalado en nuestra maquina.
Por si solo, Apache no nos brinda la posibilidad de utilizarlo
como servidor WebDAV, por lo que habrá que instalar una herramienta
externa que si nos permita llevar a cabo esta labor. La herramienta que
debemos usar, es el modulo de Apache mod_dav, que otorga las
capacidades DAV a nuestro servidor web.
La instalación de este modulo, variará según la distribución que
dispongamos, por lo que en este artículo veremos la forma de instalarlo
en las distribuciones más usuales (distribuciones basadas en paquetes
rpm, deb y mediante la compilación de su código fuente).
- Distribuciones basadas en rpm.
Para instalar el modulo mod_dav en este tipo de distribución, lo
más sencillo es hacernos con el paquete .rpm del mismo e instalarlo
mediante la herramienta rpm.
Para ello, podemos bajarnos el susodicho paquete de webs como htttp://rpmfind.net y una vez lo tengamos, ejecutar este comando (cuando se creo este artículo la versión más nueva disponible era la 1.0.3-5):
rpm -ihv mod_dav-1.0.3-5.i386.rpm
Con esto, estará perfectamente instalado en nuestro sistema.
- Distribuciones basadas en debian.
Si queremos instalar mod_dav en debian (o similares), bastará con que ejecutemos un simple:
apt-get install libapache-mod-dav
Atención en esta distribución, que al instalar el modulo mod_dav,
nos preguntará si queremos que configure por nosotros el servidor
Apache, para que éste cargue el modulo y si le decimos que si, nos
añadirá el código necesario para llevar a cabo tal acción, pero también
nos comentará el código necesario para cargar el modulo de php.
- Compilación del código fuente.
Si lo que queremos es instalar el modulo mod_dav desde su código
fuente, lo que tenemos que hacer es bajarnos dicho código de la web
oficial (http://www.webdav.org/mod_dav/). Una vez lo hayamos descargado, lo descomprimiremos:
tar zxvf mod_dav-1.0.3-1.3.6.tar.gz
y entonces, debemos decidir, si lo instalamos como modulo que se
cargará dinámicamente mediante la utilidad de Apache "apxs", o bien si
lo queremos instalar de forma estática en el ejecutable de Apache.
Para la primera de las dos formas, deberemos de realizar estos pasos:
cd mod_dav-1.0.3-1.3.6 ./configure --with-apxs=/ruta/hacia/el/ejecutable/apxs make make install
Para el segundo de los métodos, los pasos que hay que tomar son los siguientes:
./configure --with-apache=/directorio/del/Apache/compilado make make install
En esta última manera, faltaría una cosa muy importante,
recompilar de nuevo Apache, para que se active el modulo en el
ejecutable del servidor web. Para ello, cuando compilemos Apache, le
deberemos pasar como parámetro al configure:
--activate-module=src/modules/dav/libdav.a
Con esto, ya tendríamos instalado el modulo mod_dav en nuestro sistema, faltandonos la configuración del servidor Apache.
Configuración de Apache.
Para configurar Apache, deberemos de editar el fichero httpd.conf (que según la distribución podrá estar en /etc/httpd/httpd.conf, /etc/httpd/conf/httpd.conf o /etc/apache/httpd.conf) y añadir en la parte de los DSO modules (contando que el modulo esta en la ruta /usr/lib/apache/1.3/libdav.so):
LoadModule dav_module /usr/lib/apache/1.3/libdav.so
Además, deberemos añadir al final del fichero el siguiente código:
<IfModule mod_dav.c> DAVLockDB /var/lock/DAV/DAVLock DAVMinTimeout 600 </IfModule>
<Location /dav/> DAV On AuthType Basic AuthName "WebDAV Restringido" AuthUserFile /home/.passw <LimitExcept GET HEAD OPTIONS> Require user webdav </LimitExcept> </Location>
Con la primera parte, lo que hacemos es si se ha cargado con éxito el
modulo mod_dav, especificamos el fichero lock que creará el servidor
WebDAV. El directorio donde creará tal fichero, /var/lock/DAV tiene que existir y debe tener permisos de escritura para el usuario con el que se ejecutan los procesos del Apache.
Además, de manera opcional, pero muy recomendable, especificamos el tiempo de vida en segundos de este fichero.
En la segunda parte, especificamos opciones del directorio que
utilizaremos en el servidor para poner en marcha nuestro WebDAV Server
(es el directorio donde se almacenarán los ficheros del servidor DAV y
por tanto, donde se almacenarán nuestros calendarios).
En primer lugar especificamos cual va a ser este directorio, que en nuestro caso será /dav (<Location /dav/>).Este directorio, dado que empieza con la raíz "/", es relativo al DocumentRootdel dominio en donde estemos configurando el servidor, es decir, si el DocumentRoot fuese /var/www, el directorio que estaríamos indicando sería /var/www/dav.
Seguidamente, indicamos a Apache que ponga en marcha el servicio DAV para este directorio en concreto (DAV On).
Para asegurar el servicio, hacemos uso de la típica autenticación
HTTP, con lo que si se conecta alguien a nuestro servidor WebDAV, le
pedirá que se autentifique. Para ello, hacemos uso de las directivas
(Estas directivas se podrían haber puesto en un fichero .htaccess,
indicando que se va a utilizar el mismo, mediante la directiva AllowOverride AuthConfig):
AuthType Basic AuthName "WebDAV Restringido" AuthUserFile /home/.passw
Como puede observar, el fichero donde se almacenarán los nombres de los
usuarios autorizados, será /home/.passw, por lo que posteriormente
deberemos crear este fichero de contraseñas.
Finalmente ponemos limites a lo que se puede hacer con los
ficheros almacenados en el directorio dav. Indicamos que salvo para las
acciones GET, HEAD y OPTIONS, se requiera que se autentifique como
usuario webdav (que es el que vamos a almacenar en nuestro fichero de
contraseñas .passw).
Preparación de los directorios necesarios.
Ya tenemos Apache configurado, pero antes de reiniciar el
servidor, vamos a crear y preparar los directorios y ficheros antes
mencionados.
n primer lugar creamos y configuramos los permisos del directorio
donde se almacenará el fichero lock (el usuario con el que se ejecuta
el servidor Apache, variará según la distribución, pudiendo ser www-data, www o nobody):
mkdir /var/lock/DAV chown www-data /var/lock/DAV chmod 750 /var/lock/DAV
En segundo lugar, creamos el directorio principal, donde se van a
almacenar los ficheros en el servidor WebDAV (este variará según el
DocumentRoot, siendo el nuestro /var/www):
mkdir /var/www/dav chown www-data /var/www/dav chmod 750 /var/www/dav
Finalmente, crearemos el fichero contra el que nos validaremos a la
hora de publicar nuestros calendarios. Para ello, nos valdremos de la
aplicación htpasswd, que viene con cualquier instalación estándar de
Apache:
httpaswd -c /home/.passw webdav
Al teclear este comando nos pedirá la contraseña que le vamos a
poner al usuario webdav y al introducirla, nos generará el fichero
/home/.passw con el susodicho usuario y el password que le hemos
asignado.
Ahora sí, ya podemos reiniciar Apache:
/etc/init.d/apache restart (para debian) /etc/init.d/httpd restart (para las demás distribuciones).
Instalación de phpicalendar.
Ahora mismo, ya tenemos en funcionamiento nuestro servidor
WebDAV y por tanto, ya podríamos publicar nuestros calendarios en él.
Pero antes de hacer esto, vamos a instalar una aplicación hecha en PHP
en nuestro servidor web, que nos permitirá consultar dichos calendarios
vía web, sin necesidad de suscribirnos a ellos. Esta aplicación,
llamada phpicalendar, analiza el fichero .ics (es el estándar
utilizado en muchos de los programas de calendario existentes) y lo
plasma en la web de una forma similar a como se hace con una cuenta
.mac.
Ni que decir tiene, que al tratarse de una aplicación PHP,
deberemos tener soporte en nuestro servidor web, para estas
aplicaciones.
Para instalarlo, en primer lugar, nos lo tendremos que descargar de la
web oficial de este proyecto, http://phpicalendar.sourceforge.net/nuke.
Una vez descargado, lo descomprimimos:
tar xvzf phpicalendar-1.1.tgz
Movemos el directorio que nos habrá creado a un lugar accesible vía
web, es decir, a un directorio que este dentro de nuestro DocumentRoot.
Nosotros, además de hacer esto, renombraremos el directorio que nos ha
creado, para facilitar que la gente se acuerde del nombre del mismo
(escribir en el navegador, phpicalendar, es un tanto complicado :-) ):
mv phpicalendar /var/www/calendario
Posteriormente, deberemos configurar esta aplicación, para lo cual, editaremos el fichero /var/www/calendario/config.inc.php, cambiando en el mismo, ciertos parámetros:
En $language ponemos 'Spanish'; En $week_start_day ponemos 'Monday'; En $calendar_path ponemos la ruta del servidor webdav, '/var/www/dav/'; Las demás opciones las cambiamos si nos apetece, pero no es necesario.
Con esto, ya tendríamos nuestro servidor WebDAV listo y podríamos
empezar a publicar nuestros calendarios, suscribirnos a los publicados
o consultarlos vía web.
Ejemplo de calendario con phpicalendar. Click para ampliar
Crear, publicar calendarios y mandar invitaciones.
Una vez tenemos ya en marcha el servidor DAV, solo nos falta crear un calendario y publicarlo en el susodicho servidor.
Para crear un calendario con iCal, debemos dirigirnos al menú Archivo y seleccionamos Nuevo calendario. Tras darle un nombre, ya podemos añadir nuevos eventos, simplemente seleccionando dicho calendario y dirigiendonos al menú Archivo - Nuevo evento.
Para publicar un calendario, debemos seleccionarlo y después dirigirnos al menú Calendario - Publicar.Al hacer esto, nos aparecerá una nueva pantalla, preguntandonos los datos de publicación:
En "Nombre publico" le daremos el nombre con el que queramos publicar el calendario.
Seleccionamos las opciones que queramos, como la siempre interesante "Publicar cambios automáticamente" (las demás opciones son Publicar asuntos y notas, Publicar alarmas y Publicar tareas pendientes) y en "Publicar calendario", seleccionamos "en un servidor WebDAV".
Al hacer esto, nos aparecerán tres nuevas opciones. En la primera de ellas, debemos especificar la "Dirección URL base:" (http://www.dominiowebdav.com/dav/).
En la segunda, debemos especificar el usuario que tiene acceso a
publicar calendarios en ese servidor (en nuestro caso el usuario es
webdav -lo creamos con httpasswd-) y en la tercera, la contraseña del
mismo (la que indicamos con httpasswd).
Apretamos publicar y ya estará publicado en el servidor.
Suscribirse a un calendario.
Para suscribirse a un calendario mediante iCal, deberemos dirigirnos al menú Calendario - Suscribirse...
Al hacerlo, nos aparecerá una nueva pantalla, donde deberemos poner la "Dirección URL del calendario:", la cual será similar a esta (contando que el calendario fue publicado con el nombre Eventos):
webcal://www.dominiowebdav.com/dav/Eventos.ics
Seguidamente, podemos seleccionar que se actualice cada un cierto tiempo y al terminar, apretamos el boton "Suscribirse".
Cuando acabe este proceso, ya tendremos los eventos referentes a este calendario, en nuestra aplicación iCal.
Combinar calendarios con korganizer.
O es lo mismo que suscribirse a un calendario con iCal, pero
podemos con la herramienta Korganizer de KDE, bajarnos los eventos
referentes a un calendario publicado en un servidor WebDAV. Para ello,
nos dirigimos al menú Archivo - Combinar y cuando nos pregunta la dirección del fichero .ics, deberemos poner:
http://www.dominiowebdav.com/dav/Eventos.ics
Consultar vía web, los calendarios publicados.
Gracias a que hemos instalado phpicalendar, podrán acceder a él
los usuarios del servidor WebDAV, via web. Solo tienen que introducir
la dirección web:
Technorati Tags:
apache
linux
webdav
ical
>> |