日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tomcat整合apache

發布時間:2025/3/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat整合apache 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歷時4個多小時,最終把tomcat與apache整合起來了。

中間出了各種各樣的問題,現記錄一下,也希望能對后來者有點幫助。


背景

apache與tomcat的差別聯系大家都知道:
tomcat能處理jsp頁面,也能處理html頁面
apache僅僅能處理靜態資源,如html頁面,圖片,js等等,并且apache處理html頁面比tomcat處理html的速度快。


那為了提升整個系統的訪問速度。
我們就把apache與tomcat整合到一起,我們發的全部請求都是先給apache,假設詳細的請求是html(還包含.jpg,.js等靜態資源)就直接讓apache處理,假設是jsp或servlet等動態信息,就交給tomcat處理。


下載與安裝

jdk 1.7
tomcat 6 ?(tomcat7在整合中似乎有些問題,大家就用tomcat6吧)
apache 2.2.4
mod_jk 這就是把apache無法處理的動態請求發送給tomcat的東西。 這里要注意,mod_jk的版本號一定要與apache的版本號匹配
我建議大家就直接在百度上搜 "mod_jk-1.2.26-httpd-2.2.4" 或者去http://download.csdn.net/download/wng1978/6708623 這里直接下載
我一直強調版本號問題,就是由于我自己下載的各種組件的版本號不匹配,中間浪費了非常多時間。

因此,我再說句題外話

大家在新接觸一個東西時,特別是還處在搭環境的階段的時候,下載的各個組件最好就依照你所閱讀的那個文章所說的版本號,這樣至少不會出現版本號沖突的問題。

剛開始學習的人,一旦碰到這樣的版本號問題,是非常打擊積極性的。




整合

mod_jk

解壓縮mod_jk-1.2.26-httpd-2.2.4.rar,得到mod_jk-1.2.26-httpd-2.2.4.so,將它改名為mod_jk.so后放到apache的安裝文件夾下的modules中。

編輯apache/conf/httpd.conf文件

? 找到Listen 80這一行( ctrl+f )改動為 Listen 81

? 在httpd.conf的最后加上

? # 設置虛擬主機,定義port為81<VirtualHost 127.0.0.1:81>ServerName 127.0.0.1#定義服務名稱 E:/apache-tomcat-6.0.44-8500/webapps 是我的tomcat的位置DocumentRoot "E:/apache-tomcat-6.0.44-8500/webapps"#定義站點項目所在路徑,把路徑指向 tomcat 中的默認站點文件夾DirectoryIndex index.html index.htm index.jspErrorLog logs/shsc-error_log.txt##以下樣例中的ajp13,請大家記住,后面咱們還要用CustomLog logs/shsc-access_log.txt common#樣例1,讓 Apache 支持對webapps/sun.shop/blog 中頁面傳送JkMount /sun.shop/blog/* ajp13#樣例2,向Apache請求此文件夾內頁面時。系統將轉向用Tomcat解析JkMount /*.jsp ajp13#樣例4。向 Apache 請求jsp頁面時,用 Tomcat 進行解析JkMount /*.do ajp13#樣例5,向 Apache 請求.do 動作時。 用 Tomcat 進行解析JkMount /*.action ajp13#樣例6,向 Apache 請求 .action 動作時, 用 Tomcat 進行解析</VirtualHost># 同意client訪問此路徑 <Directory "E:/apache-tomcat-6.0.44-8500/webapps"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>

說實話,我不知道Directory后面那個文件夾與virtualhost里面那個documentroot中的文件夾有什么差別聯系

眼下,我設置這個兩個路徑一直,都是tomcat下的webapps


到這一步后,我們先檢查一下,apache是否已經安裝好了。


檢查

我已經在E:/apache-tomcat-6.0.44-8500/webapps 下部署了一個叫PathTest的項目,根文件夾下有個index.html文件。
http://localhost:81/PathTest/
在瀏覽器中輸入上面的地址。



換一個地址

假設你的瀏覽器也能出現類似上面的效果,說明apache本身已經安裝好了。


連接tomcat

將apache連接到tomcat上

?再給httpd.conf后面加上下面內容


LoadModule jk_module modules/mod_jk.so# 此處 mod_jk.so 文件為你下載的文件JkWorkersFile "E:/apache-tomcat-6.0.44-8500/conf/workers.properties"# 指定tomcat監聽配置文件地址JkLogFile "E:/apache-tomcat-6.0.44-8500/logs/mod_jk2.log"# 指定日志存放位置JkLogLevel info

上面tomcat的地址大家依據自己的修改一下就可以。

設定tomcat

設定tomcat那邊怎樣接受apache的請求。

? ? ?在上一步里我們有這種配置
? ? ?JkWorkersFile "E:/apache-tomcat-6.0.44-8500/conf/workers.properties"
? ? ?在那么去tomcat的conf文件夾下看看,并沒有workers這個文件,怎么辦?新建一個就能夠了嘛。并寫入例如以下內容:


workers.tomcat_home=E:\apache-tomcat-6.0.44-8500 #讓mod_jk模塊知道Tomcat的位置 workers.java_home=C:\Program Files\Java\jre7 #讓mod_jk模塊知道jre的位置 ps=\ worker.list=ajp13 #模塊版本號 worker.ajp13.port=8009 #工作端口,若沒占用則不用改動 worker.ajp13.host=localhost #本機,若上面的Apache主機不為localhost,作對應改動 worker.ajp13.type=ajp13 #類型 worker.ajp13.lbfactor=1 #代理數,不用改動


大家看這一行
worker.list=ajp13 #模塊版本號
這個ajp13和httpd.conf中的 JkMount /sun.shop/blog/* ajp13 的ajp13 是相應的
你把兩處的ajp13改成"mytomcat"也是能夠的。


還有 worker.ajp13.port=8009 這個port指的是tomcat中ajp協議的port,不是我們經經常使用的那個支持http的8080。


換句話說這個8009,最好就不要改。


另外,我的tomcat的port號改成了8500。
在什么地方改?




在tomcat/conf/server.xml下

<Connector port="8500" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
8500與8009分別支持兩種協議。




OK,如今我們試一試。
開啟tomcat,訪問 http://localhost:8500/PathTest/jsp/a.jsp
是一個非常easy的jsp
開啟apache,
對了還沒有說怎么開啟apache服務呢。


在apache/bin下有個ApacheMonitor。

雙擊



選定服務后,start就可以。
然后訪問 ?http://localhost:81/PathTest/jsp/a.jsp
注意,我們的port號是81,是訪問apache的。
apache看到請求的地址是jsp,就通過JkWorkersFile找到apache后面的tomcat,tomcat處理后,再把結果給apache,然后apache再給瀏覽器。
假設http://localhost:81/PathTest/jsp/a.jsp 和 http://localhost:8500/PathTest/jsp/a.jsp 的返回結果一樣。
就說明apache與tomcat整合完成。






可能出現的問題

1 啟動apache的時候 彈出這個錯誤 the requested operation has failed
? 假設不是port問題的話,那么就是httpd.conf被我們改動錯了。


? 怎么辦

? 命令行內進入安裝文件夾apache\bin。使用命令httpd -t。然后出現“Syntax error on line 133 of E:/apache\conf/httpd.conf :ServerAdmin takes one argument, the email address of the server administrator”,看它提示信息,說明,在這個配置文件中面的133行,出現了問題

上面的133行錯誤是什么意思呢?

給后面加上一個地址就OK

2 上面的配置中,我們在81port,訪問html,jsp,js,jpg都是沒有問題的,深入甚至增加mvc框架后的.do,.action都能夠正常處理。
? 但是我們假設訪問的是servlet呢?
? 眼下沒有特別好的方法。


? 給httpd.conf下的VirtualHost里面加上這個
? JkMount /*/servlet/* ajp13?
? 這是什么意思?


? 假設請求的url中間包括"servlet"這個字符,apache就把它發給tomcat。


這篇文章參考了非常多博客,詳細參考信息就不一一列出了

轉載于:https://www.cnblogs.com/jhcelue/p/6855532.html

總結

以上是生活随笔為你收集整理的tomcat整合apache的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。