I. Introducción
Debido al proyecto que estoy actualmente desarrollando me he visto en la tesitura de ser capaz de ejecutar CGIs (más concretamente scripts PERL) bajo WINDOWS. Muchos son los manuales que encontré aunque la mayoría no estaban escritos para torpes como yo (y, créanme, ¡las pasé canutas!). Tras estar varios días buscando y buscando logré hacer que funcionaran y me gustaría dejar bien claro qué pasos llevé a cabo para hacer que TOMCAT los ejecutara.
¿Por qué TOMCAT? Seguramente os lo estéis preguntando. Pues bien, me era necesario TOMCAT debido a que necesitaba ejecutar páginas en JSP. Ésto, APACHE no es capaz de ejecutarlos y se requiere de TOMCAT para hacer que funcione.
II. Requisitos previos
Los pasos que a continuación se detallan son comunes a todos los CGIs que se quieran ejecutar en TOMCAT. Pues bien, si quisieramos ejecutar scripts en PERL (que fue con lo que yo me tuve que enfrentar) tenemos que «capacitar» a WINDOWS para que sea capaz de ejecutar scripts en PERL. En caso de no capacitarlo, aunque lo configuremos adecuadamente, cuando queramos ejecutar el fichero .cgi, no lo reconocerá adecuadamente.
Por tanto, si lo que queremos es ejecutar scripts en PERL primero debemos descargarnos la aplicación adecuada para que se puedan ejecutar scripts PERL en WINDOWS. Se puede descargar de aquí.
En el caso de que queramos ejecutar otro lenguaje de programación, será necesario que el sistema operativo sea capaz de interpretarlo. No olvidarlo.
III. Instalación del servidor
Antes de nada, será necesario descargarse JAVA en el ordenador que queramos instalar el servidor. Yo, personalmente, me hago un lío entre JRE, JDK, J2SE, etc. ¡Imaginaos cuando entré en la página de descargas de JAVA! No sabía ni que descargarme. Pues bien, lo que necesitamos es simplemente ejecutar java, no queremos disponer de ningún entorno de desarrollo ni nada por el estilo. Por tanto, lo que os tenéis que descargar en este caso es JRE (Java Runtime Environment) que sirve, simplemente, para ejecutar JAVA en el ordenador. En mi caso me descargué la versión 6. Se puede descargar de aquí. Una vez descargado, lo instalais.
Lo que hay que hacer a continuación es bajarse el servidor TOMCAT. Para ello, el que usé para la instalación fue la versión 5.5. La podéis descargar de aquí.
Una vez descargado, debéis instalarlo. Cuando se está instalando, nos va a pedir donde tenemos instalado el JRE. Normalmente lo detectará solo, si no, hay que seleccionar la carpeta donde se haya instalado (Normalmente está en C:\Archivos de programa\Java\jre1.6.0_01).
Si no tocáis absolutamente nada, el puerto por defecto será el 8080. Es decir, cuando intentemos ejecutar una página web alojada en el ordenador deberemos poner la dirección escuchando en el puerto 8080. Es decir: http://localhost:8080/carpeta_web/index.jsp, por ejemplo.
IV. Visualización web
Antes de continuar, haré un pequeño inciso en donde alojar las páginas web para visualizarlas en el navegador. Yo me llevé un buen rato dándome errores de compilación de java (¡imaginaos la cara que se me ponía!) y era simplemente porque la carpeta estaba mal alojada dentro del servidor.
Pues bien, imaginemos que tenemos una página web alojada en una carpeta. Por ejemplo, la carpeta codigoaldescubierto.
Para alojar adecuadamente esa página dentro del servidor tendremos que entrar dentro de la carpeta asociada a TOMCAT para almacenar las diferentes páginas web. Si no hemos tocado nada cuando hemos instalado TOMCAT, por defecto será: C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\webapps.
Es decir, dentro de esa carpeta tendremos que copiar la carpeta codigoaldescubierto.
Para acceder a dicha página web, se deberá poner en el navegador lo siguiente: http://localhost:8080/codigoaldescubierto/index.html, por ejemplo.
V. Configuración de TOMCAT
Pues bien, cerremos ese pequeño paréntesis y dediquémonos a intentar configurar TOMCAT para que ejecute CGIs. Lo primero que hay que hacer es detener el servidor en el caso de que estuviera ejecutándose.
Modificación de web.xml
Simplemente debeis acceder al fichero web.xml (Alojado en C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\conf) y descomentar las siguientes líneas de código:
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
Además, hay que descomentar lo siguiente:
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
Con esto estamos diciendo a TOMCAT que todo lo que alojemos en la carpeta cgi-bin, lo redirecionará a la carpeta cgi que tendremos alojada dentro de WEB-INF (más tarde explicaremos más detalladamente como ejecutar el script).
Creación del fichero JAR
Simplemente debeis renombrar el fichero servlets-cgi.renametojar a servlets-cgi.jar. ¿Dónde está alojado este fichero? Normalmente (para la versión 5.5) está alojado en C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\server\lib. Si no fuera así, simplemente debéis buscar donde está alojado.
Por último, arrancaremos el servidor que se encontraba detenido. ¡Ya estamos en disposición de probar nuestro primer CGI!
VI. Ejecución de los scripts
Una vez configurado TOMCAT, hay que ver si funciona correctamente. Para ello, lo primero que hay que hacer es distribuir adecuadamente la carpeta donde estará alojada la página web.
Un posible ejemplo de la distribución mínima puede ser (suponiendo que la carpeta es codigoaldescubierto):
codigoaldescubierto/
|__index.jsp
|__WEB-INF/
|__ cgi/
|__script.cgi
La idea es tener dentro de la carpeta cgi todos los scripts que queramos ejecutar. Imaginemos que tenemos un script denominado script.cgi que queremos ejecutar en nuestra página web. Pues bien, para acceder a dicho script, bastará con acceder a la siguiente URL: http://localhost:8080/codigoaldescubierto/cgi-bin/script.cgi
Hola ZoItrix, hace tiempo que estaba buscando como tratar los archivos CGI en tomcat, asi que gracias por el apunte.
Me sucedio que despues de modificar el web.xml, no encontre el fichero servlets-cgi.renametojar, tengo la version 6.0.14 de apache tomcat. sin embargo termine los demas pasos y cree el arbol de carpetas asi:
C:\xampp\tomcat\webapps\proyhttp\WEB-INF\cgi
Inicie tomcat y cuando escribo en el browser:
http://localhost:8080/proyhttp/cgi-bin/myecho.cgi
Aparece lo siguiente:
Estado HTTP 404 – /proyhttp/cgi-bin/myecho.cgi
type Informe de estado
mensaje /proyhttp/cgi-bin/myecho.cgi
descripción El recurso requerido (/proyhttp/cgi-bin/myecho.cgi) no está disponible.
Apache Tomcat/6.0.14
intente cambiando la direccion en el browser por:
http://localhost:8080/proyhttp/cgi/myecho.cgi, pero no cambio nada.
Agradeceria mucho cualquier aporte para dar solucion a este lío…
Hola,
Es necesario que tengas el fichero servlets-cgi.jar en la carpeta de librerías. Si no, no debe funcionar tal y como te ha pasado.
He visto que por defecto, en el add-on que ofrece XAMPP para la instalación de Tomcat, no aparece ese fichero.
Lo que puedes hacer es descargarte el Tomcat 5.5, descomprimirlo en una determinada carpeta y copiar de la ruta que menciono en el manual el fichero servlets-cgi.renametojar desde Tomcat 5.5 a la carpeta «lib» dentro del Tomcat 6.0 que tienes instalado.
Una vez copiado ese fichero, lo renombras a servlets-cgi.jar y reinicias el servidor. (Por ejemplo, reiniciando el ordenador para estar seguros de que se reinicia).
En teoría, siguiendo los pasos siguientes del manual, debería ir todo correctamente siempre y cuando tengas en la carpeta de librerías el fichero servlets-cgi.jar.
Ya me comentas como te ha ido.
Saludos.
Tomcat permite la ejecucion de CGI pero que no sean propiamente scripts sino aplicaciones ejecutables con extension .EXE ?
hola, probando tomcat y me gustaría ejecutar cgi, cosa que no me deja o no puedo, ¿puedes ayudarme?, te puedes poner en contacto en mi e-mail, si o puedieses, ¿me puedes facilitar un buen manual?, es que lo que viene en la página oficial es bastante arido y no encuentro nada.
un saludo y gracias….
Disculpa quisiera saber si tu has hecho esto mismo, es decir, ejecutar cgi en apache, pero esta vez usando lamp, xamp o appserv, no puedo ejecutar cgi desde ahi.
Me imagino que hay que editar tambien algunos archivos pero no los encuentro, la mayoria de los post son en linux
Hola,
Muy buena entrada, muchas gracias. Tengo unas dudas respecto al procedimiento.
¿Cuando indicas descomentar las líneas de código, puede hacerse con Notepad? (he ido a comentario/borrar comentario pero no sé si es esto).
Por otro lado, cuando creas la extensión jar yo lo que he hecho ha sido primero comprimirlo, luego renombrarlo a jar y automáticamente se me ha cambiado. ¿Puede que este procedimiento haga que no me funcione?
Y finalmente, respecto al último punto sobre la ejecución de los scripts, si el cgi-bin está constituido por una carpeta con archivos dbf, dst, pdb, etc (ningún exe ni nada) ¿tendría que funcionar igual?
Saludos y muchísimas gracias de antemano,
alguien sabe como sería para ejecutar CGI con tomcat 7?? Gracias