們?yōu)?/span>什么還要引入 Apache 或者其他的一些專門的 HTTP 服務(wù)器呢?原因有下面幾個(gè):
1. 提升對靜態(tài)文件的處理性能
2. 利用 Web 服務(wù)器來做負(fù)載均衡以及容錯(cuò)
3. 無縫的升級應(yīng)用程序
原理:
tomcat 為一個(gè)servelet容器,apache為一個(gè)web server,兩者之間通信通過mod_jk的模塊(由web服務(wù)器像apache、iis等使用)和Web Server通信,Tomcat 默認(rèn)的 AJP Connector 的端口是 8009.整個(gè)過程其實(shí)就是讓apache的httpd.conf文件調(diào)用mod_jk.conf,mod_jk.conf調(diào)用workers.properties,最后配置虛擬主機(jī)。
文件說明 :
mod_jk.conf
主要定義mod_jk模塊的位置以及mod_jk模塊的連接日志設(shè)置,還有定義worker.properties文件的位置。
worker.properties
定義worker的參數(shù),主要是連接tomcat主機(jī)的地址和端口信息。如果Tomcat與apache不在同一臺機(jī)器上,或者需要做多臺機(jī)器上tomcat的負(fù)載均衡只需要更改workers.properties文件中的相應(yīng)定義即可。
%APACHE_HOME%為你的安裝目錄
整合
1、準(zhǔn)備下載下列文件:
Jdk1.5
下載地址: http://java.sun.com
tomcat 5.5.9
下載地址:http://jakarta.apache.org
apache_2.2.4-win32-x86-no_ssl.msi
下載地址: http://httpd.apache.org/download.cgi
mod_jk-apache-2.2.3.so
下載地址:http://archive.apache.org/dist/jakarta/tomcat-connectors/
2、安裝好Jdk、tomcat、apache后,加入mod_jk連接模塊,就是把mod_jk-apache-2.2.3.so文件重名為mod_jk.so文件并拷貝到%APACHE_HOME%"modules下
3、修改apache的配置文件:
為了保持httpd.conf文件的簡潔,把jk模塊的配置放到單獨(dú)的文件中來,就在httpd.conf中增加一行調(diào)用
代碼 include %APACHE_HOME%Apache2"conf"mod_jk.conf
4:配置mod_jk.conf
請注意使用絕對路徑
其實(shí)最關(guān)鍵的就是 第一條 第二條 和最后一條,如果要精簡,就保留這三條內(nèi)容就可以了。
代碼
# Load mod_jk module
LoadModule jk_module "E:"Program Files"Apache Software Foundation"Apache2.2"modules"mod_jk.so"
# Where to find workers.properties
JkWorkersFile "E:"Program Files"Apache Software Foundation"Apache2.2"conf"workers.properties"
# Where to put jk logs
JkLogFile "E:"Program Files"Apache Software Foundation"Apache2.2"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
上面這一行我們設(shè)置了了 /*.jsp ajp13 就是說把所有.jsp結(jié)尾的文件都由ajp13這個(gè)worker交給tomcat處理了,如果應(yīng)用被映射為一個(gè).do的URL,這樣就會(huì)出錯(cuò).解決方法是再添加如下一行:
代碼
JkMount /*.do ajp13
5:配置apache2"conf"workers.properties
代碼
workers.tomcat_home=E:"Program Files"Apache Software Foundation"Tomcat 5.5
workers.java_home=E:"Program Files"Java"jdk1.5.0_08
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost #
worker.ajp13.type=ajp13 #
worker.ajp13.lbfactor=1 #
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost #本機(jī),若上面Tomcat主機(jī)不為localhost,作相應(yīng)修改
worker.ajp13.type=ajp13 #類型
worker.ajp13.lbfactor=1 #代理數(shù),不用修改
第二部分:虛擬主機(jī)的配置
舉例配置2個(gè)vhost網(wǎng)站 一個(gè)是 localhost ,另一個(gè)是 www.ok.com
當(dāng)然www.ok.com 是虛擬的,本地測試時(shí),應(yīng)該修改系統(tǒng)中的hosts文件,添加一行 127.0.0.1 www.ok.com
1:Apache 虛擬主機(jī)配置:
Httpd.conf文件最后添加
代碼
include D:"server"Apache2"conf"vhost.conf
而vhost.conf內(nèi)容寫
代碼
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster at localhost
DocumentRoot "D:/server/Tomcat/webapps/ROOT"
ServerName localhost
ErrorLog logs/localhost-error_log
CustomLog logs/localhost-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host dot example.com
DocumentRoot D:/server/www/
ServerName www.ok.com
ErrorLog logs/ok.com-error_log
CustomLog logs/ok.com-access_log common
<Location /server-status> # 這樣我可以看到apache服務(wù)器狀態(tài)
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
Allow from www.ok.com
</Location>
</VirtualHost>
2:Tomcat虛擬主機(jī)配置
添加新的www.ok.com 虛擬主機(jī),在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>
3:測試虛擬主機(jī)效果
訪問http://localhost/ 應(yīng)該可以看到原來的tomcat默認(rèn)頁面。
寫一個(gè) index.jsp
代碼
<html>
<title>
test jsp
</title>
<%
String showMessage="Oh My God!";
out.print(showMessage);
%>
</html>
放在d:/server/www下面,訪問 http://www.ok.com
頁面顯示Oh My God! 就成功了