Problema Tomcat+Python

codesurfer

Nuovo Utente
13 Feb 2008
16
3
0
Ciao a tutti,
ho un problema con la configurazione di Tomcat per l'esecuzione degli script Python.
Seguendo la miniguida del sito di Tomcat ho fatto le modifiche che dovrebbero abilitare il webserver ad eseguire i CGI ma ancora mi si presenta una pagina web completamente vuota e nessun errore nei log.

La mia configurazione è questa:

La cartella dove ho installato Tomcat è C:\Program Files\Tomcat 6.0
La cartella dove ho la webapp è: C:\Program Files\xampp\htdocs\test_jsp
La cartella dove ho lo script è C:\Program Files\xampp\htdocs\test_jsp\WEB-INF\cgi
La cartella dove ho installato Python è C:\Program Files\Python3.1

Nel file C:\Program Files\Tomcat 6.0\conf\web.xml ho inserito:
Codice:
       <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>
        <init-param>
            <param-name>executable</param-name>
            <param-value>C:\Program Files\Python3.1\pythonw.exe</param-value>
        </init-param>
        <init-param>
            <param-name>passShellEnvironment</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>5</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>cgi</servlet-name>
        <url-pattern>/cgi-bin/*</url-pattern>
    </servlet-mapping>
Nella cartella C:\Program Files\Tomcat 6.0\lib ho aggiunto il file servlets-cgi.jar.

Il test che ho fatto è il seguente:
Codice:
<jsp:include page="templates/header.html" />
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.Vector" %>
<%@ page import="java.awt.event.*" %>
<%@ page import="java.io.*" %>
<%@page import="java.util.Hashtable" %>
<%@page import="javax.naming.*" %>
<%@page import="javax.naming.ldap.*" %>
<%@page import="javax.naming.directory.*" %>

.....codice......

<iframe id="pyTest" name="pyTest" frameborder="0" scrolling="no" src="python.py" />

<jsp:include page="templates/footer.html" />
E lo script python è:
Codice:
#!C:\Program Files\Python3.1\pythonw.exe
print('Content-type: text/html')

print ("Hello World");
Commentando il codice aggiunto nel file web.xml la pagina si visualizza correttamente eccetto lo script python che viene stampato come testo invece che eseguito (quindi la parte JSP funziona).

Qualcuno ha qualche dritta per la configurazione di Tomcat?

Grazie in anticipo :D
 

codesurfer

Nuovo Utente
13 Feb 2008
16
3
0
Se potesse interessare a qualcuno ho trovato la configurazione funzionante:
-nel file web.xml in path_install_tomcat\conf scommentare il seguente codice (alcuni parametri li ho aggiunti manualmente):
Codice:
    <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>
        <init-param>
            <param-name>executable</param-name>
            <param-value>C:\Program Files\Python3.1\pythonw.exe</param-value>
        </init-param>
        <init-param>
            <param-name>passShellEnvironment</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>5</load-on-startup>
    </servlet>
-nello stesso file scommentare:
Codice:
    <servlet-mapping>
        <servlet-name>cgi</servlet-name>
        <url-pattern>/cgi-bin/*</url-pattern>
    </servlet-mapping>
-nel file path_webapp\META-INF\context-xml aggiungere all'element Context il parametro privileged="true".

-inserire gli script CGI nella cartella path_webapp\WEB-INF\cgi\ (o nella cartella specificata precedentemente <param-value>WEB-INF/cgi/</param-value>).

-da browser richiamare lo script con http://localhost/nome_webapp/cgi-bin/nome_script

-da altri file utilizzare normalmente il percorso relativo sostituendo WEB-INF/cgi/nome_script con cgi-bin/nome_script.