我也是參照這里的大俠的文章來進行整合的,關于整合的文章特別是精華基本都看了。但是對于一個菜鳥來說,真的有好多地方看不懂,不僅這些整合的文章,其實對于好多帖子也有這個感覺,所以很希望這些高手能夠多做一些解釋和說明,以解我們心中之惑。
下面談談我對整合理解與疑惑,有太多的不明白,所有其中有很多的臆想成份,請高手指正與解惑。
整合的目的(完全臆想)
------------------------------------------------------------------------------
apache 和 tomcat都可以做為獨立的WEB服務器來用,apache功能強大、高效,但并不能支持JSP及serlet,而tomcat正相反,所以要把它們結合起來。
通過在apache中加載整合模塊和進行設置,apache就能夠根據url,把不屬于自己的請求轉給tomcat.
版本的選擇的相關性:
------------------------------------------------------------------------------
1.Apache
httpd2.0.x,對于與apache1.3.x等版本有什么區別不知道,應該有個飛躍吧,連名字都改成httpd了。而我們選擇了用JK2整合,JK2是針對apache2.0的思想開發的(英語太差,見原文:JK2 has been developed with Apache 2.0 in mind),所以選擇用httpd2.0.x。
2.整合方式-JK2
為什么選擇JK2呢?(JK is a replacement to the elderly mod_jserv. It was a completely new Tomcat-Apache plug-in that handles the communication between Tomcat and Apache.The newest JK2 is a refactoring of JK . The native part has been completly restructured and the configuration has been simplified a lot.)我只看重了最后一句話,呵呵。在JK的文檔中有關于以前的整合模塊及JK、JK2功能的詳細描述。
3.Tomcat5.0、J2SDK1.4.x
能夠支持JAVA,JSP,及Servlet的較新標準吧?它們之間應該有一定的關聯,據說tomcat5及JDK1.4對中文的支持方式改變了不少,現在不用進行復雜的設置了就可以很好的使用中文,但對于針對以前JSP標準開發的頁子的中文兼容性不太好。
編譯安裝過程中的注意事項:
-------------------------------------------------------------------------------
1.Apache
必須編譯成允許動態加載模塊的方式,即在[b:b6d67f26da]configure時要加 --enable-so選項[/b:b6d67f26da],因為將來要加載mod_jk2這個整合模塊。
假設apache的安裝目錄為PathofApache,則編譯的模塊在PathofApache/modules下,配置文件在PathofApache/conf下。
2.tomcat
只會用編譯好的版本。解壓、釋放包就行了。(聽說tomcat是JAVA寫的,不知道用那個ANT編譯有什么優勢也沒試成功過),假設tomcat安裝目錄為PathOfTomcat。
3.JDK
我用的是二進制版本,直接運行,自己解壓釋放包。(如果用那個RPM包我不知道JAVA_HOME怎么設,呵呵)設置JAVA_HOME和CLASSPATH環境變量。JAVA_HOME也可以不設置而在PathOfTomcat/bin/catalina.sh中賦值,CLASSPATH目前我還沒設置,也許在JSP中要用到JAVA標準類的時候要用到。
4。JK2模塊編譯
假設JK2包釋放后目錄改名為PathOfJK2,且當前目錄為PathOfJK2([b:b6d67f26da]參考JK文檔,注意關于編譯的部分在JK部分有說明,而默置要看JK2部分,因為不同的整合方式有很大的不同。http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/
[/b:b6d67f26da])
cd jk/native2
chmod +755 buildconf.sh
./buildconf.sh (因為buildconf.sh沒有執行權,所以要改,但“零二年的夏天”告訴我只要 sh buildconf.sh就可以執行了)
./configure --with-apxs2=PathOfApache/bin/apxs
這個apxs在apache的安裝目錄的bin下,所以要先裝apache。據說只有編譯安裝的apache才有這個文件,rpm包安裝的沒有這個文件,如果要給rpm包安裝的apache編譯整合模塊,要找一個相同版本的編譯一下用然后再刪掉,版本號要完全相同,否則編譯出來的模塊不能用。
還有兩個參數我沒有,英文的說明也沒看太懂,就在JK的文檔中有說明:
--with-apache=DIR,DIR is the path where apache sources are located. The apache sources should have been configured before configuring mod_jk. DIR is something like: /home/apache/apache_1.3.19 It builds a static Apache module.
--enable-EAPI,This parameter is needed when using Apache-1.3 and mod_ssl, otherwise you will get the error message: "this module might crash under EAPI!" when loading mod_jk.so in httpd. Not needed when --with-apxs has been used
另外,我在執行configure的時候提示有錯誤,好像是關于路徑的,我就先啟動了tomcat,執行通過。(也許是我沒有設置關于tomcat目錄的環境變量的原因)
make
make install
所有的文檔都說如果發布不成功,那么要手工發布,我也是手工發布的:
cp PathOfJK2/build/jk2/apache2/mod_jk2.so PathOfApache/modules/
配置文件的修改
-------------------------------------------------------------------------------
[b:b6d67f26da]JK2所用的配置文件有2個:
jk2.properties,默認要放在PathOfTomcat/conf中
workers2.properties默認要放在PathOfApache/conf中[/b:b6d67f26da]
這兩個文件的作用真的不明白,jk2.properties可能是定義tomcat與apache的通訊端口等,workers2.properties可能是告訴apache有哪些目錄是tomcat支持的。
1.在PathOfTomcat/conf中有tomcat的主配置文件server.xml和JK2的配置文件jk2.properties。
[b:b6d67f26da]實際上我對這兩個文件沒有做任何修改[/b:b6d67f26da],而jk2.properties缺省就是空的?戳丝丛趕erver.xml中起作用的可能就是在第一個后面緊挨著的對于整合在起作用吧,沒有應該加上。
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector port="8009" enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />
2.在PathOfApache/conf中有apache的配置文件httpd.conf,及JK2配置文件workers2.properties
[b:b6d67f26da]修改httpd.conf,只加入:LoadModule jk2_module modules/mod_jk2.so[/b:b6d67f26da]
關于workers2.properties,引用JK文檔例子中最小配置如下:
# Define the communication channel
[channel.socket:localhost:8009]
info=Ajp13 forwarding over socket
tomcatId=localhost:8009
# Map the Tomcat examples webapp to the Web server uri space
[uri:/examples/*]
info=Map the whole webapp
這個/examples應該是tomcat下的路徑而不是apache的,但在這里做了映射,這個URL就能被apache接受并轉給tomcat,而不用加tomcat的端口號了。
這樣就完成了一種整合方式,這可能是最簡單但很少用的配置方法吧
——————————————————————————
還有一種配置的方法很實用,但有一點地方不明白,適合做虛擬主機。
1.把apache與tomcat都做虛擬主機,并且相同的主機指向相同的根目錄
2,默認情況下:jk2.properties可為空,workers2.properties不用做地址映射(?)
3.除了做虛擬主機,還要做如下修改
http.conf的修改
在虛擬主機之前加入
<Directory ~ "/WEB-INF/">
Order allow,deny
Deny from all
</Directory>
#因為apache與tomcat指向相同的目錄,所在要禁止對WEB-INF的訪問。
在虛擬主機的配置中
<Location ~ "/*.jsp|/*/servlet/*">
JkUriSet worker ajp13:localhost:8009
</Location>
#這可能是做映射,將目錄中的jsp和servlet由tomcat解析。
server.xml的修改
在虛擬主機的host中加入
<Context path="" docBase="" debug="1"/>
(這個tomcat很奇怪,不像apache只要指定DocumentRoot,那么網站的邏輯根目錄就是DocumentRoot指定的了,而tomcat用appBase指定的應該叫什么呢?要用上面的一句將appBase指定的目錄聲明為根目錄,appBase下其它目錄默認情況下就是網站邏輯子目錄)
關于虛擬主機整合的配置,JK文檔的例子說得很清楚,或看本版的一篇精華。
------------------------
我就理解這么多,對于jk2.properties,workers2.properties,tomcat,apache里的配置參數根本很少了解,我想把它們理解了也許就明白了。。。。。。
誠惶誠恐,請大俠指正,以免害人
icekernel 回復于:2004-04-17 11:15:20 |
server.xml
<Context path="" docBase="/path/yourjsp" debug="0" reloadable="true" crossContext="true"></Context> 這里應該是這樣的吧 docBasej就是你所要定制的目錄 |
只愛一點點 回復于:2004-04-17 11:37:21 |
<Context path="" docBase="/path/yourjsp" debug="0" reloadable="true"
crossContext="true"></Context> 這個設置類似做虛擬目錄,我也不懂。是把/path/yourjsp指定為根嗎?但/path/yourjsp是根對于appBase指定的位置的? 也就是說將appBase指定的目錄中的path/yourjsp目錄指定為根目錄? 但如果<Context path="" docBase="" debug="1"/> 這樣是不是就將appBase目錄指定為根了呢? |
icekernel 回復于:2004-04-17 14:01:35 |
是把/path/yourjsp
這個指定為根 <Context path="" docBase="" debug="1"/> 這樣是不是就將appBase目錄指定為根了呢? 對是把$tomcat/webapps指定為根 |
jhsea3do 回復于:2004-04-17 21:09:47 |
邏輯,物理
相對,絕對 對于配置文件來說,url是邏輯地址,文件采用物理地址 相對地址是針對配置文件的絕對物理地址(或預制變量比如$catalina.home)而言,絕對呢就是前面有根標記"/"的地址了 <Context path="" docBase="/path/yourjsp" debug="0" reloadable="true" crossContext="true"></Context> 的寫法是正確的,但是如果你了解xml的話,你應該這樣寫 <Context path="" docBase="/path/yourjsp" debug="0" reloadable="true" crossContext="true" /> 或者 <Context> <path></path> <docBase>/path/yourjsp</docBase> <debug>0</debug> <reloadable>true</reloadable> <crossContext>true</crossContext> </Context> 這些都相當于對變量進行賦值 如同你在<host />標簽中已經指明host的名稱為localhost,那么你的站點URL就是http://localhost,而<path />標簽是指明其后對象a的uri的起點為$path,如果$path=/pathA,那么uri為/pathA/a,那么和前面站點url在一起就成為了http://localhost/pathA/a,如果$path=NULL,你就可以理解了 <docBase />我就不費口舌了 |
icekernel 回復于:2004-04-18 07:01:15 |
嘿嘿 還是樓上地 寫法規范 |
只愛一點點 回復于:2004-04-18 16:02:09 |
呵呵,以前看到兩種方式覺得怪怪的,原來如此啊。
多謝版主加精。很慚愧,都是看以前的文檔還有JK的文檔,自己并沒有把配置讀通,好多基本的都不理解。 不過有時間我會努力看的,把一些初學、業余的、高手懶得寫的東西補充好,使大家入門更容易些、理解得更多些。 我知道真正的掌握還得靠自己,但是對于初學者來說,比如我英文的理解字面意義都很難,看中文的也不知所云,所以還是希望高手能多些解釋,使我們能更早的入門,這樣才能自己看吧。比如上面的jhsea3do兄能參加討論就很好啊,請高手少一些“不屑一顧”,呵呵 多謝。 |
noah007 回復于:2004-04-18 22:54:42 |
很高興看到這樣的帖子,這才是技術論壇應該具備的氣氛。
不好意思,我水了下,大家繼續。 |
自由狼-臺風0 回復于:2004-06-05 06:47:06 |
編譯那步出錯,把錯誤記錄抓出來了,但是不知道如何解決。
[code:1:fd10aa5652] ../../common/jk_channel_socket.c:74:2: #error "jk_channel_socket is deprecated" make[1]: *** [../../../build/jk2/apache2/jk_channel_socket.lo] Error 1 make: *** [jk2-build] Error 1 [/code:1:fd10aa5652] |
goncha 回復于:2004-06-05 17:22:54 |
看了樓主的帖子,發現還是用socket來鏈接apache和tomcat的,不知有沒有試過inprocess的模式運行apache和tomcat。這種模式下我沒有成功過。 |
只愛一點點 回復于:2004-06-08 13:02:32 |
呵呵,不懂。
只是為了做作業才胡亂看了點東西做了一下。 |
雙眼皮的豬 回復于:2004-06-11 01:01:07 |
可通過ajp13或者jni來做,不過好象有了ajp14啦~hoho~ |
大菠蘿 回復于:2004-06-13 15:07:06 |
可以用mod_jk2來做簡單的負載平衡 |
xiaohe83 回復于:2004-06-14 21:29:29 |
如把/path/yourjsp 指定為根,那WEB-INF/classes是否也該放在/path/youjsp目錄下? |
jhsea3do 回復于:2004-06-14 22:48:56 |
每建立一個webApp項目就需要為其建立一個WEB-INF目錄,存放相關的類庫和配置文件~ |
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/
領測軟件測試網最新更新
關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月