如何整合Apache和Tomcat部署Web應用

來源:互聯網
上載者:User

從網上查了不少資料,想瞭解一下如何整合Apache和Tomcat,以便讓Apache的httpd負責靜態內容,讓Tomcat負責動態內容的部分。

參考文章:

http://tomcat.apache.org/connectors-doc/generic_howto/quick.html

http://code-worker.javaeye.com/blog/246993

http://www.qqread.com/php/n652282101.html

http://tomcat.apache.org/connectors-doc/reference/workers.html

 

我自己試了一下,把具體過程記錄下來,以備今後查看。

1. 安裝Apache Http Server、Tomcat、Tomcat Connector(JK Module)

  • Apache Httpd:從網上下載Apache Http Server 2.2.15的安裝版(貌似沒有免安裝壓縮版)。安裝時可以選擇將其安裝為系統服務或者每次手動啟動。我只是測試,所以選擇了後者,但後者預設將會監聽8080連接埠,注意不要與Tomcat預設的8080連接埠衝突了。這一項可以稍後在設定檔中修改。
  • Tomcat:可以選擇免安裝壓縮版(我用的是6.0.18版),很方便,可以註冊為系統服務。
  • JK Module:從http://tomcat.apache.org/download-connectors.cgi找到binary下載,下載目前最新版1.2.30檔案mod_jk-1.2.30-httpd-2.2.3.so,將其改名為mod_jk.so,置於Apache Http Server安裝目錄下的modules目錄中。


2. 建立workers.properties檔案

 

可以參考:http://tomcat.apache.org/connectors-doc/generic_howto/quick.html

這個worker.properties可以置於任何目錄下,我把它直接放在了Apache Http Server的安裝目錄下。

 

# 為mod_jk模組指明Tomcat的安裝路徑

workers.tomcat_home=D:/DevSoft/apache-tomcat-6.0.18

# 為mod_jk模組指明JDK的安裝路徑

workers.java_home=C:/Program Files/Java/jdk1.6.0_20

# 添加一個worker到worker列表

worker.list=worker1

# 為worker1設定各個參數

# 工作連接埠,Tomcat的預設Connector監聽連接埠,可以查看Tomcat的Server.xml中有port="8009"

worker.worker1.port=8009

# Tomcat所在機器,如果安裝在與apache不同的機器則需要設定IP

worker.worker1.host=localhost

# worker的類型,允許的值為ajp13、ajp14、lb、status等;ajp13是mod_jk串連WebServer和Tomcat的首選方式(即使用socket作為通訊渠道)

worker.worker1.type=ajp13

# Server Load Balancer因子

worker.worker1.lbfactor=1

 

註:worker.list中worker的名字應該是對應到Apache Http Server的httpd.conf設定檔中的JkMount的(後面詳述)。

3. 修改Apache Http Server的httpd.conf設定檔

 

修改Apache Http Server安裝目錄下的conf目錄下的httpd.conf檔案:

 

# 載入mod_jk模組,注意模組檔案的路徑

LoadModule jk_module modules/mod_jk.so

# 聲明workers.properties檔案的位置

JkWorkersFile "C:/Program Files/Apache Software Foundation/Apache2.2/workers.properties"

# 聲明mod_jk的記錄檔位置

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

# 聲明mod_jk的記錄層級(可選)

JkLogLevel info

# 聲明mod_jk的日誌的時間戳記格式(可選)

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

# 將/*.action和/*.jsp類型的請求都分配給Tomcat,其餘類型的有Apache Http Server自己處理

# 注意JkMount後面的worker1即對應worker.properties檔案中worker.list裡的worker的名稱

JkMount /*.action worker1

JkMount /*.jsp worker1

 

4. 修改DirectoryRoot

 

網上的文章大多隻寫到上面就結束了,動態內容交給Tomcat之一步算是完成了,但靜態內容的分配還需接著設定httpd.conf檔案。

尋找到DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"這一行,並將其值替換為Web應用的路徑:

 

DocumentRoot "D:/DevSoft/apache-tomcat-6.0.18/webapps"

尋找到<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">這一行,並將其值替換為Web應用的路徑:

 

<Directory "D:/DevSoft/apache-tomcat-6.0.18/webapps">

 

 

至此,動態內容和靜態內容的請求分配,才基本完成。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.