歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

談談我對apache+tomcat+jk2整合的理解

  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.)還有很多詳細的描述,但我只看懂了最後一句話,呵呵     3.Tomcat5.0、J2SDK1.4.x   能夠支持Java,JSP,及Servlet的較新標准吧?它們之間應該有一定的關聯,據說tomcat5及JDK1.4對中文的支持改進了不少,不用進行復雜的設置了,但對於針對以前JSP標准開發的頁子的中文兼容性不太好。     編譯安裝過程中的注意事項:   -------------------------------------------------------------------------------   1.Apache   必須編譯成允許動態加載模塊的方式,即在configure時要加 --enable-so選項,因為將來要加載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(參考JK文檔,注意關於編譯的部分在JK部分有說明,而默置要看JK2部分,因為不同的整合方式有很大的不同。http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/   )     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,執行通過。   make   make install     所有的文檔都說如果發布不成功,那麼要手工發布,我也是手工發布的:   cp PathOfJK2/build/jk2/apache2/mod_jk2.so PathOfApache/modules/     配置文件的修改   -------------------------------------------------------------------------------   JK2所用的配置文件有2個:   jk2.properties,默認要放在PathOfTomcat/conf中   workers2.properties默認要放在PathOfApache/conf中   這兩個文件的作用真的不明白,jk2.properties可能是定義tomcat與apache的通訊端口等,workers2.properties可能是告訴apache有哪些目錄是tomcat支持的。     1.在PathOfTomcat/conf中有tomcat的主配置文件server.XML和JK2的配置文件jk2.properties。       實際上我對這兩個文件沒有做任何修改,而jk2.properties缺省就是空的。看了看在server.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   修改httpd.conf,只加入:LoadModule jk2_module modules/mod_jk2.so   關於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目錄,這個目錄就能被apache轉給tomcat而不用加tomcat的端口號了。   這可能是最簡單但很少用的配置方法吧   ——————————————————————————     還有一種配置的方法很實用但沒看懂,適合做很多的虛擬主機。   把apache與tomcat都做虛擬主機,並相同的主機指向相同的根目錄   不改端口 jk2.properties可為空,workers2.properties不用做地址映射(?)。     在http.conf中再加入   <Directory ~ "/WEB-INF/">   Order allow,deny   Deny from all   </Directory>   #因為是相同的目錄,所在要禁止對WEB-INF的訪問。     <Location ~ "/*.jsp/*/servlet/*">   JkUriSet worker ajp13:localhost:8009   </Location>   #這可能是做映射,將目錄中的jsp和servlet由tomcat解析。     在server.xml中 除了做虛擬主機,可能特別要加入   <Context path="" docBase="" debug="1"/>




Copyright © Linux教程網 All Rights Reserved