Apache 与tomcat实现分布式应用部署
一:原理
tomcat是一個web應用服務器,能夠解析靜態(tài)文件和動態(tài)文件(如:html、jsp、servlet等);apache是一個web server,能夠解析靜態(tài)文件。Tomcat作為一個獨立的web服務器是可以使用的,但是它對靜態(tài)文件的解析能力不如apache,所以就產生現在的web應用的分布式部署,apache+tomcat。
兩者之間的通信通過workers配置(由tomcat使用Server.xml中的Connector標簽定義端口port和協(xié)議protocol,workers.properties文件中定義端口、協(xié)議、tomcat服務器地址);由mod_jk模塊負責兩者通信的處理。通信協(xié)議有很多,其中jk2已經被拋棄了,現在就用jk就好了。
整個過程其實就是讓apache的httpd.conf文件調用mod_jk.conf,mod_jk.conf調用workers.properties,最后配置虛擬主機。
二:文件說明
mod_jk.conf
主要定義mod_jk模塊的位置以及mod_jk模塊的連接日志設置,還有定義worker.properties文件的位置。
worker.properties
定義worker的參數,主要是連接tomcat主機的地址和端口信息。如果Tomcat與apache不在同一臺機器上,或者需要做多臺機器上tomcat的負載均衡只需要更改workers.properties文件中的相應定義即可。
三:軟件版本說明
Jdk1.4.2_08(1.5也可以,把JRE裝在JDK目錄下)
tomcat 5.0.、5.5
apache apache_2.0.55-win32-x86-no_ssl.msi
mod_jk_1.2.6_2.0.50.dll(要根據apache版本確認)
把上面所有組件都安裝到D:\Server目錄下,這樣也方便日常管理配置和將來移植到別的服務器上去
JAVA_HOME java安裝路徑
TOMCAT_HOME tomcat安裝路徑
APACHE_HOME apache安裝路徑
四:操作步驟
4.1軟件安裝
??? 按順序安裝Jdk1.5、tomcat、apache
??? 可能遇到的問題
問題1: 在解析JSP頁面時,提示無法找到java compiler
請拷貝 j2sdk\lib\tools.jar 到 tomcat\common\lib下面。
使用tomcat作為service啟動后總是這樣,當然用startup.bat腳本啟動倒是完全正常。主要原因分析起來是以service方式啟動的Tomcat無法讀取JAVA_HOME 和CLASS_PATH等環(huán)境變量。
問題2:如何解決通過服務方式啟動tomcat時log中提示ZoneInfo:d:\server\j2sdk\lib\zi\ZoneInfoMappings(系統(tǒng)找不到指定的路徑。)
從d:\server\j2sdk\jre\lib目錄拷貝所有文件放到 d:\server\j2sdk\lib\ ,jre\lib 中的文件和j2sdk\lib\ 中的文件沒有一個重復的,不用擔心會覆蓋掉j2sdk\lib 中原有的任何文件。
4.2加入mod_jk連接模塊
拷貝mod_jk_1.2.6_2.0.50.dll到APACHE_HOME\apache2\modules\文件夾下,并重命名為mod_jk.dll
4.3修改apache配置文件
??? 為了保持httpd.conf文件的簡潔,把jk模塊的配置放到單獨的文件中來,就在httpd.conf中增加一行調用include “D:\server\Apache2\conf\mod_jk.conf”
4.4配置mod_jk.conf
下面是mod_jk.conf的文件內容,根據項目實際情況進行修改(照做就可以了)
# Load mod_jk module
LoadModule jk_module modules/mod_jk.dll
?
# Where to find workers.properties
JkWorkersFile conf/workers.properties
?
# Where to put jk logs
JkLogFile logs/mod_jk.log
?
# Set the jk log level [debug/error/info]
JkLogLevel info
?
# 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\"
?
# Send servlet for context /examples to worker named ajp13
#JkMount /servlet/* ajp13
?
# Send JSPs for context /examples to worker named ajp13
JkMount /*.jsp ajp13
JkMount /*.do ajp13
JkMount /*/*.do ajp13
?
上面這一行我們設置了了 /*.jsp ajp13 就是說把所有.jsp結尾的文件都由ajp13這個worker交給tomcat處理了
?
4.5配置apache2\conf\workers.properties
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost? #本機,若上面Tomcat主機不為localhost,作相應修改
worker.ajp13.type=ajp13? #類型
worker.ajp13.lbfactor=1? #代理數,不用修改
?
4.6虛擬主機的配置
舉例配置2個vhost網站 一個是 localhost ,另一個是 www.ok.com
當然www.ok.com 是虛擬的,本地測試時,應該修改系統(tǒng)中的hosts文件,添加一行 127.0.0.1 ?www.ok.com
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "C:/tomcat-5.5.9/webapps/jsp-examples/"
ServerName localhost
ErrorLog logs/localhost-error_log
CustomLog logs/localhost-access_log common
</VirtualHost>
?
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot D:/projectTest/
ServerName 192.168.5.220
ErrorLog logs/ok.com-error_log
CustomLog logs/ok.com-access_log common
<Location /server-status>?????????? # 這樣我可以看到apache服務器狀態(tài)
SetHandler server-status
#Order deny,allow
#Deny from all
#Allow from localhost
#Allow from 192.168.5.80
</Location>
</VirtualHost>
?
4.7虛擬主機的配置
添加新的www.ok.com 虛擬主機,在tomcat安裝路徑\conf\server.xml的最后,找到<Engine>段,改為
?
<Engine>
<Host name=”localhost” ……>
</Host>
?
<Host name=\"www.ok.com\" debug=\"0\" appBase=\"D:/server/www/\" unpackWARs=\"true\" autoDeploy=\"true\" xmlValidation=\"false\" xmlNamespaceAware=\"false\">
<Context path=\"\" docBase=\".\" />
<Logger className=\"org.apache.catalina.logger.FileLogger\" directory=\"logs\" prefix=\"ok.com_log.\" suffix=\".txt\" timestamp=\"true\" />
</Host>
</Engine>
?
五:結語
?? 因tomcat、apache都是開源軟件,對版本搭配要求比較嚴格,因此一定要注意版本。
總結
以上是生活随笔為你收集整理的Apache 与tomcat实现分布式应用部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想z50怎么进去bios 如何进入联想
- 下一篇: 一个easyui的案例(SSH)