Creación de Handlers


Esta actividad práctica corresponde a este tema.

A la hora de gestionar los handlers de Apache es necesario abrir el fichero de configuración de mod_mime, /etc/apache2/mods-enabled/mime.conf. En el podemos ver los AddType ya mencionados con la especificación de cada tipo MIME reconocido por el servidor:

Instalación de un handler (1)

Pero lo que importa para esta sección no es esta opción, sino la opción AddHandler. Para hacer una prueba del funcionamiento de esta directiva, vamos a hacer que cada una de las páginas servidas por Apache sean modificadas por un script CGI programado en Perl, llamado footer.pl:

#!/usr/bin/perl -w

print "Content-type: text/html\n\n";
print "Pagina modificada por footer.pl: ";
@timeData = localtime(time);
print join(' ', @timedata);
my $file = "".$ENV{'DOCUMENT_ROOT'}."".$ENV{'PATH_INFO'};
open (FILE, "$file") || die("$!");
@file=<FILE>;
close(FILE) ||die("$!");
print @file;
1;

Para ello hay que seguir los pasos siguientes sobre el fichero mime.conf mencionado anteriormente:

  • Asegurarse de que se ha habilitado el mod necesario para poder ejecutar los ficheros de script que usemos como handler (en este caso sería mod_perl, que ya está instalado de una operación anterior).
  • Activar mod_actions, necesario para poder usar la directiva Action descrita a continuación.
Instalación de un handler (2)
  • Añadir directivas Action, que permiten ejecutar scripts CGI cuando se solicita un tipo de archivo concreto (http://httpd.apache.org/docs/2.0/mod/mod_actions.html). Las directivas deben especificar el tipo de archivo a tratar y el programa que lo trata. Por ejemplo, las siguientes directivas hacen que cuando haya una petición de ficheros con la extensión .html se lance el script CGI footer.pl

Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html


Instalación de un handler (3)

  • Situar el script en un lugar accesible por el servidor (en este caso la carpeta /cgi-bin situada en la web que lo va a usar o bien en /usr/lib/cgi-bin). El fichero debe poder al menos ser ejecutado por el grupo de permisos "otros" para que funcione todo correctamente.

Instalación de un handler (4)

Este script CGI footer.pl es el responsable de enviar el documento pedido (cuya localización se puede conocer leyendo en el script la variable PATH_TRANSLATED, pudiendo de esta manera acceder a sus contenidos), haciéndole las modificaciones que considere oportunas, que en este caso son añadir un texto al comienzo de cada página servida. Esta sería una página sin modificar:

Instalación de un handler (5)

Y esta sería la misma página modificada. Este cambio se producirá automáticamente en todas las páginas servidas por Apache sin necesidad de modificarlas, siendo esta la mayor ventaja de un handler:

Instalación de un handler (6)

NOTA: El uso de perl es simplemente a modo de ejemplo, se podría usar cualquier otro lenguaje que tuviese soporte para crear programas CGI y que por tanto pudiese usar una serie de variables de entorno o funciones que facilitaran la manipulación de las páginas servidas por parte del script. Cada lenguaje usado para estos fines tiene una implementación de este tipo de funcionalidad particular que debemos consultar para ello, pero el procedimiento de instalación debería ser similar.
Por otro lado, es muy sencillo cometer un error tanto con el script como con su activación, caso en el cual Apache nos devolverá un "Internal Server Error". En este caso conviene consultar el log de errores de Apache situado en /var/log/apache2/error.log para ver cuál ha sido el problema y tratar de corregirlo.

Última modificación: jueves, 19 de agosto de 2010, 16:55