如何在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/*
 1 <servlet>
 2         <servlet-name>cgi</servlet-name>
 3         <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
 4         <init-param>
 5           <param-name>cgiPathPrefix</param-name>
 6           <param-value>WEB-INF/cgi</param-value>
 7         </init-param>
 8         <init-param>
 9             <param-name>executable</param-name>
10             <param-value>C:\Anaconda3\python.exe</param-value>
11         </init-param>
12         <init-param>
13             <param-name>passShellEnvironment</param-name>
14             <param-value>true</param-value>
15         </init-param>
16         <load-on-startup>5</load-on-startup>
17     </servlet>
18 
19   <servlet-mapping>
20         <servlet-name>cgi</servlet-name>
21         <url-pattern>/cgi-bin/*</url-pattern>
22     </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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM