CGI (Common Gateway Interface) es un estándar para poder ejecutar scripts en las páginas web. Aunque un CGI puede estar escrito en muchos lenguajes de programación, la mayoría de los CGIs están escritos en Perl (Practical Extraction and Report Language, perl.org, paquete perl) y los restantes son scripts Bash, el shell de Linux.
Con los CGI podemos crear herramientas muy potentes que interactúen con el sistema y que nos permitan configurarlo remotamente vía web. Una aplicación de este tipo muy usada es Webmin. Pero es importante saber que muchas técnicas para atacar servidores web aprovechan CGIs mal programados, por lo que se debe ser cuidadoso.
Configurar Apache
Para que Apache soporte CGIs escritos en Perl debemos tener Perl instalado. Para comprobarlo:
$ perl -v This is perl, v5.8.8 built for i486-linux-gnu-thread-multi |
Después le diremos a Apache que use CGIs. Para ello editaremos el archivo de configuración de Apache /etc/apache/httpd.conf:
- comprobaremos que existe la directiva:
Include /etc/apache/modules.confy que en el archivo /etc/apache/modules.conf exista la siguiente línea para que Apache cargue el módulo de CGIs (la añadiremos si no existe):
LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so
- descomentaremos la siguiente línea para que Apache sepa que los CGIs son
programas y no archivos de texto normales:
AddHandler cgi-script .cgi .sh .pl
- la directiva ScriptAlias controla qué directorios contienen scripts:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/Los CGIs no están en el directorio /var/www/cgi-bin sino que esta dirección está redirigida a /usr/lib/cgi-bin, para que en el directorio de la web haya sólo elementos web y no programas ejecutables. De esta manera, si escribimos en el navegador la dirección http://localhost/cgi-bin/prueba.cgi, Apache buscará el archivo prueba.cgi en el directorio /usr/lib/cgi-bin.
Para los directorios definidos en directivas ScriptAlias tendremos que crear una directiva Directory en la que se definan los permisos, por ejemplo:
<Directory /usr/lib/cgi-bin/> ... </Directory>
Guardamos los cambios y reiniciamos Apache:
# /etc/init.d/apache restart |
Vientos, gracias por compartir esto con nosotros, me sirvio mucho tu ejemplo, saludos y gracias!!!
Por fin encuentro de manera detallada para que tu localhost acepte modo cgi.
Pero si lo configuro mi localhost para que ejecute los script cgi, mis script en php tambien pueden ser levantados????
Te agradeceria si me repondieras tambien en mi correo, estoy aprendiendo perl y solo lo ejecuto en mi maquina pero sin usar cgi solo del editor de comandos. Pero para web en perl requiero de cgi.
GRACIAS DE ANTEMANO
muy practico, gracias!
y si en la sección ScriptAlias del httpd.conf se configura el directamente el directorio donde se encuentra el cgi?
Disculpa pero es que no entiendo como dar permiso de ejecucion ahi me decis que haga esto # chmod a+x /usr/lib/cgi-bin/hello.cgi pero como o en donde lo pego o que hago gracias de antemano..
En que archivo esta la linea donde tengo que descomentar??