Apache2.2與Tomcat7整合方案詳解

鬆門一枝花發表於2016-05-20

原文地址:http://my.oschina.net/u/919173/blog/159206

------------------------------------

首先談一下為什麼要整合Apache和tomcat7? 

     Apache是當前使用最為廣泛的WWW伺服器軟體,具有相當強大的靜態HTML處理的能力。 Tomcat伺服器是一個免費的開放原始碼的Web應用伺服器,Tomcat和IIS、Apache等Web伺服器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的預設模式。但是其處理靜態HTML頁面的能力肯定和Apache和IIS這種專業級別的伺服器沒法比。因此取兩者之長避兩者之短,將兩者進行進行整合達到有點最大化的效果。

     1.安裝Apache2.2。 特別說一下這裡會提示輸入域名之類的視窗,我這裡全部填的localhost.埠的話預設的是80,但是這個埠某些時候可能會被佔用,所以我在這裡改成了8001(在配置檔案httpd.conf裡也可以修改,具體修改地方為:Listen 8001  修改為指定的埠號)。安裝完成後啟動服務名為Apache2.2的服務後,在網址裡輸入:http://localhost:8001,會顯示出一個測試的頁面:It works! (這個頁面放在哪裡呢?可以看下C:\Program Files\Apache Software Foundation\Apache2.2這個目錄下是不是有個htdocs資料夾,下面是不是有個index.html.以後我們的頁面就要放在這個裡面。當然你也可以自己定義放在哪裡,我在這裡就改成了自己建立的WebSite資料夾,然後必須要在httpd.conf裡指定為你建立的這個資料夾。配置的地方有2處,看我的配置資訊:<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/WebSite">) 

     2.安裝tomcat7。其實沒什麼好安裝的,下載下來的都是綠化包,直接解壓就可以使用.測試一下:http://localhost:8080  是不是看見一隻小貓咪啊?其實我覺得他像一隻小老虎。


     3.下載整合外掛mod_jk.so。具體在哪兒下載呢?http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/  網址老是變化,具體你就在tomcat官網左側有個tomcat connectors哪兒慢慢找吧。下載後解壓找到mod_jk.so放在apache安裝目錄下的modules資料夾下,裡面是不是有很多的.so檔案呢,沒錯就是這裡啦。

     4.在httpd.conf裡配置資訊。

  # 設定虛擬主機,定義埠為8001,這個和你在前面配置Listen 8001的埠一定是要一樣的哦
  <VirtualHost 127.0.0.1:8001>
     ServerName 127.0.0.1
     #定義服務名稱
     DocumentRoot "C:/Program Files/Apache Software Foundation/tomcat7/webapps"
     #定義站點專案所在路徑,把路徑指向 tomcat 中的預設網站目錄
     DirectoryIndex index.html index.htm index.jsp
     ErrorLog logs/shsc-error_log.txt
     CustomLog logs/shsc-access_log.txt common
     #例子1,讓 Apache 支援對webapps/sun.shop/blog 中頁面傳送
     JkMount /sun.shop/blog/* config1
     #例子2,向Apache請求此資料夾內頁面時,系統將轉向用Tomcat解析
     JkMount /*.jsp config1
     #例子3,向 Apache 請求jsp頁面時,用 Tomcat 進行解析
     JkMount /*.do config1
     #例子4,向 Apache 請求.do 動作時, 用 Tomcat 進行解析
     JkMount /*.action config1
     #例子5,向 Apache 請求 .action 動作時, 用 Tomcat 進行解析
 </VirtualHost>
 
 # 允許客戶端訪問此路徑
 <Directory "C:/Program Files/Apache Software Foundation/tomcat7/webapps">  
     Options Indexes FollowSymLinks  
     AllowOverride None  
     Order allow,deny  
     Allow from all  
 </Directory>  
 
 LoadModule jk_module modules/mod_jk.so
 # 此處 mod_jk.so 檔案為你下載的檔案
 JkWorkersFile "C:/Program Files/Apache Software Foundation/tomcat7/conf/workers.properties"
 # 指定tomcat監聽配置檔案地址
 JkLogFile "C:/Program Files/Apache Software Foundation/tomcat7/logs/mod_jk2.log"
 # 指定日誌存放位置
 JkLogLevel info

   5.配置tomcat的conf資料夾下新增workers.properties.具體新增如下內容,自己根據需求修改。

   workers.tomcat_home=C:\Program Files\Apache Software Foundation\tomcat7
   #讓 mod_jk 模組感知 Tomcat
   workers.java_home=C:\Program Files\Java\jdk1.7.0_09\jre
   #讓 mod_jk 模組感知 jre
   ps=\
   #指定檔案路徑分割符
   worker.list=config1
   worker.config1.port=8009
  #工作埠,此埠應該與server.xml中Connector元素的 AJP/1.3 協議所使用的埠相匹配
  worker.config1.host=localhost
  #Tomcat伺服器的地址
  worker.config1.type=ajp13
  #型別
  worker.config1.lbfactor=1
  #負載平衡因數

   6.測試一下啦。啟動apache和tomcat然後在瀏覽器中輸入:http://localhost:8001,這是你會發現我們又看到了那隻小老虎(注意我們輸入的地址是在訪問apache不是在訪問tomcat,訪問tomcat的地址是:http://localhost:8080)。但是我們的apache的htdocs資料夾下沒有這個小老虎的頁面呀,這是因為我們整合成功啦。我們在訪問.jsp頁面的時候,apache會根據請求然後來判斷請求頁面的型別,當發現是.jsp頁面的時候,mod_jk外掛就會將請求轉達給了tomcat,這時候tomcat會負責處理請求,所以我們會看到了webapps下的那隻小老虎。


相關文章