<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評(píng)論 :: 0 Trackbacks
    最近在服務(wù)器上需要配置多個(gè)應(yīng)用,使用apache+tomcat搭配,采用mod_jk進(jìn)行分配。
    剛開(kāi)始在同一個(gè)tomcat中配置了多個(gè)應(yīng)用,后來(lái)感覺(jué)效果不好,改為每個(gè)tomcat對(duì)應(yīng)一個(gè)應(yīng)用。搜索資料如下:
    apache2.2與tomcat集成(可以多個(gè)tomcat)
    1. 安裝apache2.2 參見(jiàn):http://ttitfly.javaeye.com/admin/show/127337

    2.需求概況:
    有2個(gè)服務(wù):www.test.com, bbs.test.com。分別對(duì)應(yīng)2個(gè)tomcat下的2個(gè)web應(yīng)用。由apache httpd作為互聯(lián)網(wǎng)接入服務(wù)器,在80端口接收對(duì)這2個(gè)服務(wù)的請(qǐng)求。apache httpd再將這2個(gè)請(qǐng)求分別對(duì)應(yīng)到不同的后端web服務(wù)器(Tomcat)處理。

    3.配置域名映射到本機(jī)即127.0.0.1,同時(shí)配置service域名

    1. 127.0.0.1    localhost www.test.com www.service.test.com bbs.test.com bbs.service.test.com  


    4. 分別在2個(gè)tomcat里分別部署一個(gè)非常簡(jiǎn)單的應(yīng)用。

    第一個(gè)tomcat :端口:8080

    編輯$TOMCAT_HOME/conf/server.xml

    添加一個(gè)Host
    <Host name="www.service.test.com" unpackWARs="true" autoDeploy="true"  
    1. xmlValidation="false" xmlNamespaceAware="false"/>  


    再在$TOMCAT_HOME/conf/Catalina下建立一個(gè)目錄:www.service.test.com
    然后在www.service.test.com目錄下建立一個(gè)ROOT.xml,內(nèi)容為:
     
    1. <Context docBase="/home/mahaibo/app/test"  
    2. privileged="true" antiResourceLocking="false" antiJARLocking="false">   
    3. </Context>  

    docBase指向具體的項(xiàng)目路徑

    同理第二個(gè)tomcat(端口8088)也是一樣的做法:

    編輯$TOMCAT_HOME/conf/server.xml

    添加一個(gè)Host:
     
    1. <Host name="bbs.service.test.com" unpackWARs="true" autoDeploy="true"  
    2. xmlValidation="false" xmlNamespaceAware="false"/>  



    然后在$TOMCAT_HOME/conf/Catalina下建立一個(gè)目錄:bbs.service.test.com

    再在bbs.service.test.com目錄下建立一個(gè)ROOT.xml,內(nèi)容為:
     
    1. <Context docBase="/home/mahaibo/app/bbs"  
    2. privileged="true" antiResourceLocking="false" antiJARLocking="false">   
    3. </Context>  


    5. 分別啟動(dòng)tomcat,可以通過(guò)http://www.service.test.com:8080和http://bbs.service.test.com:8088訪問(wèn)

    6. 配置apache httpd.conf文件。

    找到apach/conf/httpd.conf文件,確認(rèn)下面這些文字行前面沒(méi)有"#"注釋號(hào):

     
    1. LoadModule proxy_module modules/mod_proxy.so   
    2. LoadModule proxy_ajp_module modules/mod_proxy_ajp.so   
    3. LoadModule proxy_balancer_module modules/mod_proxy_balancer.so   
    4. LoadModule proxy_connect_module modules/mod_proxy_connect.so   
    5. LoadModule proxy_http_module modules/mod_proxy_http.so   
    6. LoadModule proxy_ftp_module modules/mod_proxy_ftp.so  


    并增加虛擬主機(jī)配置:
     
    1. NameVirtualHost *:80  
    2. <VirtualHost *:80>   
    3. ServerName www.test.com   
    4. ProxyIOBufferSize 8192  
    5. ProxyRequests Off   
    6. ProxyVia Full   
    7. ProxyPass / http://www.service.test.com:8080/ smax=5 max=20 ttl=120 retry=300   
    8. </VirtualHost>   
    9.   
    10. <VirtualHost *:80>   
    11. ServerName bbs.test.com   
    12. ProxyIOBufferSize 8192  
    13. ProxyRequests Off   
    14. ProxyVia Full   
    15. ProxyPass / http://bbs.service.test.com:8088/ smax=5 max=20 ttl=120 retry=300   
    16. </VirtualHost>  


    7.啟動(dòng)apache
     
    1. ./<SPAN class=hilite1>apache</SPAN>ctl start  



    8 可以通過(guò)訪問(wèn)http://www.test.com和http://bbs.test.com來(lái)分別訪問(wèn)2個(gè)不同tomcat下的不同應(yīng)用了。
     



    apache+tomcat配置負(fù)載均衡的網(wǎng)站

    1.   目標(biāo)

    使用 apache tomcat 配置一個(gè)可以應(yīng)用的 web 網(wǎng)站,要達(dá)到以下要求:

    1、 Apache 做為 HttpServer ,后面連接多個(gè) tomcat 應(yīng)用實(shí)例,并進(jìn)行負(fù)載均衡。

    2、 為系統(tǒng)設(shè)定 Session 超時(shí)時(shí)間,包括 Apache tomcat

    3、 為系統(tǒng)屏蔽文件列表,包括 Apache tomcat

    2.   安裝 tomcat

    2.1. 下載,解壓 tomcat

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

    http://tomcat.apache.org

    2.2. 配置 tomcat

    2.2.1.     配置 server 的關(guān)閉口

    我們需要在一臺(tái)機(jī)器上跑 2 個(gè)不同的 tomcat ,需要修改不同的 tomcat 的關(guān)閉口,避免出現(xiàn)端口被占用的情況。在 server.xml 中找到 server, 將:

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

    改為

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

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

    注意:這里之所以要配置不同的 tomcat 關(guān)閉口,只是因?yàn)槲覀兪褂昧硕鄠€(gè) tomcat ,其實(shí)用一個(gè) server 多個(gè)實(shí)例也可以。

    2.2.2.     配置 service

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

    <Service name="Catalina">

    改為:

    <Service name="XXXX">

    兩個(gè) service 分別為 tomcat6 tomcat5

    2.2.3.     配置 Connector

    這個(gè)部分主要是要改兩個(gè) Connector ,當(dāng)然前提是你的 tomcat 只有兩個(gè) Connector

    修改 ajp1.3 的端口:

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

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

    兩個(gè) 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" />

    兩個(gè) Service ajp/1.3 的端口分別為: 8060 8070

    2.2.4.     配置 Engine

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

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

    改為:

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

    兩個(gè)實(shí)例分別為: tomcat6 tomcat5.

    2.2.5.     配置公用性 Context

    如果有 Context 是多個(gè)系統(tǒng)公用的,比如圖片等的存放地,可以做個(gè)配置:

    Host 中增加:

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

    </Context>

    2.2.6.     屏蔽文件列表

    打開(kāi) 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 參數(shù)改為 false;

    2.3. 配置應(yīng)用 (web.xml)

    對(duì)系統(tǒng)應(yīng)用做些控制。

    配置 session 過(guò)期時(shí)間,大多數(shù)網(wǎng)站用戶都只是做些瀏覽性的操作,為了減輕服務(wù)器負(fù)載壓力,我們將 session 超時(shí)時(shí)間從默認(rèn)的 30 分鐘變?yōu)?/span> 5 分鐘。

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

    <session-config>

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

    </session-config>

    3.   安裝 Apache

    3.1. 下載、安裝 Apache

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

    下載后點(diǎn)擊安裝 msi 文件。

    安裝的時(shí)候沒(méi)有什么特別需要注意的地方,按照默認(rèn)就行了。是否安裝為 service 看具體情況而定。

    3.2. 下載、安裝 Apache tomcat Connector

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

    注意,很多網(wǎng)站上都介紹是 JK2 ,可能是覺(jué)得 JK2 JK 要新吧,其實(shí) JK2 已經(jīng)停止研發(fā)了,建議使用 jk1.2

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

    3.3. 配置 Apache httpd.conf

    3.3.1.     配置端口:

    找到

    Listen 80

    改為

    Listen **

    當(dāng)然如果不需要改的話,就不用改了。正常情況無(wú)須更改。

    3.3.2.     配置 DocumentRoot

    找到 DocumentRoot 段,將其改為:

    DocumentRoot "E:/MyWebsite"

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

    3.3.3.     配置 serverName

    找到 serverName 這個(gè)段,將其配置為你的 ServerName

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

    3.3.4.     配置虛擬主機(jī)

    <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 方式的負(fù)載均衡

    3.4.1.     配置 module

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

    LoadModule 部分加入:

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

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

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

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

    JkLogLevel info -指定 connector 的日志等級(jí)

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

    定義列表

    worker.list=tomcat6,tomcat5,loadbalancer

    定義一個(gè)名為 “loadbalancer” worker

    其作為對(duì)多個(gè) Tomcat 進(jìn)程的負(fù)載平衡使用:

    worker.loadbalancer.type=lb

    worker.loadbalancer.balanced_workers=tomcat5, tomcat6

    負(fù)載平衡類型的 worker 并不與 Tomcat worker 通訊,它負(fù)責(zé)管理這些 Tomcat worker

    定義多個(gè) 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 當(dāng)此 Tomcat worker 被用于一個(gè)負(fù)載平衡 worker 使用時(shí),此屬性將被使用。它定義了此 worker 的負(fù)載平衡權(quán)值。

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

    3.4.3.     配置 Apache tomcat 的橋接

    DocumnetRoot 片段下加入

    JkMount /*.jsp tomcat6

    JkMount /*.do tomcat6

    JkMount /*Servlet tomcat6

    這里只是簡(jiǎn)單的將 apache 的請(qǐng)求轉(zhuǎn)到其中的一個(gè) tomcat 中,形成橋接,至于負(fù)載均衡的時(shí)候,就無(wú)須進(jìn)行這步操作,直接啟動(dòng)負(fù)載均衡。啟動(dòng)負(fù)載均衡見(jiàn)下一節(jié)。

    3.4.4.     啟動(dòng)負(fù)載均衡

    DocumnetRoot 片段下加入

    JkMount /*.jsp loadbalancer

    JkMount /*.do loadbalancer

    JkMount /*Servlet loadbalancer

    -指定對(duì)所有的請(qǐng)求啟動(dòng)負(fù)載均衡,這里的 loadbalancer 定義的 worker 的名字

    這里我在配置的時(shí)候犯了兩個(gè)錯(cuò)誤:

    第一是沒(méi)有配置 JkWorkersFile conf/workers.properties ,以為 Apache 會(huì)自動(dòng)認(rèn)識(shí)(其實(shí) apache 是自動(dòng)產(chǎn)生了一個(gè)叫做 ajp13 worker ,指向本機(jī)的 8009 端口)。

    第二是以為 JkMount 語(yǔ)句中出現(xiàn) loadbalancer,ajp13 之類的是系統(tǒng)設(shè)定的東西,其實(shí)都是在 workers.properties 文件中定義的,結(jié)果出現(xiàn)名字不匹配的情況。后來(lái)配置了 JkLogFile logs/mod_jk.log 之后看到錯(cuò)誤日志才明白。

    3.5. 配置 Proxy 方式的負(fù)載均衡

    使用 Apache2.1 以上的版本,就可以用 mod_proxy_ajp 來(lái)完成負(fù)載均衡的配置,不過(guò)到目前為止,沒(méi)有看到如何讓 Apache 負(fù)責(zé)靜態(tài)部分, tomcat 負(fù)責(zé)動(dòng)態(tài)部分的配置方式,只能用 path 進(jìn)行區(qū)分分發(fā)請(qǐng)求。如:在虛擬主機(jī)的配置中增加:

    ProxyPass / ajp://localhost:8019/

    ProxyPassReverse / ajp://localhost:8019/

    而形如:

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

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

    這樣的配置是不能通過(guò)的。

    posted on 2008-08-25 23:14 seal 閱讀(14588) 評(píng)論(0)  編輯  收藏 所屬分類: web服務(wù)器
    主站蜘蛛池模板: 久久精品亚洲男人的天堂| 亚洲国产香蕉人人爽成AV片久久| 好吊妞在线成人免费| 国产在线观看免费视频播放器| 亚洲精品成a人在线观看| 亚洲成AV人片天堂网无码| 亚洲日韩中文字幕| 亚洲日韩在线中文字幕综合| 国产精品免费看久久久香蕉| 无码国产精品一区二区免费vr | 日日躁狠狠躁狠狠爱免费视频| 免费无码又爽又刺激一高潮| 4hu四虎最新免费地址| 国产精品va无码免费麻豆| 亚洲欧洲成人精品香蕉网| 亚洲一区二区三区国产精品无码| 羞羞视频免费网站含羞草| 国产成人免费视频| 午夜高清免费在线观看| 亚洲男同帅GAY片在线观看| 亚洲成a人片在线看| 久久精品成人免费国产片小草| 91九色精品国产免费| 亚洲精品国产V片在线观看| 久久亚洲AV成人无码软件| 日韩欧美亚洲中文乱码| 污污网站免费观看| 国产一级高清免费观看| 亚洲最新视频在线观看| 亚洲精品动漫免费二区| 国产一级片免费看| 国产精品免费看久久久无码| 久久夜色精品国产噜噜亚洲AV| 美美女高清毛片视频黄的一免费| 久久久高清日本道免费观看| 国产精品jizz在线观看免费| 日韩精品亚洲人成在线观看| 日本激情猛烈在线看免费观看| 曰批视频免费30分钟成人| 亚洲综合国产一区二区三区| 亚洲码和欧洲码一码二码三码|