應用,一定要應用

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            25 Posts :: 0 Stories :: 118 Comments :: 0 Trackbacks

          ???????????????在網上找了一些文檔,還是覺得不是很清楚,自己走了些彎路,才把這個配置好,還是寫下來吧,以備后查。

          1.?? 目標

          使用 apache tomcat 配置一個可以應用的 web 網站,要達到以下要求:

          1、? Apache 做為 HttpServer ,后面連接多個 tomcat 應用實例,并進行負載均衡。

          2、? 為系統設定 Session 超時時間,包括 Apache tomcat

          3、? 為系統屏蔽文件列表,包括 Apache tomcat

          2.?? 安裝 tomcat

          2.1. 下載,解壓 tomcat

          不要下載安裝版 , 下載地址

          http://tomcat.apache.org/

          2.2. 配置 tomcat

          2.2.1. ??? 配置 server 的關閉口

          我們需要在一臺機器上跑 2 個不同的 tomcat ,需要修改不同的 tomcat 的關閉口,避免出現端口被占用的情況。在 server.xml 中找到 server, 將:

          <Server port="8005" shutdown="SHUTDOWN">

          改為

          <Server port="XXXX" shutdown="SHUTDOWN">

          XXXX 在這里表示不同的端口:我的兩個 tomcat 分別使用 8035 8045

          ?

          注意:這里之所以要配置不同的 tomcat 關閉口,只是因為我們使用了多個 tomcat ,其實用一個 server 多個實例也可以。

          2.2.2. ??? 配置 service

          我們需要對不同的 tomcat service 取不同的名字,在 server.xml 中找到:

          <Service name="Catalina">

          改為:

          <Service name="XXXX">

          兩個 service 分別為 tomcat6 tomcat5

          2.2.3. ??? 配置 Connector

          這個部分主要是要改兩個 Connector ,當然前提是你的 tomcat 只有兩個 Connector

          修改 ajp1.3 的端口:

          找到: <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

          改為: <Connector port="XXXX" protocol="AJP/1.3" redirectPort="8443" />

          兩個 Service ajp/1.3 的端口分別為: 8019 8029

          修改 http 的端口:

          找到:

          <Connector port="8080" protocol="HTTP/1.1"

          ?????????????? maxThreads="150" connectionTimeout="20000"

          ?????????????? redirectPort="8443" />

          改為:

          <Connector port="XXXX" protocol="HTTP/1.1"

          ?????????????? maxThreads="150" connectionTimeout="20000"

          ?????????????? redirectPort="8443" />

          兩個 Service ajp/1.3 的端口分別為: 8060 8070

          2.2.4. ??? 配置 Engine

          Engine 主要是配置 jvmRoute 屬性,找到:

          <Engine name="Catalina" defaultHost="localhost">

          改為:

          <Engine jvmRoute="XXXX" name="Catalina" defaultHost="localhost">

          兩個實例分別為: tomcat6 tomcat5.

          2.2.5. ??? 配置公用性 Context

          如果有 Context 是多個系統公用的,比如圖片等的存放地,可以做個配置:

          Host 中增加:

          <Context path="/image" docBase="D:\webRoot\image" debug="0" reloadable="false" crossContext="true">

          </Context>

          2.2.6. ??? 屏蔽文件列表

          打開 tomcat 目錄下的 conf/web.xml

          找到:

          <servlet>

          ??????? <servlet-name>default</servlet-name>

          ??????? <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

          ??????? <init-param>

          ??????????? <param-name>debug</param-name>

          ??????????? <param-value>0</param-value>

          ??????? </init-param>

          ??????? <init-param>

          ??????????? <param-name>listings</param-name>

          ??????????? <param-value>true</param-value>

          ??????? </init-param>

          ??????? <load-on-startup>1</load-on-startup>

          ??? </servlet>

          listings 參數改為 false;

          2.3. 配置應用 (web.xml)

          對系統應用做些控制。

          配置 session 過期時間,大多數網站用戶都只是做些瀏覽性的操作,為了減輕服務器負載壓力,我們將 session 超時時間從默認的 30 分鐘變為 5 分鐘。

          web 應用程序的 web.xml servlet-mapping 之后增加如下一段:

          <session-config>

          ??? <session-timeout>5</session-timeout>

          </session-config>

          3.?? 安裝 Apache

          3.1. 下載、安裝 Apache

          下載地址 http://httpd.apache.org/download.cgi

          下載后點擊安裝 msi 文件。

          安裝的時候沒有什么特別需要注意的地方,按照默認就行了。是否安裝為 service 看具體情況而定。

          3.2. 下載、安裝 Apache tomcat Connector

          http://tomcat.apache.org/download-connectors.cgi

          注意,很多網站上都介紹是 JK2 ,可能是覺得 JK2 JK 要新吧,其實 JK2 已經停止研發了,建議使用 jk1.2

          下載壓縮包,之后將 module 目錄中的 mod_jk-apache****.so 文件放入 /module/ 目錄下。

          3.3. 配置 Apache httpd.conf

          3.3.1. ??? 配置端口:

          找到

          Listen 80

          改為

          Listen **

          當然如果不需要改的話,就不用改了。正常情況無須更改。

          3.3.2. ??? 配置 DocumentRoot

          找到 DocumentRoot 段,將其改為:

          DocumentRoot "E:/MyWebsite"

          這里的 "E:/MyWebsite" 指的是你的 web 程序的根路徑,視具體應用而定。

          3.3.3. ??? 配置 serverName

          找到 serverName 這個段,將其配置為你的 ServerName

          如果沒有配置為域名,配為 IP 也可以,此處還不是很清楚,多虛擬主機的情況的配置。

          3.3.4. ??? 配置虛擬主機

          <VirtualHost *:80>

          ??? ServerAdmin flyffa@gmail.com

          ??? DocumentRoot?????? E:/MyWebsite

          ??? ServerName localhost

          ??? DirectoryIndex index.html index.htm index.jsp

          ??? ErrorLog logs/error_log

          ??? CustomLog logs/access_log common

          ??? ErrorDocument 404 /sys/logon.jsp

          </VirtualHost>

          3.4. 配置 JK 方式的負載均衡

          3.4.1. ??? 配置 module

          我們需要與 tomcat 做連接,所以要把 tomcat connector 的模塊配置進去。

          LoadModule 部分加入:

          LoadModule jk_module modules/mod_jk-apache-2.0.55.so -加載模塊

          (根據網友于偉的建議,補上一段,mod_jk的版本會根據大家下載的版本不同,有不同的名字,請大家注意)
          這個
          so 是我下載的版本,個人可以根據自己下載的文件名加以配置

          JkWorkersFile conf/workers.properties -指定 connector 的配置文件名稱

          JkLogFile logs/mod_jk.log -指定 connector 的日志文件名稱

          JkLogLevel info -指定 connector 的日志等級

          3.4.2. ??? 配置 worker 列表 (conf/workers.properties)

          定義列表

          worker.list=tomcat6,tomcat5,loadbalancer

          定義一個名為 “loadbalancer” worker

          其作為對多個 Tomcat 進程的負載平衡使用:

          worker.loadbalancer.type=lb

          worker.loadbalancer.balanced_workers=tomcat5, tomcat6

          負載平衡類型的 worker 并不與 Tomcat worker 通訊,它負責管理這些 Tomcat worker

          定義多個 worker 列表

          # Set properties for tomcat6 (ajp13)

          worker.tomcat6.type=ajp13

          worker.tomcat6.host=localhost

          worker.tomcat6.port=8019

          worker.tomcat6.lbfactor=50

          worker.tomcat6.cachesize=10

          worker.tomcat6.cache_timeout=600

          worker.tomcat6.socket_keepalive=1

          worker.tomcat6.reclycle_timeout=300

          ?

          # Set properties for tomcat5 (ajp13)

          worker.tomcat5.type=ajp13

          worker.tomcat5.host=localhost

          worker.tomcat5.port=8029

          worker.tomcat5.lbfactor=50

          worker.tomcat5.cachesize=10

          worker.tomcat5.cache_timeout=600

          worker.tomcat5.socket_keepalive=1

          worker.tomcat5.reclycle_timeout=300

          注意: lbfactor= 50 當此 Tomcat worker 被用于一個負載平衡 worker 使用時,此屬性將被使用。它定義了此 worker 的負載平衡權值。

          cachesize= 10 當在多線程的 web server (例如 apache2.0 IIS Netscape )中使用 JK 時,此屬性是有效的。如果將 cachesize 的值設置為較高的值,這些支持多線程的 web server 將獲得很好的處理能力。如果此屬性不被設置,則連接 cache 特性將失效。

          3.4.3. ??? 配置 Apache tomcat 的橋接

          DocumnetRoot 片段下加入

          JkMount /*.jsp tomcat6

          JkMount /*.do tomcat6

          JkMount /*Servlet tomcat6

          這里只是簡單的將 apache 的請求轉到其中的一個 tomcat 中,形成橋接,至于負載均衡的時候,就無須進行這步操作,直接啟動負載均衡。啟動負載均衡見下一節。

          3.4.4. ??? 啟動負載均衡

          DocumnetRoot 片段下加入

          JkMount /*.jsp loadbalancer

          JkMount /*.do loadbalancer

          JkMount /*Servlet loadbalancer

          -指定對所有的請求啟動負載均衡,這里的 loadbalancer 定義的 worker 的名字

          這里我在配置的時候犯了兩個錯誤:

          第一是沒有配置 JkWorkersFile conf/workers.properties ,以為 Apache 會自動認識(其實 apache 是自動產生了一個叫做 ajp13 worker ,指向本機的 8009 端口)。

          第二是以為 JkMount 語句中出現 loadbalancer,ajp13 之類的是系統設定的東西,其實都是在 workers.properties 文件中定義的,結果出現名字不匹配的情況。后來配置了 JkLogFile logs/mod_jk.log 之后看到錯誤日志才明白。

          3.5. 配置 Proxy 方式的負載均衡

          使用 Apache2.1 以上的版本,就可以用 mod_proxy_ajp 來完成負載均衡的配置,不過到目前為止,沒有看到如何讓 Apache 負責靜態部分, tomcat 負責動態部分的配置方式,只能用 path 進行區分分發請求。如:在虛擬主機的配置中增加:

          ProxyPass / ajp://localhost:8019/

          ProxyPassReverse / ajp://localhost:8019/

          而形如:

          ProxyPass /*.jsp ajp://localhost:8019/

          ProxyPassReverse /*.jsp ajp://localhost:8019/

          這樣的配置是不能通過的。

          請高手指教。

          posted on 2006-11-06 11:49 flyffa 閱讀(3246) 評論(9)  編輯  收藏 所屬分類: 其他應用

          Feedback

          # re: 【服務配置】apache+tomcat配置負載均衡的網站 2006-11-06 12:47 fengzl
          兄弟怎么沒寫完阿  回復  更多評論
            

          # re: 【服務配置】apache+tomcat配置負載均衡的網站 2006-11-06 13:16 flyffa
          剛剛補完,呵呵,mod_proxy我沒有找到解決Apache和tomcat分別負責一塊的方式。  回復  更多評論
            

          # re: 【服務配置】apache+tomcat配置負載均衡的網站 2006-11-06 13:47 Robin's Java World
          好文章,很有價值!
          贊一個!!!  回復  更多評論
            

          # re: 【服務配置】apache+tomcat配置負載均衡的網站 2006-11-06 14:00 fengzl
          寫得不錯,加油  回復  更多評論
            

          # re: 【服務配置】apache+tomcat配置負載均衡的網站 2006-11-15 11:32 饒志華
          謝謝分享  回復  更多評論
            

          # re: 【服務配置】apache+tomcat配置負載均衡的網站 2007-01-17 16:12 于偉
          為什么我在apache的conf/httpd.conf的配置文件里面加上下面這個的時候,apache就啟動失敗?

          LoadModule jk_module modules/mod_jk-apache-2.0.so
          JkWorkersFile conf/workers.properties
          JkLogFile logs/mod_jk.log
          JkLogLevel info

          我的msn
          sardingking@hotmail.com
          歡迎大家加我一起討論  回復  更多評論
            

          # re: 【服務配置】apache+tomcat配置負載均衡的網站 2007-01-18 15:52 yuwei
          版主,
          你的這篇文章寫的很好,對我促進很大,我今天也簡單的配置出來了,但是你的文章中有一個小小的不足

          在 LoadModule 部分加入:

          LoadModule jk_module modules/mod_jk-apache-2.0.55.so -加載模塊

          這個 so 是我下載的版本,個人可以根據自己下載的文件名加以配置

          其實下載的文件應該更名為mod_jk.so
          不然apache一直起不來,我就因為誒這個問題block了很長時間,呵呵,個人拙見,最近在高集群,我的msn
          sardingking@hotmail.com   回復  更多評論
            

          # re: 【服務配置】apache+tomcat配置負載均衡的網站 2007-01-19 11:51 flyffa
          實在是不好意思,我馬上做個修改  回復  更多評論
            

          # re: 【服務配置】apache+tomcat配置負載均衡的網站 2007-01-30 00:12 于偉
          版主,
          請問你的環境做過壓力測試沒有,我發現apache的性能占用很大啊,歡迎加我的msn討論啊  回復  更多評論
            

          主站蜘蛛池模板: 太和县| 荣昌县| 永登县| 和静县| 同江市| 陈巴尔虎旗| 康定县| 凤阳县| 漳州市| 汕头市| 威宁| 临西县| 甘洛县| 潼关县| 嘉祥县| 胶州市| 通州区| 腾冲县| 丽水市| 阿瓦提县| 盐津县| 顺义区| 江油市| 临夏县| 营口市| 定远县| 武宣县| 麟游县| 麻阳| 新乐市| 三河市| 体育| 张家港市| 武陟县| 弋阳县| 和龙市| 无为县| 塘沽区| 河源市| 大连市| 湘西|