久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Apache和Tomcat的整合,原理及例子 --copy liang blog - sizhefang - JavaEye技術(shù)網(wǎng)站

 ~水手~!! 2010-12-24
這類文檔很多很多,,但是大多是由不明原理的人拘泥于具體版本寫出來的,有很多錯(cuò)漏或多余的部分,。
最后找到一篇寫得很很不錯(cuò)的,,http://macawspark.spaces./blog/
我修正了其中的錯(cuò)誤然后加了一些自己的理解
原理
tomcat 為一個(gè)jsp的容器,apache為一個(gè)web server,,兩者之間通信通過worker進(jìn)行(由Tomcat使用Server.xml文件中Connector的標(biāo)簽來定義其端口和協(xié)議),,通過 mod_jk的模塊(由web服務(wù)器像apache、iis等使用)和Web Server通信,。
通信協(xié)議有很多,,其中jk2已經(jīng)被拋棄了,現(xiàn)在就用jk就好了,。
整個(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不在同一臺(tái)機(jī)器上,或者需要做多臺(tái)機(jī)器上tomcat的負(fù)載均衡只需要更改workers.properties文件中的相應(yīng)定義即可,。

第一部分:安裝配置tomcat apache mod_jk j2sdk

準(zhǔn)備下載下列文件
Jdk1.5
下載地址:  http://java.
tomcat 5.5.9
下載地址:http://jakarta.
apache apache_2.0.59
下載地址: http://httpd./download.cgi
jakarta-tomcat-connectors-jk2.0.43-win32-apache2.0.49(根據(jù)Apache版本決定)
下載地址:http://archive./dist/jakarta/tomcat-connectors/
把上面所有組件都安裝到D:\Server目錄下,,這樣也方便日常管理配置和將來移植到別的服務(wù)器上去。
1:安裝j2sdk
安裝到 D:\server\j2sdk\ 目錄下,,注意安裝成系統(tǒng)服務(wù)
2: 安裝tomcat
安裝到D:\server\tomcat\目錄下,,注意安裝成系統(tǒng)服務(wù)
可能遇到的問題
問題1: 在解析JSP頁面時(shí),提示無法找到j(luò)ava compiler
請(qǐng)拷貝 j2sdk\lib\tools.jar 到 tomcat\common\lib下面,。
使用tomcat作為service啟動(dòng)后總是這樣,,當(dāng)然用startup.bat腳本啟動(dòng)倒是完全正常。主要原因分析起來是以service方式啟動(dòng)的Tomcat無法讀取JAVA_HOME 和CLASS_PATH等環(huán)境變量,。
問題2:如何解決通過服務(wù)方式啟動(dòng)tomcat時(shí)log中提示ZoneInfo:d:\server\j2sdk\lib\zi\ZoneInfoMappings(系統(tǒng)找不到指定的路徑,。)
從d:\server\j2sdk\jre\lib目錄拷貝所有文件放到 d:\server\j2sdk\lib\ ,jre\lib 中的文件和j2sdk\lib\ 中的文件沒有一個(gè)重復(fù)的,,不用擔(dān)心會(huì)覆蓋掉j2sdk\lib 中原有的任何文件,。
3:安裝apache 到 d:\server\ (會(huì)自動(dòng)生成apache2文件夾)
配置 index.jsp 為默認(rèn)頁 配置 GB2312為默認(rèn)語言
不只Apache的httpd.conf中定義了默認(rèn)頁面文件,連Tomcat的web.xml配置文件的結(jié)尾處也定義了默認(rèn)頁面文件,,而且Tomcat中定義的的優(yōu)先級(jí)還高于原有的Apache中所定義的默認(rèn)頁,。
4:加入mod_jk連接模塊
拷貝 mod_jk-1.2.10-apache-2.0.43.so 到d:\server\apache2\modules\  改名為mod_jk.so
5: 修改apache的配置文件
為了保持httpd.conf文件的簡潔,,把jk模塊的配置放到單獨(dú)的文件中來,就在httpd.conf中增加一行調(diào)用
代碼
include D:\server\Apache2\conf\mod_jk.conf

6:配置mod_jk.conf
請(qǐng)注意使用絕對(duì)路徑
其實(shí)最關(guān)鍵的就是 第一條 第二條 和最后一條,,如果要精簡,,就保留這三條內(nèi)容就可以了。
代碼
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so

# 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

上面這一行我們?cè)O(shè)置了了 /*.jsp ajp13 就是說把所有.jsp結(jié)尾的文件都由ajp13這個(gè)worker交給tomcat處理了,,如果應(yīng)用被映射為一個(gè).do的URL,這樣就會(huì)出錯(cuò).解決方法是再添加如下一行:
代碼
JkMount /*.do ajp13

7:配置apache2\conf\workers.properties
代碼
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.
當(dāng)然www. 是虛擬的,本地測(cè)試時(shí),,應(yīng)該修改系統(tǒng)中的hosts文件,,添加一行 127.0.0.1  www.
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.
ErrorLog logs/-error_log
CustomLog logs/-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.
</Location>
</VirtualHost>

2:Tomcat虛擬主機(jī)配置
添加新的www. 虛擬主機(jī),,在tomcat安裝路徑\conf\server.xml的最后,,找到<Engine>段,改為
代碼
<Engine>
<Host name=”localhost” ……>
</Host>

<Host name="www." 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="_log." suffix=".txt" timestamp="true" />
</Host>
</Engine>

3:測(cè)試虛擬主機(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.
頁面顯示Hello World! 就成功了

第三部分,部分相關(guān)性能優(yōu)化及其它問題
如何使用server版jvm ,?
Jvm動(dòng)態(tài)庫有client和server兩個(gè)版本,,分別針對(duì)桌面應(yīng)用和服務(wù)器應(yīng)用做了相應(yīng)的優(yōu)化,client版本加 載速度較快,,server版本加載速度較慢但運(yùn)行起來較快,。
在開始菜單 tomcat5 ->tomcat config的java屬性中 有一項(xiàng) jvm路徑 指向server目錄下的jvm就行了。
更改默認(rèn)java.exe調(diào)用的jvm.dll,,這個(gè)由jvm.cfg決定,。
編輯%JAVA_HOME%\jre\lib\i386\jvm.cfg 
里面第一行寫的是 -client 默認(rèn)就是client版本 ,把第二行的-server KNOWN 放到第一行,, 如下面所示
代碼
-server KNOWN
-client KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR

改完保存,,然后看看默認(rèn)版本:
C:\java -version
java version "1.4.2_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b05)
Java HotSpot(TM) Server VM (build 1.4.2_07-b05,, mixed mode)

關(guān)于JAVA_HOME 與CATALINA_HOME,、 CLASSPATH
ClassPath 網(wǎng)上有人說在j2sdk1.3開始就不需要配置了,而本例中實(shí)際是不需要配置JAVA_HOME和CATALINA_HOME的,,因?yàn)閠omcat 以service模式啟動(dòng)根本不認(rèn)你的java_home,,當(dāng)然為了讓你能夠在命令行運(yùn)行startup.bat時(shí)也能順利啟動(dòng)Tomcat,,可以配置也 建議配置上JAVA_HOME 與CATALINA_HOME,ClassPath就免了吧,,連Resin都不需要這個(gè)了,。

有關(guān)路徑設(shè)置
Path=d:\server\jdk\bin;…… 放到最前,避免有多個(gè)jdk時(shí)的很多問題

關(guān)于apache2在win平臺(tái)上的一個(gè)小問題
可能apache的日志中常出現(xiàn)類似如下的提示
[error] (730038)An operation was attempted on something that is not a socket.: winnt_accept: AcceptEx failed. Attempting to recover.
這是由于apache 使用了微軟的AcceptEx()調(diào)用的緣故,,禁用掉即可,,此問題只會(huì)出現(xiàn)在win平臺(tái)且apache的2.0.49和更高版本上,出現(xiàn)錯(cuò)誤的大概原因是 防火墻和防病毒軟件所導(dǎo)致,,導(dǎo)致結(jié)果也有好幾種,,像apache占用很高cpu資源或者網(wǎng)站頁面無法打開。
解決方法修改d:\server\apache2\conf\httpd.conf中的mpm部分
代碼
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild  0
Win32DisableAcceptEx      #添加這一行即可,,做過壓力測(cè)試,,對(duì)性能影響很小,可以忽略
</IfModule>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多