A Cooly Weblog

             ::  ::  ::  ::  :: 管理

          Apache與Tomcat平臺全面解決方案

          Posted on 2007-04-29 13:39 acooly 閱讀(2961) 評論(1)  編輯  收藏 所屬分類: WEB開發 、服務器安裝配置

          ?

          WEB 服務器解決方案

          Apache+Tomcat


          ?????????????????????????????????????????????????????? ?? ??? ??? ? 作者:張浦

          ??????????????????????????????????????????????????????? ??? ??? ??? 2007-4-26

          ?

          1.?? 概述

          1.1.?? 本文目的

          1.2.?? 環境及文檔約定

          2.?? JDK安裝配置

          2.1.?? 安裝JDK

          2.2.?? 設置系統JAVA環境

          3.?? TOMCAT安裝配置

          3.1.?? 獲取Tomcat

          3.2.?? 安裝Tomcat

          3.2.1.?? 安裝

          3.2.2.?? 驗證安裝

          3.2.3.?? 常見問題

          3.3.?? 配置與優化

          3.4.?? APR整合

          4.?? APACHE安裝配置

          4.1.?? 獲取Apache軟件

          4.2.?? Apache安裝配置與優化

          5.?? APACHE+TOMCA整合配置

          5.1.?? 獲取JK軟件

          5.2.?? 安裝編譯JK

          5.3.?? 配置JK連接APACHETOMCAT

          5.4.?? 驗證配置

          6.?? 完整的配置參考

          6.1.?? 環境變量

          6.2.?? Tomcat相關配置文件

          6.3.?? apache相關配置文件

          1. 概述

          1.1. 本文目的

          描述建立簡單高效的 apache 服務器,應用于集成 tomcat 服務。

          即: apache+jk1.2+tomcat 部署方案中 apache 的安裝配置和優化

          1.2. 環境及文檔約定

          操作系統: RedHat AS 4 update 1

          硬件環境:普通 PC C4-2.8G/1G 內存

          設系統的 IP 地址為: $IP

          2. JDK 安裝配置

          JDK 官方網站: http://java.sun.com

          2.1. 安裝 JDK

          JDK 版本: jdk1.5.0_05

          ?

          下載地址:

          http://192.18.108.219/ECom/EComTicketServlet/BEGIN5EA4351D3E051D464E9716D18FE4FF31

          /-2147483648/2093779515/1/798890/798650/2093779515/2ts+/westCoastFSEND

          /jdk-1.5.0_11-oth-JPR/jdk-1.5.0_11-oth-JPR:3/jdk-1_5_0_11-linux-i586-rpm.bin

          ?

          # cd /tools

          # wget http://192.18.108.219/ECom/EComTicketServlet/BEGIN5EA4351D3E051D464E9716D18FE4FF31/

          -2147483648/2093779515/1/798890/798650/2093779515/2ts+/westCoastFSEND

          /jdk-1.5.0_11-oth-JPR/jdk-1.5.0_11-oth-JPR:3/jdk-1_5_0_11-linux-i586-rpm.bin

          ?

          # cd /tools

          # chmod +x jdk-1_5_0_11-linux-i586-rpm.bin

          # ./ jdk-1_5_0_11-linux-i586-rpm.bin

          # rpm –ivq jdk-1_5_0_11-linux-i586.rpm

          ?

          2.2. 設置系統 JAVA 環境

          Java 環境的設置是為了支持 tomcat 服務器的運行,主要需要設置的環境變量是 JAVA_HOME, jdk 的安裝路徑。默認安裝 jdk 的目錄是 /usr/java/ jdk1.5.0_11

          ?

          設置環境變量到系統環境配置文件 /etc/profile

          ?

          # vi /etc/profile

          加入: exprot JAVA_HOME=/usr/java/ jdk1.5.0_11

          # source /etc/profile

          ?

          3. TOMCAT 安裝配置

          Tomcat 官方網站: http://tomcat.apache.org/

          3.1. 獲取 Tomcat

          本文使用 Tomcat-5.5.17

          下載地址: http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.17/bin/apache-tomcat-5.5.17.tar.gz

          如果目標服務器可以上公網,可以直接在目標服務器下載該版本 tomcat ,標準發行版本比較小,只有幾兆而已。

          ?

          $ cd /tools

          $ wget http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.17/bin/apache-tomcat-5.5.17.tar.gz

          ?

          3.2. 安裝 Tomcat

          3.2.1. 安裝

          首先在獲取 tomcat 軟件版本后,直接解壓,并拷貝到對應的安裝目錄就可以了,一般 linux 下安裝目錄可以設置在 /usr/local 下面,現在設 Tomcat 安裝目錄為 $CATALINA_HOME

          ?

          # cd /tools

          # tar –xzvf apache-tomcat-5.5.17.tar.gz

          # cp apache-tomcat-5.5.17 /usr/local/tomcat-5.5.17

          即: $CATALINA_HOME=/usr/local/tomcat-5.5.17

          ?

          3.2.2. 驗證安裝

          請確保系統的 8080 端口沒有被占用,因為 tomcat 默認使用 8080 端口。

          # $CATALINA_HOME/bin/startup.sh

          ?

          啟動瀏覽器(如 IE ),輸入 http://$IP:8080

          如果顯示了有 tomcat 圖標的 tomcat 首頁的話,表示 tomcat 服務器正常 .

          ?

          3.2.3. 常見問題

          1.???????? 確保服務器操作系統防火墻關閉

          2.???????? 確保端口沒有被其他程序占用,驗證方法是 :

          關閉 tomcat 服務器( $CATALINA_HOME/bin/shutdown.sh

          telnet $IP 8080

          如果仍然能連通,說明 8080 端口已經被其他程序使用。

          3.3. 配置與優化

          我的其他文章參考: TOMCAT-5.5.X優化配置

          3.4. APR 整合

          我的其他文章參考: TOMCAT-5.5.X整合APR

          ?

          4. APACHE 安裝配置

          4.1. 獲取 Apache 軟件

          Apache2.0.59 http://httpd.apache.org

          ?

          本例使用 linux source 包版本

          可以直接下載:

          # cd /tools

          # wget http://httpd.apache.org/xxxx/xxxx/ apache-2.0.59.tar.gz

          4.2. Apache 安裝配置與優化

          我的其他文章參考: Apache安裝配置與優化

          5. APACHE+TOMCA 整合配置

          官方參考: http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

          5.1. 獲取 JK 軟件

          下載地址:

          http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/v1.2.0/src/

          jakarta-tomcat-connectors-jk-1.2.0-src.tar.gz

          # cd /tools

          # wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/v1.2.0/src/

          jakarta-tomcat-connectors-jk-1.2.0-src.tar.gz

          5.2. 安裝編譯 JK

          # cd /tools

          # tar –xzvf jakarta-tomcat-connectors-jk-1.2.0-src.tar.gz

          # cd tomcat-connectors-1.2.20-src

          # cd native

          # ./configure --with-apxs=$APACHE_HOME/bin/apxs? // 使用 apache apxs

          # make

          # make install

          ?

          成功安裝完成后,會在 $APACHE_HOME/modules 中發現 mod_jk.so 文件。

          5.3. 配置 JK 連接 APACHE TOMCAT

          1.? 配置 worker.properties

          $APACHE_HOME/conf 下建立 worker.properties

          # vi worker.properties

          寫入:

          ?????? # Define 1 real worker using ajp13

          worker.list=tomcat

          # Set properties for worker1 (ajp13)

          worker.tomcat.type=ajp13

          worker.tomcat.host=127.0.0.1

          worker.tomcat.port=8009

          worker.tomcat.cachesize=10

          worker.tomcat.cache_timeout=600

          ?? ?

          2.? 配置 JK 連接

          配置 $APACHE_HOME/conf httpd.con 文件

          # vi httpd.conf

          寫入:

          # Load mod_jk module

          LoadModule jk_module modules/mod_jk.so

          # Where to find workers.properties

          JkWorkersFile /usr/local/apache2.0.59/conf/workers.properties

          # Where to put jk logs

          JkLogFile /usr/local/apache2.0.59/logs/mod_jk.log

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

          JkLogLevel error

          # 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"

          JkShmFile /usr/local/apache2/logs/mod_jk.shm

          ?

          # Send jsp,servlet for context * to worker named tomcat

          JkMount /dwr/* tomcat

          JkMount /*.jsp tomcat

          JkMount /*.mvc tomcat

          JkMount /*.do tomcat

          JkMount /captcha.jpg tomcat

          JkMount /j_acegi_security_check tomcat

          JkMount /j_acegi_logout tomcat

          JkMount /admin/adminlogout tomcat

          JkMount /WEB-INF/* tomcat

          ?

          5.4. 驗證配置

          確保 tomcat 配置正確,并能正常啟動。

          啟動 tomcat ,然后啟動 apache ,測試是否配置成功。

          ??????

          ?

          6. 完整的配置參考

          6.1. 環境變量

          export?JAVA_HOME =/ usr / java / jdk1 . 5 . 0_05

          export?PATH
          = $JAVA_HOME / bin : $PATH

          export?JAVA_OPTS
          = " $CATALINA_OPTS?-Xms700m?-Xmx700m
          -Djava.library.path=/usr/local/apr/lib
          "

          6.2. Tomcat 相關配置文件

          Server.xml

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

          ??
          < GlobalNamingResources >

          ????
          <!-- ?Used?by?Manager?webapp? -->

          ????
          < Resource? name ="UserDatabase" ?auth ="Container"

          ??????????????type
          ="org.apache.catalina.UserDatabase"

          ???????description
          ="User?database?that?can?be?updated?and?saved"

          ???????????factory
          ="org.apache.catalina.users.MemoryUserDatabaseFactory"

          ??????????pathname
          ="conf/tomcat-users.xml" ? />

          ??
          </ GlobalNamingResources >

          ??
          < Service? name ="Catalina" >

          ????
          < Connector? port ="8009"

          ???????????????maxTreads
          ="500" ?minSpareThreads ="10" ?maxSpareThreads ="50"

          ???????????????acceptCount
          ="50" ?connectionTimeout ="60000"

          ???????????????enableLookups
          ="false" ?redirectPort ="8443" ?protocol ="AJP/1.3" />

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

          ??????
          < Realm? className ="org.apache.catalina.realm.UserDatabaseRealm"

          ?????????????resourceName
          ="UserDatabase" ? />

          ??????
          < Host? name ="localhost" ?appBase =""

          ???????unpackWARs
          ="true" ?autoDeploy ="true"

          ???????xmlValidation
          ="false" ?xmlNamespaceAware ="false" >

          ????????
          < Context? path ="" ?docBase ="/www/xxxxx/site/web" ?reloadable ="true" ?debug ="0" />

          ??????
          </ Host >

          ????
          </ Engine >

          ??
          </ Service >

          </ Server >

          6.3. apache 相關配置文件

          1. httpd.conf

          Include?conf/includes/*.conf

          ServerRoot?/usr/local/apache2.0.59

          DocumentRoot?/www/xxxxx/site/web

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

          User??webuser

          Group?cvs

          < IfModule? prefork.c >

          ServerLimit??????800

          MaxClients???????800

          StartServers?????5

          MinSpareServers??5

          MaxSpareServers?10

          </ IfModule >

          ?

          < IfModule? worker.c >

          StartServers?????????2

          MaxClients?????????150

          MinSpareThreads?????25

          MaxSpareThreads?????75

          ThreadsPerChild?????25

          MaxRequestsPerChild??0

          </ IfModule >

          ?

          MaxRequestsPerChild?0

          ErrorLog?logs/error_log

          < Directory? />

          ????Options?FollowSymLinks

          ????AllowOverride?None

          </ Directory >

          ?

          2. conf/includes/deflate.conf

          AddOutputFilterByType?DEFLATE?text/html?text/plain?text/xml?text/javascript?text/css

          #?Compress?everything?except?images

          < Location? />

          #?Insert?filter

          SetOutputFilter?DEFLATE

          #?Netscape?4.x?has?some?problems

          BrowserMatch?^Mozilla/4?gzip-only-text/html

          #?Netscape?4.06-4.08?have?some?more?problems

          BrowserMatch?^Mozilla/4\.0[678]?no-gzip


          #?MSIE?masquerades?as?Netscape,?but?it?is?fine

          BrowserMatch?\bMSIE?!no-gzip?!gzip-only-text/html

          #?Don't?compress?images

          SetEnvIfNoCase?Request_URI?\

          \.(?:gif|jpe?g|png)$?no-gzip?dont-vary

          #?Make?sure?proxies?don't?deliver?the?wrong?content

          Header?append?Vary?User-Agent?env=!dont-vary

          </ Location >

          3. conf/includes/ mod_jk.conf

          # ?Load?mod_jk?module

          LoadModule?jk_module?modules
          / mod_jk . so

          # ?Where?to?find?workers.properties

          JkWorkersFile?
          / usr / local / apache2 . 0.59 / conf / workers . properties

          # ?Where?to?put?jk?logs

          JkLogFile?
          / usr / local / apache2 . 0.59 / logs / mod_jk . log

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

          JkLogLevel?error

          # ?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 "

          JkShmFile?
          / usr / local / apache2 / logs / mod_jk . shm

          ?

          # ?Send?jsp,servlet?for?context?*?to?worker?named?tomcat

          JkMount?
          / dwr /* ?tomcat

          JkMount?
          /*. jsp?tomcat

          JkMount?
          /*. mvc?tomcat

          JkMount?
          /*. do ?tomcat

          JkMount?
          / captcha . jpg?tomcat

          JkMount?
          / j_acegi_security_check?tomcat

          JkMount?
          / j_acegi_logout?tomcat

          JkMount?
          / admin / adminlogout?tomcat

          JkMount?
          / WEB - INF /* ?tomcat

          4. conf/workers.properties

          #?Define? 1 ?real?worker?using?ajp13

          worker.list
          = tomcat

          #?Set?properties?for?worker1?(ajp13)

          worker.tomcat.type
          = ajp13

          worker.tomcat.host
          = 127.0.0.1

          worker.tomcat.port
          = 8009

          worker.tomcat.cachesize
          = 10

          worker.tomcat.cache_timeout
          = 600


          評論

          # re: Apache與Tomcat平臺全面解決方案  回復  更多評論   

          2008-01-21 19:55 by Anthem
          有關于mod_jk的問題:
          原本使用mod_jk是因為tomcat在處理靜態內容上比不上apache,所以理想狀態是,使用了mod_jk后所有靜態內容歸apache,所有動態內容歸tomcat,
          問題1:
          我的理解是:文章中使用JkMount / dwr /* tomcat這樣的形式是基于匹配請求竄來區分靜態和動態內容的,是不是這樣呢?
          問題2:
          我目前在做一個采用webwork框架的項目,其中使用了rewriteFilter,所有*.html形式的請求實際上會被過濾器攔截去匹配一個具體的action,這樣的話這個....../*.html的請求實際上是一個動態內容,項目中本來就沒有純粹的html文件,剛好避免了利用 JkMount /*.html tomcat導致真正靜態的html也被交給worker然后讓tomca去處理的問題,如果這個問題真的出現怎么處理呢?考慮到url rewrite 可以在apache中實現,但是我感覺在程序項目中實現比較方便。
          問題3:
          如果利用配置文件去區分,感覺好像很難明確的區分出動、靜態內容,一方面現在的web項目好像純粹的html頁面之類的靜態內容越來越稀罕了,另一方面,往往動靜態內容都混在一起了(有動態就是動態內容,這樣的話是不是全是動態沒喲靜態了??),按照我在目前項目中的配置方法,好像所有的內容都是交給worker了,那樣的話,是不是還不如直接使用tomcat效率好?畢竟在從apache何mod-jk走一回也是要消耗資源的?

          樓主大人可否解疑釋惑,賜教一二?
          主站蜘蛛池模板: 盘山县| 东山县| 吉木萨尔县| 运城市| 公安县| 长春市| 桐柏县| 志丹县| 土默特左旗| 平和县| 恩平市| 会宁县| 大宁县| 彰武县| 尚义县| 汤原县| 邳州市| 乌拉特中旗| 东宁县| 温宿县| 吴忠市| 湖南省| 文登市| 庆元县| 深水埗区| 东光县| 金沙县| 闸北区| 毕节市| 张家港市| 屏东市| 岱山县| 大足县| 和林格尔县| 龙川县| 仪陇县| 敦煌市| 波密县| 台中县| 尼勒克县| 温州市|