Bienvenido a los foros de Perl en español, guerrero12.
Supongamos que has instalado el Apache2 con el gestor de paquetes de Ubuntu (synaptic o aptitude). Entonces, como
root, entras en el directorio /etc/apache2 (o parecido). Verás uno o dos archivos .conf. Generalmente, en el apache2.conf están las opciones generales del servidor web, mientras que en el httpd.conf estarán las más particulares (el fichero apache2.conf tendrá una línea
Include httpd.conf con la que insertará las opciones particulares en el procesamiento general del fichero). En otras ocasiones, estará todo reunido en un solo archivo.
En cualquier caso, en uno de estos archivos deberá aparecer la configuración relativa a los CGI, que podrá ser algo parecida a lo que has escrito.
Más en detalle:
Using text Syntax Highlighting
AddHandler cgi-script .cgi .sh .pl .ida
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /cgi/ /usr/lib/cgi-bin/
<Directory /usr/lib/cgi-bin/>
AllowOverride None
Options ExecCGI FollowSymLinks -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
La explicación de las líneas es:
- Indicamos que queremos que ejecutar como CGI todos los archivos que tengan alguna de esas extensiones
- Si en un URL, la parte inicial de la ruta es /cgi-bin/, el servidor web deberá ir a buscar el programa al directorio indicado después
- Lo mismo para /cgi/. Realmente, solo necesitamos una de estas líneas
- y siguientes, declaramos que en ese directorio especial hay que activar las Opciones siguientes: ExecCGI (se pueden ejecutar los cgi que se encuentre ahí), FollowSymLinks (si hay enlaces simbólicos dentro de ese directorio, el usuario puede seguirlos. De esta manera, se pueden colocar cgi en otros sitios del disco), -MultiViews (no queremos que el servidor nos busque por variantes de lo que le pedimos, en caso de que lo que le pedimos no exista), +SymLinksIfOwnerMatch (los enlaces simbólicos solo se pueden seguir si el propietario del programa/archivo destino coincide con el propietario del enlace). De todas estas opciones, la fundamental es la ExecCGI.
Naturalmente, damos por supuesto que el directorio /usr/lib/cgi-bin/ existe. Y al menos tiene permisos de lectura y ejecución para todos o, como mínimo, para el usuario que ejecuta el servidor web.
Ahora tienes que comprobar que el módulo cgi del Apache2 está activado. Si sacas un listado del directorio /etc/apache2/mods-enabled/ deberías ver un enlace simbólico así:
Using text Syntax Highlighting
lrwxrwxrwx 1 root root 26 dic 2 23:02 cgi.load -> ../mods-available/cgi.load
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Eso quiere decir que sí está activo el módulo. Si no lo estuviera, deberías ejecutar el comando
a2enmod cgi para quede activado.
Ahora tienes que hacer una recarga del servidor web (
/etc/init.d/apache2 restart) y debería estar funcionando el sistema CGI.
Solo queda colocar un cgi en el directorio anterior, y ejecutarlo desde el navegador web. Si no sale, consultar siempre los registros de actividad (los ficheros log en /var/www/apache2/).
Ahora queda realizar los cgi en Perl. En la parte superior de esta página tienes un enlace a los Tutoriales. Dentro de ellos, hay una sección especial para CGI. Tienes, por ejemplo, el
CGI: Primeros pasos. Y luego, si haces uso del módulo Perl CGI.pm, podrás escribir programas de forma
más sencilla y rápida.