Tomcat CGI
Tomcat CGI簡介
Tomcat CGI(通用網(wǎng)關(guān)接口)定義了一種 Web 服務(wù)器與外部內(nèi)容生成程序的交互方式,這里所說的外部內(nèi)容生成程序通常被稱為 CGI 程序或 CGI 腳本。
當(dāng)你使用 Tomcat 做為 HTTP 服務(wù)器,并且需要 CGI 支持時,可以在 Tomcat 中添加 CGI 支持。Tomcat 的 CGI 支持很大程度上能夠跟 Apache 的httpd's 相兼容,但也存在一些局限(比如只有一個 cgi-bin 目錄)。
CGI 支持是通過 servlet 類 org.apache.catalina.servlets.CGIServlet 來實現(xiàn)的。一般而言,該 servlet 與 URL 模式“/cgi-bin/*” 相對應(yīng)。
Tomcat 默認不支持 CGI。
Tomcat CGI安裝
警告:CGI 腳本用于執(zhí)行 Tomcat JVM 外部的程序。如果使用 Java 的 SecurityManager,則它將繞過 catalina.policy 中配置的安全策略。
為了啟用 CGI 支持:
- 在默認的 $CATALINA_BASE/conf/web.xml 文件中,存在被注釋掉的用于 CGI servlet 的范例 servlet 及 servlet-mapping 元素。在 Web 應(yīng)用中啟用 CGI 支持,需要將 servlet 和 servlet-mapping 聲明都復(fù)制到 Web 應(yīng)用的 WEB-INF/web.xml 文件中。
- 在 Web 應(yīng)用中的 Context 元素中設(shè)置 privileged="true"。
- 只有享有特權(quán)的上下文才能被允許使用 CGI servlet。注意,修改全局$CATALINA_BASE/conf/context.xml 文件會影響所有的 Web 應(yīng)用。查閱 Context 文檔來了解詳情。
Tomcat CGI配置
下面是用來配置 CGI servlet 行為的一些 Servlet 初始參數(shù):
- cgiPathPrefix 搜索 CGI 腳本的路徑,一般從 Web 應(yīng)用根目錄 + 文件.分隔符 + 這個前綴開始搜索。該參數(shù)默認為空值,從而使得 Web 應(yīng)用根目錄被用作搜索路徑。建議取值為:WEB-INF/cgi。
- debug 該 servlet 所記錄信息調(diào)試細節(jié)度。默認為 0。
- executable 用于運行腳本的可執(zhí)行文件后綴名,如果腳本自身就是可執(zhí)行文件(比如 .exe 文件),則可以將該參數(shù)顯式設(shè)置為空的字符串。默認是 perl,即默認是 perl 腳本。
- executable-arg-1 與 executable-arg-2,等等 executable 的其他參數(shù)。它們位于 CGI 腳本名稱之前。默認不存在其他額外參數(shù)。
- parameterEncoding CGI Servlet 所使用的參數(shù)編碼名稱,默認為 System.getProperty("file.encoding","UTF-8")。首選系統(tǒng)默認編碼,如果系統(tǒng)屬性不可用,則采用 UTF-8 編碼。
- passShellEnvironment 是否應(yīng)將 Tomcat 過程的 shell 環(huán)境變量(如果存在)傳入 CGI 腳本?默認為 false。
- stderrTimeout 在終止 CGI 過程之前,等待標(biāo)準錯誤輸出信息(stderr)讀取完畢的時間(以毫秒計)。默認為 2000。