標籤:tomcat cgi 部署
之前學了Perl的基礎,本來打算只學Perl如何訪問資料庫就算了,不過發現CGI也還挺好玩的,順便學習一下吧,而且通過瀏覽器和資料庫進行互動好像也很酷。
現在CGI不是很流行了,基本上被Jsp/Servlet,.Net,PHP等取代了,反正這也不是Perl的主業。
CGI流行原因有很多,比如效率問題,對於每一個請求都會編譯執行一次指令碼,雖然現在又mod_perl,但是感覺來的晚了些。此外編寫這個指令碼還是比較費事的,像上面提到的幾種語言,簡單的拖拽都可以開發出一個漂亮的頁面。(CGI高手請無視我,至少對於新手感覺是這樣子的。)
====================================================================
如何在Tomcat上部署CGI?
1.首先你要有一個Tomcat伺服器
到Apache Tomcat官網上去下載,本文使用的是Tomcat 7系列。如果你選用的是更低的版本,可能本文的配置方法對你不適用。
2.想要運行Tomcat還需要java運行環境。
需要到Oracle官網下載,本文使用為jdk7
3.安裝jdk,設定環境變數,如果需要。以我機器上為例:
JAVA_HOME:C:\Program Files (x86)\Java\jdk1.7.0_25 ---JDK安裝路徑
PATH:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
CATALINA_HOME:E:\apache-tomcat-7.0.53 ---Tomcat解壓位置
4.測試一下:在DOS命令列輸入startup.bat,伺服器啟動,最終給出資訊:INFO: Server startup in 3054 ms
也可以在瀏覽器中輸入:http://localhost:8080/ 查看是否啟動成功
5.Tomcat7支援CGI,但是預設配置是關閉的需要進行如下配置
1.修改Tomcat conf/web.xml中兩處代碼,預設是注釋掉的,去掉注釋即可
<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>
<servlet-mapping> <servlet-name>cgi</servlet-name> <url-pattern>/cgi-bin/*</url-pattern> </servlet-mapping>
2.修改Tomcat conf/context.xml
在標籤<Context>中添加屬性 privileged = "true" ,此時,Tomcat才允許web應用使用容器內的Servlet
<Context privileged="true">
3.此時Tomcat已經可以運行CGI程式了
當一個CGI請求到達Tomcat時,CGIServlet會對其進行攔截,請求的格式為http://.../cgi-bin/xxxx,然後CGIServlet會到相應的項目的WEB-INF/cgi目錄下調用相應的CGI檔案處理請求
6.測試
測試檔案目錄
perl_cgi
|---WEB-INF
|---cgi
|---hello.pl
hello.pl檔案內容
#!C:/strawberry/perl/binperl.exeprint "Content-type: text/html\n\n";print "Hello, world!\n"
在瀏覽器中輸入:http://localhost:8080/perl_cgi/cgi-bin/hello.pl
輸出結果:
Hello, world!