如何在Tomcat服务器配置CGI运行Python

时间:2023-03-09 13:13:51
如何在Tomcat服务器配置CGI运行Python

想通过请求触发部署在tomcat上的非java应用程序,需要用到Common Gateway Interface(CGI)。Tomcat提供了Servlet CGI支持。

  • 修改web.xml

web.xml配置文件中默认注释了CGIServlet,只需要打开注释即可。修改apache-tomcat-x.x.xx/conf/web.xml文件可以影响服务器上所有的部署应用。另外有几个配置需要注意,

cgiPathPrefix:部属应用中,cgi脚本的位置。tomcat会在所有应用的该目录啥寻找。
executable:CGI脚本的执行程序。
passShellEnvironment:shell的环境变量。

URL pattern:应用程序实际的webroot + /cgi-bin/*
 <servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<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:\Anaconda3\python.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>
  • 修改context.xml

修改apache-tomcat-x.x.xx/conf/context.xml文件会影响所有服务器上部署的应用。

<Context privileged="true">
  • 将python脚本部署在web应用

创建hello.py,将其放在web应用test工程,“WEB-INF/cgi”目录下。

from os import *
from cgi import * print('Hello')
  • 在浏览器中访问程序

http://localhost:8180/test/cgi-bin/hello.py

-Dec- ::55.232 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8109"]
-Dec- ::55.249 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in ms
-Dec- ::04.408 INFO [http-nio--exec-] org.apache.catalina.servlets.CGIServlet$CGIRunner.run Bad header line [Hello]