top
Loading...
在Linux上構建JSP環境

隨著網絡的迅猛發展和JAVA語言的流行,許多公司都開始使用JSP來開發自己的動態網站,在Windows系統下配置JSP環境是一件比較容易的事情,但在Linux下配置JSP的環境確比較復雜,筆者查閱多方資料,經過反復摸索和嘗試,終于將其配置成功,現將其方法公布如下:

一、配置過程中使用到的軟件包:

Apache_1.3.12.tar.gz

ApacheJserv-1.1.2.tar.gz

gnujsp-1.0.tar.gz

JSDK-2.0.tar.gz

JDK-1.2.2.tar.gz(For Linux版本)

以上所需軟件可在Apache網站或Sun網站下載。

二、 配置要求

RedHat 5.x 或 6.x (筆者在TurboLinux 4.02/6.0 Bluepoint1.0/2.0 等系統中都順利編譯、配置通過)

JSDK2.0(其實就是需要一個 70多k的jsdk.jar)

gnujsp1.0(其實就是需要里面的jar文件而已)

JDK-1.x.x or JDK-1.2.x(兩個版本都能夠順利通過編譯和配置)

ApacheJserv1.0 or 1.x.x 編譯需要的make,gcc等程序、編譯器與函數庫

三、 基本配置原理

要讓jsp能夠正確解析并運行良好的話,需要確保ajp1.2(apacheJserv protocol1.2)可以正常地在本地(local)端口8007通信,Servlet需要能夠正常執行,并且要合理配置好Jserv的配置文件使gnujsp正確解析jsp文件。本文采用static(靜態)編譯方式編譯 ApacheJserv。

四、 基本步驟

首先要確保ApacheJserv正確編譯并測試通過。然后正確配置ApacheJserv的配置文件,讓gnujsp可以解析jsp文件。

以下是安裝步驟示意圖:

JDK-->JSDK-->apache(基本配置)-->ApacheJserv(配置/編譯)-->apache(配置/編譯/安裝) -->gnujsp-->編輯ApacheJserv配置文件-->測試-->OK

五、 詳細過程

1、安裝JDK

其實不存在什么安裝,只需要將JDK拷貝到一個固定目錄就可以了。這里筆者采用JDK-1.2.2的二進制版本。對于采用1.1.x的讀者,如果是選擇了static的方式 將Apache和ApacheJserv整和,出現故障的時候可以采用DSO模式(建議JDK-1.1.x版本的都采 用DSO模式比較好)。

#tar xfz JDK-1.2.2-linux-i386.tar.gz

#mv JDK-1.2.2 /www/JDK122

2、安裝JSDK

和安裝JDK道理一樣,只需要解包后拷貝到一個固定目錄就可以了。 不過要注意的是,這里實際上只是用到這個包的jsdk.jar文件,所以一定要知道這個文件的路徑。

#tar xfz jsdk-2.0.tar.gz

#mv JSDK-2.0 /www/jsdk

#ls -l /www/jsdk/lib

total 80 -r--r--r-- 1 root root 76453 Jun 28 01:03 jsdk.jar

3、apache基本配置

這個其實并不能說是真正的配置,只是在第一次解包的時候要生成一些必須的.h文件才需要 的一步而已。相當于預配置。

#tar xfz apache_1.3.12.tar.gz

#cd apache_1.3.12

#./configure

#cd ..

這樣就會生成了諸如httpd.h等的頭文件。如果沒有這些文件的話,以后配置ApacheJserv或者 Php3等都會報錯的。

4、ApacheJserv配置與編譯

這里需要使用的指令至少有:

--with-apache-src= (指定了apache源碼的路徑,用于static方式的編譯)

--with-jdk-home= (指定jdk的根目錄)

--with-JSDK= (指定jsdk.jar的目錄,注意是大寫的JSDK!!!)

至于其他的并不是一定要寫,但是建議還是要指定諸如安裝目錄,jdk平臺號碼(1或者2)等。 其中java-platform是這樣指定的:即如果使用的是jdk-1.1.x的就是1(默認是1,可以不寫)。如果是jdk-1.2.x就指定是2。

#tar xfz ApacheJserv-1.1.2.tar.gz

#cd ApacheJserv-1.1.2

#./configure --with-apache-src=http://www.zhujiangroad.com/apache_1.3.12 --prefix=/www/jserv

>--with-jdk-home=/www/jdk122 --with-java-platform=2

>--with-JSDK=/www/jsdk/lib/jsdk.jar --disable-debugging

#make

#make install

#cd ..

5、Apache的配置編譯

關于Apache的配置很多文檔都有說明,這里就不贅述了。

#cd apache_1.3.12

#./configure --prefix=/www/httpd --activate-module=src/modules/jserv/libjserv.a

#make

#make install

6、gnujsp安裝

其實只是需要gnujsp-1.0中的幾個jar文件而已。

#tar xfz gnujsp-1.0.tar.gz

#mkdir /www/gnujsp

#cp gnujsp-1.0/lib/*.jar /www/gnujsp

#mkdir /www/gnujsp/bean_jsp

#ls -l /www/gnujsp

drwxr-xr-x 10 root root 4096 Sep 15 15:56 bean_jsp/

-rw-rw-r-- 1 root root 125972 Sep 15 12:55 gnujsp10.jar

-rw-rw-r-- 1 root root 153015 Sep 15 12:55 gnujsp10test.jar

-rw-rw-r-- 1 root root 37291 Sep 15 12:55 servlet-2.0-plus.jar

-rw-r--r-- 1 root root 38826 Sep 15 12:55 servlet-2.1.jar

7、Jserv配置文件的編輯

這個是jsp是否能夠正確解析使用的關鍵,也是本文的重點。

關鍵點在于設置好jserv的相關文件:

jserv.conf

jserv.properties

zone.properties

或者新建立一個properties文件,編輯的順序大概是:

jserv.conf-->jserv.properties-->zone.properties-->自定義的properties文件。

現在假設你需要定義一個叫gsp的zone,那么可以按照以下步驟和方法編輯相關內容:

*jserv.conf

在編輯這個文件前,請將"include /www/jserv/etc/jserv.conf"這句 添加到apache的httpd.conf文件內。文檔中說這句話可以放到任何地方,不過經過實踐發現:最好還是放到httpd.conf的末尾!!!!!

你可以這樣運行:

#echo "include /www/jserv/etc/jserv.conf" >> /www/httpd/conf/httpd.conf

做好后,再用例如vi編輯器編輯jserv.conf。如果你想記錄(log)jserv的所有動作,那么最好是允許log,去掉以下語句注釋:

ApJServLogFile /www/jserv/logs/mod_jserv.log

然后找到"# Mount point for Servlet zones"這行,這里是定義Servlet zones 的mount點的(類似linux的安裝點)。我們加入以下這行:

ApJServMount /gsp /gsp

接著找到ApJServAction關鍵字,加入以下這行:

ApJServAction .jsp /gsp/gnujsp

這個是定義了.jsp文件是給gnujsp解析的。這樣jserv.conf文件就基本設置好了。

*jserv.properties

這里要設置一下wrapper.classpath,找到wrapper.classpath關鍵字,添加以下這行:

wrapper.classpath=/www/jdk122/lib/tools.jar

接著找到"# Servlet Zones parameters"這行,修改zones=root成為:

zones=root,gsp (添加gsp這個zone)

接著下面幾行在 root.properties=/www/jserv/etc/zone.properties后添加定義gsp的properties行:

gsp.properties=/www/jserv/etc/gsp.properties

基本上jserv.properties就設置好了。

*gsp.properties

至于zone.properties就不需要設置,因為這里定義了一個新的zone-->gsp,起作用的是gsp.properties。

找到: # List of Repositories 這行,然后添加以下幾行:

repositories=/www/gnujsp/gnujsp10.jar

repositories=/www/gnujsp/servlet-2.0-plus.jar

repositories=/www/gnujsp/bean_jsp

其中第三行是定義了bean的響應目錄,這個目錄可以隨便定義。但是必須是真實存在的。

找到"# Servlet Aliases" 這行,添加別名行:

servlet.gnujsp.code=org.gjt.jsp.JspServlet

servlet.gnujsp.initArgs=checkclass=true,(請注意不要斷行回車)



%classpath%:%scratchdir%:/www/gnujsp/servlet-2.0-plus.jar

:/www/gnujsp/gnujsp10.jar

:/www/gnujsp/bean_jsp -d %scratchdir% -deprecation %source%

其中第二行開始到最后結束其實是同一樣,由于篇幅問題才加入了換行符號。 請大家一定要注意盡量使用同一行!!!!!!!,并且注意其中的符號不可以缺少任何一個。

其中一些參數做一下解釋:

pagebase意思是允許解析jsp文件的起始目錄。

scratchdir是生成的.java 和.class文件的臨時目錄。

請大家一定要注意這個目錄必須對nobody是可寫的!!!所以必須用chown命令將這個目錄的owner和group改成nobody。

其后的是classpath是定義搜索的路徑,其中要包括bean的目錄,否則沒辦法使用bean的。另外你也可以增加多幾個類似的目錄,但是必須在以上文件中都要有定義。

至此:基本的設置就全部完成了。接下來就可以進行測試了。

8、測試

首先,確定你已經重新啟動了apache使所有設置生效。然后可以在瀏覽器里輸入“http://localhost/gsp/Hello”,如果出現:

Example Apache JServ Servlet

Congratulations, ApacheJServ 1.1.2 is working!

那么說明servlets運行正常。 然后,就是創建一個test.jsp的文件:


<h1>The Famous JSP Hello Program

<% SString s = "GNUJSP"; %>

The following line should contain the text "Hello GNUJSP World!".

If thats not the case start debugging ...

<p>Hello <%= s %>World!


然后放到htdocs目錄內,并運行。如果正確被執行的話說明一切都基本正常了。

接下來測試一下gnujsp支持中文是否正確。將以上的test.jsp文件修改成中文的字符就可以看出是否正確了。筆者的實驗中發現gnujsp對中文支持很不錯,不需要任何補丁。

六、 注意事項

在詳細步驟中筆者也強調多次了。這里再強調一次。這些也是成功的關鍵點:

第一次解包apache后要先運行configure以產生相應的頭文件。

創建的scratchdir目錄必須是對任何人都是可寫的,用nobody的owner。

對于要使用bean目錄必須也在gsp.properties中定義好,而且需要使用的 bean組件必須放到你指定的bean目錄中。

不需要對系統的path進行修改,一些文章說需要修改,其實并不需要,因為配置文件中有classpath。

(6)結束語

本文之所以將并不是非常復雜的配置過程和原理闡述得如此詳細,就是希望讀者閱讀后能夠正確配置jsp環境,不要再為jsp環境頭疼了。其實除了采用這 個方案外,還可以采用tomcat,jrun等等。gnujsp只是一個廉價的方案。性能和功能并不是很好。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗