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

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

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

    隨筆 - 225  文章 - 98  trackbacks - 0
    <2012年3月>
    26272829123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    隨筆分類

    相冊(cè)

    報(bào)表工具廠商們

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    Connector的選擇
       
    選擇合適的Connector對(duì)于性能、配置的方便性有很重要的影響,目前大致上有JK1。x, JK2, mod_webapp三種connector可以使用。 JK使用比較廣泛。JK2是JK1.x的改進(jìn),比較新。但是不太容易配置,相關(guān)的文檔也比較少。此外,JK可以支持其他Web服務(wù)器和tomcat的集成。 但mod_webapp不支持。 因此,目前JK1.x是最好的選擇。
    獲得JK
    使用二進(jìn)制版本
    如果你對(duì)手工編譯源代碼心有余悸,使用二進(jìn)制版本也許是個(gè)明智的選擇。你可以從http://apache。linuxforum。net/dist/jakarta/tomcat-connectors/jk/binaries/下載JK1.x的最新版本。
    然而,不幸的是二進(jìn)制版本的JK和Apache的版本是捆綁在一起的,如果你使用了比較新的Apache(比如httpd-2.0.29)的話,往往很難找到對(duì)應(yīng)的二進(jìn)制版本的JK。
    手工編譯源代碼
    對(duì)于不同的操作系統(tǒng)和Apache的版本,如果沒有預(yù)編譯好的JK,則需要進(jìn)行手工編譯。除了Linux以外,其他操作系統(tǒng)一般不會(huì)安裝編譯環(huán)境。這時(shí)你還需要安裝編譯器。典型的例子是在Solaris上安裝GCC,或是在Windows上安裝Visual C++。另外,通常Open Source的軟件一般都是用GNU的autoconf、automake生成自動(dòng)配置腳本和Makefile的,JK也不例外。除了Linux以外的Unix系統(tǒng)中的make不一定能夠兼容這些腳本。 所以如果你碰到這些問題就需要安裝gmake。下面以Solaris8為例說明如何安裝配置編譯環(huán)境:
    在Solaris8中系統(tǒng)自帶的make不能兼容automake產(chǎn)生的某些Makefile。
    需要的軟件包:
    gcc-3.3-sol9-sparc-local.gz
    make-3.80-sol8-sparc-local.tar.gz
    所有需要的軟件包都可以在www.sunfreeware.com上下載到。
    解壓縮:

    $gunzip gcc-3.3-sol9-sparc-local.gz

    $gunzip make-3.80-sol8-sparc-local.gz


    用pkgadd安裝,需要root權(quán)限:

    #pkgadd -d gcc-3.3-sol9-sparc-local

    #pkgadd -d make-3.80-sol8-sparc-local

    用pkgadd安裝后,通常gcc, make會(huì)被安裝在/usr/local/bin目錄下。這是需要讓gmake
    成為系統(tǒng)默認(rèn)的make。檢查PATH環(huán)境變量,確保/usr/local/bin目錄的位置在Solaris8自帶的make的bin之前:

    $which make

    /usr/ccs/bin/make

    $echo $PATH

    /usr/bin:/usr/ccs/bin:/usr/local/bin


    如果發(fā)現(xiàn)gmake還不是系統(tǒng)默認(rèn)的make,可以修改/etc/profile調(diào)整PATH。但有一種更簡(jiǎn)單有效的方法,在/usr/bin目錄下建一個(gè)到/usr/local/bin/make的符號(hào)連接make,這樣就能使gmake成為系統(tǒng)默認(rèn)的make了:

    # cd /usr/bin

    # ln -s /usr/local/bin/make make

    同樣的技巧可以解決一些Perl腳本對(duì)perl解釋器可執(zhí)行文件路徑引用的不正確。如某個(gè)perl腳本的頭信息有#!/usr/local/bin/perl -w但Perl在系統(tǒng)上被安裝在/usr/bin/目錄下。這時(shí)需要在
    /usr/local/bin/
    下建立一個(gè)到/usr/bin/perl的符號(hào)連接perl。
    編譯完JK后,把它安裝到apache中去,執(zhí)行:

    # make install

    如果不成功,可以手工把mod_jk.so拷貝到apache的modules目錄下。
    配置
    在具體動(dòng)手配置之前應(yīng)該考慮一下你集成的目標(biāo):僅僅是簡(jiǎn)單的把某個(gè)subcontext由tomcat處理,還是更高層次的動(dòng)態(tài)/靜態(tài)內(nèi)容整合?是否允許HTTPS的轉(zhuǎn)發(fā);是否要進(jìn)行負(fù)載平衡?具體配置的復(fù)雜度會(huì)因你的集成目標(biāo)不同而大相徑庭。

    假定我們的集成目標(biāo)是:
    1.
    所有的靜態(tài)資源由Apache處理
    2.
    所有的動(dòng)態(tài)資源由Tomcat處理
    配置Tomcat
    apache
    和tomcat整合大致上有三種方式:
    1.
    在apache進(jìn)程中運(yùn)行tomcat來(lái)處理動(dòng)態(tài)內(nèi)容
    2.
    通過ajp13協(xié)議,apache將動(dòng)態(tài)內(nèi)容的請(qǐng)求轉(zhuǎn)發(fā)給tomcat
    3.
    使用本地高速Unix domain socket,apache將動(dòng)態(tài)內(nèi)容的請(qǐng)求轉(zhuǎn)發(fā)給tomcat

    方式2可以將apache和tomcat分布在不同的機(jī)器上,從而可以實(shí)現(xiàn)負(fù)載平衡。方式3速度比較快,當(dāng)apache和tomcat分布在相同的機(jī)器上時(shí)可以考慮使用。
    本文以方式2的為例說明tomcat和apache的集成。
    為了能處理ajp13請(qǐng)求,tomcat需要起一個(gè)服務(wù)。 這是通過在tomcat的server.xml中定義一個(gè)Connector來(lái)實(shí)現(xiàn)的。 在最新的tomcat4.1.30版本中該Connector默認(rèn)情況下是啟用的。如果沒有啟用在server.xml加入

        

                   port="8009" minProcessors="5" maxProcessors="75"

                  enableLookups="true" redirectPort="8443"

                   acceptCount="10" debug="0" connectionTimeout="20000"

                   useURIValidationHack="false"

        protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>;


    啟動(dòng)tomcat, 檢查ajp13服務(wù)是否運(yùn)行
    netstat -a | grep 8009
    或則查看tomcat標(biāo)準(zhǔn)輸出上是否有類似的輸出:

    info: JK2: ajp13 listening on /0.0.0.0:8009

     

    2004-5-22 14:50:35 org.apache.jk.server.JkMain start

     

    info: Jk running ID=0 time=20/200  config=D:\Tomcat4.1\conf\jk2.properties


    配置Apache
    配置完Tomcat后,進(jìn)行Apache的配置。首先,我們需要確定整個(gè)web應(yīng)用所在的context,確定了context也就能確定用戶通過什么樣的URL可以訪問該web應(yīng)用。比如,網(wǎng)站為www.example.com, 如果web應(yīng)用的context為purchase,那么用戶可以通過URL http://www.example.com/purchase訪問該應(yīng)用;如果web應(yīng)用的context為/,那么用戶可以通過URL http://www.example.com訪問該應(yīng)用。一般而言,將web應(yīng)用的context設(shè)定為/可以方便用戶。如果存在多個(gè)獨(dú)立的應(yīng)用,可以考慮把它們放到不同的子context中去。下面介紹把應(yīng)用context設(shè)為/情況下如何配置,其他情況類似。將jk的配置放在一個(gè)獨(dú)立的文件里,然后在httpd。conf中Include該文件即可。
    第一步,讓apache加載mod_jk:

    #mod jk for tomcat-apache integration

    LoadModule jk_module modules/mod_jk.so


    把應(yīng)用context映射到存放該應(yīng)用靜態(tài)資源的目錄:

    # Static files in the examples webapp are served by apache


    Alias / /www/tomcat4。1/webapps/ROOT/ 


    同時(shí),因?yàn)楝F(xiàn)在靜態(tài)資源不是由tomcat處理了,所以出于安全考慮和遵守JSP/Servlet規(guī)范需要禁止對(duì)WEB-INF子目錄的訪問:

    # The following line prohibits users from directly access WEB-INF

     

       AllowOverride None 

     

      deny from all 

     ;

    在集成的調(diào)試階段可以考慮允許目錄列表功能:

     ;

         AllowOverride FileInfo AuthConfig Limit Indexes

     

        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

     ;

    接下來(lái)一步告訴apache哪些動(dòng)態(tài)內(nèi)容應(yīng)該讓tomcat處理,為了確定動(dòng)態(tài)內(nèi)容URL的特征,應(yīng)該把web.xml中的所有servlet mapping中出現(xiàn)的URL模式在jk.conf中聲明:

    JkMount /BaseServlet worker1 


    JkMount /Servlet/* worker1 


    JkMount /ProductUploadServlet worker1 

     

    JkMount /upload worker1 

     

    JkMount /test worker1 

     

    JkMount /*.jsp worker1 

     

    JkMount /*.do worker1


    其它可能需要修改的配置
    配置項(xiàng) 說明
    JkWorkersFile
    指定jk workers.properties的位置,如果是相對(duì)路徑,則假定在apache的ServerRoot目錄下
    JkLogFile
    指定jk log文件的位置,如果是相對(duì)路徑,則假定在apache的ServerRoot目錄下
    JkLogLevel
    指定jk log的級(jí)別有效的選項(xiàng)有:debug/error/info
    JkLogStampFormat
    指定log中的時(shí)間格式,使用c函數(shù)strftime的格式字符串語(yǔ)法

    總結(jié) Tomcat和Apache集成時(shí)通常需要一下步驟:
    1.
    決定使用哪種connector
    2.
    獲得connector,如果沒有現(xiàn)成的二進(jìn)制的connector,則需要手工編譯,根據(jù)操作系統(tǒng)的不同可能還要設(shè)置編譯環(huán)境。
    3.
    配置tomcat
    4.
    配置apache,確定context,將context對(duì)應(yīng)到應(yīng)用的頂層目錄。根據(jù)web.xml中的servlet映射把所有的動(dòng)態(tài)內(nèi)容的url模式配置在apache中
    5.
    測(cè)試
    附錄
    一個(gè)完整的配置例子:

    #mod jk for tomcat-apache integration


    LoadModule jk_module modules/mod_jk.so

     

    JkWorkersFile conf/workers.properties


    # Where to put jk logs


    JkLogFile logs/mod_jk。log

     

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

     

    JkLogLevel debug

     

    # Select the log format


    JkLogStampFormat "[%Y-%m-%d %H:%M:%S] "

     

    # JkOptions indicate to send SSL KEY SIZE

     

    JkOptions +ForwardKeySize +ForwardURICompat +ForwardURICompatUnparsed -ForwardDirectories

     

    # JkRequestLogFormat set the request format

     

    JkRequestLogFormat "%w %V %T"

     

    # Static files in the examples webapp are served by apache

     

    Alias / /www/tomcat4。1/webapps/ROOT/ 

     

    # The following line prohibits users from directly access WEB-INF

     AllowOverride None 

     

    deny from all 

     

     ;

         AllowOverride FileInfo AuthConfig Limit Indexes

     

        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

    ;

     #JkAutoAlias /www/tomcat4.1/webapps/ROOT

     

    JkMount /BaseServlet worker1 

     

    JkMount /Servlet/* worker1 

     

    JkMount /ProductUploadServlet worker1 

     

    JkMount /upload worker1 


    JkMount /test worker1 


    JkMount /*.jsp worker1 

     

    JkMount /*.do worker1


    此外,jk還需要一個(gè)workers.properties文件配置jk本身的參數(shù).如過不需要培植負(fù)載平衡
    可以使用以下配置

    # Define 1 real worker using ajp13

     

    worker.list=worker1

     

    # Set properties for worker1 (ajp13)

     

    worker.worker1.type=ajp13


    worker.worker1.host=127.0.0.1


    worker.worker1.port=8009

     

    worker.worker1.lbfactor=50

     

    worker.worker1.cachesize=10

     

    worker.worker1.cache_timeout=600

     

    worker.worker1.socket_keepalive=1

     

    worker.worker1.socket_timeout=300

    要注意的是JkMount所引用的worker的名稱必須是在work.list定義過的。

    了解更多java報(bào)表







    了解Java報(bào)表工具就從這里開始
    posted on 2012-03-06 10:36 season 閱讀(274) 評(píng)論(0)  編輯  收藏 所屬分類: Java報(bào)表—技術(shù)知識(shí)
    主站蜘蛛池模板: 国产亚洲AV夜间福利香蕉149| 亚洲视频一区在线观看| 久久国产乱子伦精品免费看| 亚洲国产精品日韩在线| 四虎永久免费网站免费观看| 免费看无码特级毛片| 亚洲综合小说另类图片动图| 亚洲第一页日韩专区| 57pao国产成永久免费视频| 国产偷国产偷亚洲清高APP| 久久亚洲AV无码精品色午夜麻| 曰批全过程免费视频在线观看| 国产精品九九久久免费视频 | 国产在亚洲线视频观看| 国产成人亚洲综合在线| 亚洲AV无码不卡在线播放| 国产自产拍精品视频免费看| 一级毛片免费播放| 国产精品亚洲片在线花蝴蝶| 亚洲精品偷拍无码不卡av| 浮力影院亚洲国产第一页| 四虎影院免费在线播放| 亚欧免费无码aⅴ在线观看| 国产亚洲精品精品精品| 亚洲国产韩国一区二区| 日韩va亚洲va欧洲va国产| 国产精品免费电影| 国产麻豆视频免费观看| 久久青青草原国产精品免费| 亚洲AV成人精品一区二区三区| 亚洲经典在线观看| 亚洲成A∨人片在线观看不卡| 免费人成网站7777视频| 91嫩草国产在线观看免费| 久9这里精品免费视频| 99re6在线精品免费观看| 国产精品亚洲综合一区在线观看| 国产91在线|亚洲| 噜噜噜亚洲色成人网站∨| 亚洲国产成人高清在线观看| 免费人成无码大片在线观看|