Apache HTTP Server 與Tomcat的整合

               既然 Tomcat 本身已可以提供這樣的服,我們為么還要引入 Apache 或者其他的一些專門 HTTP 器呢?原因有下面幾個:

          1. 提升文件的理性能
          2. 利用 Web 器來做負載均衡以及容
          3. 的升級應用程

          原理:

             tomcat 為一個servelet容器,apache為一個web server,兩者之間通信通過mod_jk的模塊(由web服務器像apache、iis等使用)和Web Server通信Tomcat AJP Connector 的端口是 8009.整個過程其實就是讓apache的httpd.conf文件調用mod_jk.conf,mod_jk.conf調用workers.properties,最后配置虛擬主機。

          文件說明

          mod_jk.conf

          主要定義mod_jk模塊的位置以及mod_jk模塊的連接日志設置,還有定義worker.properties文件的位置。
          worker.properties
          定義worker的參數,主要是連接tomcat主機的地址和端口信息。如果Tomcat與apache不在同一臺機器上,或者需要做多臺機器上tomcat的負載均衡只需要更改workers.properties文件中的相應定義即可。

          APACHE_HOME為你的安裝目錄 

          整合

          1、準備下載下列文件

          Jdk1.5
          下載地址: http://java.sun.com
          tomcat 5.5.9
          下載地址:http://jakarta.apache.org
          apache_2.2.4-win32-x86-no_ssl.msi
          下載地址: http://httpd.apache.org/download.cgi
          mod_jkapache-2.2.3.so

          下載地址:http://archive.apache.org/dist/jakarta/tomcat-connectors/

          2、安裝Jdk、tomcat、apache,加入mod_jk連接模塊,就是把mod_jkapache-2.2.3.so文件重名mod_jk.so文件并拷到%APACHE_HOME"modules

          3、修改apache的配置文件:

          為了保持httpd.conf文件的簡潔,把jk模塊的配置放到單獨的文件中來,就在httpd.conf中增加一行調用
          代碼
           include APACHE_HOMEApache2"conf"mod_jk.conf

          4:配置mod_jk.conf
          請注意使用絕對路徑
          其實最關鍵的就是 第一條 第二條 和最后一條,如果要精簡,就保留這三條內容就可以了。
          代碼
          # Load mod_jk module

          LoadModule jk_module "E:"Program Files"Apache Software Foundation"Apache2.2"modules"mod_jk.so"

          # Where to find workers.properties

          JkWorkersFile "E:"Program Files"Apache Software Foundation"Apache2.2"conf"workers.properties"

          # Where to put jk logs

          JkLogFile "E:"Program Files"Apache Software Foundation"Apache2.2"logs"mod_jk.log"

          # Set the jk log level [debug/error/info]

          JkLogLevel info

          # Select the log format

          JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

          # JkOptions indicate to send SSL KEY SIZE,

          JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

          # JkRequestLogFormat set the request format

          JkRequestLogFormat "%w %V %T"

          # Send servlet for context /examples to worker named ajp13

          #JkMount /servlet/* ajp13

          # Send JSPs for context /examples to worker named ajp13

          JkMount /*.jsp ajp13

          JkMount /*.do ajp13

          上面這一行我們設置了了 /*.jsp ajp13 就是說把所有.jsp結尾的文件都由ajp13這個worker交給tomcat處理了,如果應用被映射為一個.do的URL,這樣就會出錯.解決方法是再添加如下一行:
          代碼
          JkMount /*.do ajp13

          5:配置apache2"conf"workers.properties
          代碼

          workers.tomcat_home=E:"Program Files"Apache Software Foundation"Tomcat 5.5

          workers.java_home=E:"Program Files"Java"jdk1.5.0_08

          worker.list=ajp13

          worker.ajp13.port=8009

          worker.ajp13.host=localhost #

          worker.ajp13.type=ajp13 #

          worker.ajp13.lbfactor=1 #
          worker.list=ajp13
          worker.ajp13.port=8009
          worker.ajp13.host=localhost #
          本機,若上面Tomcat主機不為localhost,作相應修改
          worker.ajp13.type=ajp13 #類型
          worker.ajp13.lbfactor=1 #代理數,不用修改

          第二部分:虛擬主機的配置
          舉例配置2個vhost網站 一個是 localhost ,另一個是 www.ok.com
          當然www.ok.com 是虛擬的,本地測試時,應該修改系統中的hosts文件,添加一行 127.0.0.1 www.ok.com
          1:Apache 虛擬主機配置:
          Httpd.conf文件最后添加
          代碼
          include D:"server"Apache2"conf"vhost.conf

          而vhost.conf內容寫
          代碼
          NameVirtualHost *:80
          <VirtualHost *:80>
          ServerAdmin webmaster at localhost
          DocumentRoot "D:/server/Tomcat/webapps/ROOT"
          ServerName localhost
          ErrorLog logs/localhost-error_log
          CustomLog logs/localhost-access_log common
          </VirtualHost>

          <VirtualHost *:80>
          ServerAdmin webmaster@dummy-host dot example.com
          DocumentRoot D:/server/www/
          ServerName www.ok.com
          ErrorLog logs/ok.com-error_log
          CustomLog logs/ok.com-access_log common
          <Location /server-status> #
          這樣我可以看到apache服務器狀態
          SetHandler server-status
          Order deny,allow
          Deny from all
          Allow from localhost
          Allow from www.ok.com
          </Location>
          </VirtualHost>

          2:Tomcat虛擬主機配置
          添加新的www.ok.com 虛擬主機,在tomcat安裝路徑"conf"server.xml的最后,找到<Engine>段,改為
          代碼
          <Engine>
          <Host name=”localhost” ……>
          </Host>

          <Host name="www.ok.com" debug="0" appBase="D:/server/www/" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
          <Context path="" docBase="." />
          <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="ok.com_log." suffix=".txt" timestamp="true" />
          </Host>
          </Engine>

          3:測試虛擬主機效果
          訪問http://localhost/ 應該可以看到原來的tomcat默認頁面。
          寫一個 index.jsp
          代碼
          <html>
          <title>
          test jsp
          </title>
          <%
          String showMessage="Oh My God!";
          out.print(showMessage);
          %>
          </html>

          放在d:/server/www下面,訪問 http://www.ok.com
          頁面顯示Oh My God! 就成功了

          posted on 2008-08-15 14:03 范永強 閱讀(839) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 哈巴河县| 宁安市| 铁岭市| 怀远县| 武城县| 长武县| 霍州市| 饶河县| 册亨县| 敖汉旗| 遵化市| 内丘县| 拉萨市| 西林县| 巴南区| 双桥区| 鄢陵县| 大新县| 犍为县| 兰西县| 忻州市| 兴和县| 鄂伦春自治旗| 凤翔县| 齐齐哈尔市| 古交市| 西充县| 保定市| 浠水县| 和平区| 海门市| 宜都市| 龙胜| 行唐县| 双辽市| 永州市| 开封市| 黄冈市| 西华县| 新郑市| 海口市|