轉自http://www.oxbbs.net/cgi-bin/forums.cgi?forum=38,原作者rosealet
WIN2K&WIN9X+APACHE+JSP+TOMCAT運行環境的配置總結:
以下的這片文章,決無抄襲,完全是我自己的配置總結!所用到的軟件可以到httpd.apache.org、jakarta.apache.org和java.sun.com下載。
如無法找到,可以告訴我,我會給出下載地址!
需要的東西:
1、一臺安裝有WIN2K系統的電腦,最好是professional的。(因為用server的話,會安裝IIS5,可能會占用80端口。我們現在用apache作http服務,當然就沒有必要用IIS了。)
2、java的運行環境:J2EE,我們可以使用j2sdk或j2jre,只是用jre就行。(sdk是開發環境包含運行環境,jre只是運行環境)
3、mod_jk或mod_jserv使apache與tomcat進行連接。我推薦用mod_jk,因為mod_jserv只能用于apache,而mod_jk可用于多種http服務軟件。windows下mod_jk是一個dll文件。
4、tomcat,最主要支持的JSP運行的軟件。
5、apache,目前最好的http服務軟件。
開始安裝:
1、安裝jdk,我用的是jdk_sdk1.3.1.01版,比如安裝到c:\jdk1.3下。之后添加jdk的環境變量。
變量名:path
變量值:c:\jdk1.3\bin
變量名:JAVA_HOME
變量值:c:\jdk1.3
變量名:CLASSPATH
變量值:.\;c:\jdk1.3\lib\dt.jar;c:\jdk1.3\lib\tools.jar;
重新啟動計算機使配置的環境變量生效
環境變量的添加位置:我的電腦>屬性>高級>環境變量(win2k)
如win9x在autoexec.bat中添加
Path=c:\jdk1.3\bin
Set JAVA_HOME=c:\jdk1.3
Set CLASSPATH=.\;c:\jdk1.3\lib\dt.jar;c:\jdk1.3\lib\tools.jar;
2、安裝apache 1.3.27 for windows版,比如安裝到c:\apache下。apache默認的主目錄是c:\apache\htdocs,我們可以對它進行更改,我們編輯c:\apache/conf/httpd.conf文件,找到關于Port、DocumentRoot這兩行,就可以設置當前的http服務的默認端口和主目錄。其他的設置,可以自己以后摸索!
在httpd.conf中添加:
LoadModule jk_module libexec/mod_jk.dll
AddModule mod_jk.c
JkWorkersFile "c:\Tomcat 4.0\conf\worker.properties"
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampformat "[%a %b %d %H:%M:%S %Y] "
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
以上語句的基本意思是:
第一、二句:指定apache和tomcat連接插件的位置和名稱
第三句:指出mod_jk工作所需要的工作文件的位置
第七、八句:是將所有和jsp和servlet的請求通過Apj13的協議送給Tomcat,讓Tomcat來處理
3、將下載的mod_jk.dll放到安裝Apache目錄下的libexec下。
4、安裝tomcat for windows版,這里我用tomcat 4.0.4。比如安裝到c:\tomcat4.0下。
在c:\Tomcat4.0\conf目錄下建一個worker.properties文件
worker.properties文件內容為:
# $Header: /home/cvs/jakarta-tomcat/src/etc/Attic/workers.properties,v 1.3.2.2 2000/10/16 01:59:22 larryi Exp $
# $Revision: 1.3.2.2 $
# $Date: 2000/10/16 01:59:22 $
#
#
# workers.properties -
#
# This file provides jk derived plugins with with the needed information to
# connect to the different tomcat workers.
#
# As a general note, the characters $( and ) are used internally to define
# macros. Do not use them in your own configuration!!!
#
# Whenever you see a set of lines such as:
# x=value
# y=$(x)something
#
# the final value for y will be valuesomething
#
# Normaly all you will need to modify is the first properties, i.e.
# workers.tomcat_home, workers.java_home and ps. Most of the configuration
# is derived from these.
#
# When you are done updating workers.tomcat_home, workers.java_home and ps
# you should have 3 workers configured:
#
# - An ajp12 worker that connects to localhost:8007
# - An ajp13 worker that connects to localhost:8009
# - A jni inprocess worker.
# - A load balancer worker
#
# However by default the plugins will only use the ajp12 worker. To have
# the plugins use other workers you should modify the worker.list property.
#
#
#
# workers.tomcat_home should point to the location where you
# installed tomcat. This is where you have your conf, webapps and lib
# directories.
#
workers.tomcat_home=c:\Tomcat 4.0
#
# workers.java_home should point to your Java installation. Normally
# you should have a bin and lib directories beneath it.
#
workers.java_home=c:\jdk1.3
#
# You should configure your environment slash... ps= on NT and / on UNIX
# and maybe something different elsewhere.
#
ps=\
# ps=/
#
#------ ADVANCED MODE ------------------------------------------------
#---------------------------------------------------------------------
#
#
#------ DEFAULT worket list ------------------------------------------
#---------------------------------------------------------------------
#
#
# The workers that your plugins should create and work with
#
worker.list=ajp12, ajp13
#
#------ DEFAULT ajp12 WORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
#
#
# Defining a worker named ajp12 and of type ajp12
# Note that the name and the type do not have to match.
#
worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
# ----> lbfactor must be > 0
# ----> Low lbfactor means less work done by the worker.
worker.ajp12.lbfactor=1
#
#------ DEFAULT ajp13 WORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
#
#
# Defining a worker named ajp13 and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
# ----> lbfactor must be > 0
# ----> Low lbfactor means less work done by the worker.
worker.ajp13.lbfactor=1
#
# Specify the size of the open connection cache.
#worker.ajp13.cachesize
#
#------ DEFAULT LOAD BALANCER WORKER DEFINITION ----------------------
#---------------------------------------------------------------------
#
#
# The loadbalancer (type lb) workers perform wighted round-robin
# load balancing with sticky sessions.
# Note:
# ----> If a worker dies, the load balancer will check its state
# once in a while. Until then all work is redirected to peer
# workers.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp12, ajp13
#
#------ DEFAULT JNI WORKER DEFINITION---------------------------------
#---------------------------------------------------------------------
#
#
# Defining a worker named inprocess and of type jni
# Note that the name and the type do not have to match.
#
worker.inprocess.type=jni
#
#------ CLASSPATH DEFINITION -----------------------------------------
#---------------------------------------------------------------------
#
#
# Additional class path components.
#
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes
#
# The XML parser provided with Tomcat
#
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jaxp.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parser.jar
#
# Tomcat`s implementation
#
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)jasper.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)servlet.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)webserver.jar
#
# Javac as available from Java2SE
#
worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar
#
# Setting the command line for tomcat
# Note: The cmd_line string may not contain spaces.
#
worker.inprocess.cmd_line=-config
worker.inprocess.cmd_line=$(workers.tomcat_home)/conf/jni_server.xml
worker.inprocess.cmd_line=-home
worker.inprocess.cmd_line=$(workers.tomcat_home)
#
# The JVM that we are about to use
#
# This is for Java2
#
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
#
# And this is for jdk1.1.X
#
#worker.inprocess.jvm_lib=$(workers.java_home)$(ps)bin$(ps)javai.dll
#
#
# Setting the place for the stdout and stderr of tomcat
#
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr
#
# Setting the tomcat.home Java property
#
worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)
#
# Java system properties
#
# worker.inprocess.sysprops=java.compiler=NONE
# worker.inprocess.sysprops=myprop=mypropvalue
#
# Additional path components.
#
# worker.inprocess.ld_path=d:$(ps)SQLLIB$(ps)bin
#
在這個文件中需要修改兩個地方,一個是workers.tomcat_home,這是指定Tomcat工作的目錄,另外一個是workers.java_home,這是指定Jdk的目錄,大家可以做適當修改!
再配置TOMCAT核心文件,打開 c:\Tomcat4.0\conf\server.xml
修改如下:
將<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
-->
的<!-- --> 去掉,這句話熟悉XML的人都知道它是注釋,因為默認的Tomcat4
是沒有啟用Apj13的8009的端口即mod_jk所使用,修改后如下:
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
然后保存,現在你的配置基本完成了。重新啟動計算機,開始整體測試。
5、測試:
首先,啟動Apache,然后在瀏覽器里輸入http://localhost,如果能看
到Apache的歡迎頁面,那么恭喜您,第一步成功了。
然后,運行startup.bat啟動Tomcat,再打開瀏覽器輸入:http://localhost:8080/
如果看到可愛的Tomcat,那么恭喜您,Tomcat也沒有問題。
最后最重要的是Apache下可以解釋jsp和Servlet,把下面的代碼copy到文本編輯器中命名為
rosealet.jsp,
內容如下:
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<body>
<%String str="rosealet studio.";%>
<%str=str+"welcome";%>
<%=str%>
</body>
</html>
將它保存到C:\Tomcat 4.0\webapps\ROOT下,然后在瀏覽器里輸入
http://localhost/rosealet.jsp如果看到了rosealet,那么您的確成功了。
我再闡述一個問題:
對于APACHE主機下訪問的JSP文件,實際上物理上不存在與APACHE的主機上,而是存在TOMCAT的主機目錄里,例如:
http://localhost/rosealet.jsp 中rosealet.jsp文件實際不在 c:\apache\htdocs\下,而在C:\Tomcat 4.0\webapps\ROOT 下。這點請注意,不要混淆概念!
轉自http://www.oxbbs.net/cgi-bin/forums.cgi?forum=38,原作者rosealet
--生活,是時尚,是藝術--
--TheStudioPlus--
補充日期: 2003-05-21 12:30:00
再談apache+tomcat,對以前文章的補充
這是對以前我的那篇"WIN2K+APACHE+JSP+TOMCAT配置總結"的補充。
一、配置環境變量:
1、以前我們配置的環境變量:
變量名:path
變量值:c:\jdk1.3\bin
變量名:JAVA_HOME
變量值:c:\jdk1.3
變量名:CLASSPATH
變量值:.\;c:\jdk1.3\lib\dt.jar;c:\jdk1.3\lib\tools.jar
2、現在我們也可以配置為:
變量名:JAVA_HOME
變量值:C:\jdk1.3 //若你沒按以上路徑安裝請更改為正確的路徑
變量名:TOMCAT_HOME
變量值:C:\Tomcat4 //若你沒按以上路徑安裝請更改為正確的路徑
變量名:CLASSPATH
變量值:%JAVA_HOME%\lib;%TOMCAT_HOME%\lib;%JAVA_HOME%\jre\bin
變量名:path
變量值:c:\jdk1.3\bin;c:\jdk1.3\jre\bin;
二、更改tomcat運行測試目錄:
假設你已有一個項目在e:\rosealet目錄下,包含index.jsp及其它jsp文件和bean,如WEB-INF\classes\下的
servlet、javabean。
1.設置Tomcat以支持你的項目目錄,打開C:\Tomcat4\conf\server.xml文件,在"</Context>"-"</Host>"添加
<Context path="/rosealet" debug="0" docBase="e:\rosealet" reloadable="true"/>并保存。
說明:Context (表示一個web應用程序);docBase定義本地路徑;path 表示此web路徑的url,
reloadable 這個屬性非常重要,如果為true,則tomcat會自動檢測應用程序的/WEB-INF/lib
和/WEB-INF/classes目錄的變化,自動裝載修改或新的bean及servlet,我們可以在不重起tomcat
的情況下看到bean帶給jsp的變化。
這樣請求的url:http://localhost/rosealet
2.啟動Tomcat,在瀏覽器的地址中輸入http://localhost/rosealet,如你的jsp及bean,servlet沒有錯誤,
一般會將你的index.jsp/index.html文件的
三、Apache與Tomcat綜合配置和虛擬主機配置:
若Apache與Tomcat正運行著,請關閉它們。
(1)配置Apache:
1.將下載的mod_jk.dll復制到c:\apache\modules或c:\apache\libexec 下。(無論復制到什么位置,
httpd.conf中是可以指定相應的位置的)
2.設置主頁文件類型:
編輯C:\Apache\conf下的httpd.conf,在"DirectoryIndex"一行,index.html的后面也可以添加
index.jsp并保存,注意相互之間應有空格。
3.設置虛擬主機:
apache中添加虛擬主機格式:
<VirtualHost>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/docs/dummy-host.example.com
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
讓Apache自動控制html與jsp的解析
編輯httpd.conf,在最后加入下面這段代碼。
<VirtualHost localhost> //localhost為本機,你可用本機ip
ServerAdmin admin@rosealet.com //你的mail地址
DocumentRoot e:\rosealet //你的項目根目錄,因為rosealet下可能有其他目路,因此設為e:\rosealet
ServerName localhost //你的服務名,若你的機器有域名,設為域名,現用本機作測試
ErrorLog logs/rosealet_home_log.txt //錯誤日志,在C:\Apache\logs下,可用其它任意名字
CustomLog logs/rosealet_Custom_log.txt common //訪問日志,在C:\Apache\logs下,可用其它任意名字
</VirtualHost>
4.設置Apache與Tomcat之間的連接:
讓Apache遇到jsp文件時,在后臺將其交由Tomcat去處理。
編輯httpd.conf,在最后加入下面這段代碼。
# Using mod_jk.dll to redirect dynamic calls to Tomcat
LoadModule jk_module modules/mod_jk.dll //裝載模塊,用于處理連接,如mod_jk放在libexec應些為:LoadModule jk_module libexec/mod_jk.dll
AddModule mod_jk.c //使用mod_jk.c的module,此行可刪除
JkWorkersFile "c:/tomcat4/conf/workers.properties" //設置模塊的工作文件
JkLogFile "/logs/mod_jk.log" //設置模塊工作的日志文件,Tocmat啟動時會自建
JkLogLevel info //設置日志文件的等級,此行可刪除
JkLogStampformat "[%a %b %d %H:%M:%S %Y] " //設置日志文件的格式,此行可刪除
JkMount /servlet/* ajp13 //讓Apache支持對servlet傳送,用以Tomcat解析
JkMount /*.jsp ajp13 //讓Apache支持對jsp傳送,用以Tomcat解析
到此Apache的配置基本完成,不過這時啟動Apache還不能正常工作。
(2)配置Tomcat:
在C:\Tomcat\conf下新建文件workers.properties,以前我們曾經建立過,它的內容非常多
但我們可以把它精簡后如下:
workers.tomcat_home=c:\Tomcat4
workers.java_home=c:\jdk1.3
ps=\
worker.list=ajp12, ajp13
worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
worker.ajp12.lbfactor=1
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp12, ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jaxp.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parser.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)jasper.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)servlet.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)webserver.jar
worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar
worker.inprocess.cmd_line=-config
worker.inprocess.cmd_line=$(workers.tomcat_home)/conf/jni_server.xml
worker.inprocess.cmd_line=-home
worker.inprocess.cmd_line=$(workers.tomcat_home)
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr
worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)
我們還可以更加精簡,因我們只用ajp13其內容如下:
workers.tomcat_home=c:\Tomcat4 //讓mod_jk模塊知道Tomcat
workers.java_home=c:\jdk1.3 //讓mod_jk模塊知道j2sdk
ps=\
worker.list=ajp13 //模塊版本,現有ajp14了,不要修改
worker.ajp13.port=8009 //工作端口,若沒占用則不用修改
worker.ajp13.host=localhost //本機,若上面的Apache主機不為localhost,作相應修改
worker.ajp13.type=ajp13 //類型
worker.ajp13.lbfactor=1 //代理數,不用修改
2.編輯server.xml文件:
讓tomcat打開ajp13端口8009
找到:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector" port="8009" minProcessors="5"
maxProcessors="75" acceptCount="10" debug="0"/>
-->
更改為:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector" port="8009" minProcessors="5"
maxProcessors="75" acceptCount="10" debug="0"/>
四、測試:
1.啟動Apache,Tomcat。
2.打開你的瀏覽器,在地址欄中輸入http://localhost:8080/rosealet ,若與上面的測試相同,
則Tomcat重新配置后正常!
3.在地址欄中輸入http://localhost/rosealet ,若與http://localhost:8080/rosealet的結果相同,
那恭喜你,Apache與Tomcat整合成功了!
五、虛擬主機下的配置、管理和應用:
下面以一個例子來說明虛擬主機如何同時使用Apache與Tomcat
虛擬主機host1的目錄結構如下所示:
/www
|---host1 虛擬主機host1的主目錄
| |--htdocs 普通根目錄:用于顯示靜態頁面或php程序
| |----logs apache訪問日志
| |----webapps java應用目錄(新加,與tomcat的webapps目錄無任何關聯)
| |--ROOT jsp根目錄:用于顯示jsp頁面程序
| |----kim 一套java應用實例
|---host2 虛擬主機host2的主目錄
............
要讓虛擬主機host1能同時使用Apache與Tomcat4,需要做如下配置:
1、編輯tomcat的配置文件server.xml,在最后的部分找到:
< !-- Define an Apache-Connector Service -- >
<!--
< Service name="Tomcat-Apache" >
< Connector className="org.apache.catalina.connector.warp.WarpConnector"
port="8008" minProcessors="5" maxProcessors="75"
enableLookups="true" appBase="webapps"
acceptCount="10" debug="0"/ >
< Engine className="org.apache.catalina.connector.warp.WarpEngine"
name="Apache" debug="0" >
< Logger className="org.apache.catalina.logger.FileLogger"
prefix="apache_log." suffix=".txt"
timestamp="true"/ >
< Realm className="org.apache.catalina.realm.MemoryRealm" / >
-- >
修改為:
< !-- Define an Apache-Connector Service -- >
< Service name="Tomcat-Apache" >
< Connector className="org.apache.catalina.connector.warp.WarpConnector"
port="8008" minProcessors="5" maxProcessors="75"
enableLookups="true" appBase="webapps"
acceptCount="10" debug="0"/ >
< Engine className="org.apache.catalina.connector.warp.WarpEngine"
name="Apache" debug="0" >
< Logger className="org.apache.catalina.logger.FileLogger"
prefix="apache_log." suffix=".txt"
timestamp="true"/ >
< !-- 下面是新加的內容 -- >
< Realm className="org.apache.catalina.realm.MemoryRealm" / >
< Host name="host1.rosealet.com" debug="0" appBase="/www/host1/webapps"
uppackWars="true" autoDeploy="true" > //定義虛擬主機host1的主目錄
< Context path="" docBase="ROOT" debug="0"/ > //定義jsp根目錄
< !-- 下面套用的是tomcat自帶的管理頁面,在虛擬主機下也可使用 -- >
< Context path="/manager" debug="0" privileged="true"
docBase="../server/webapps/manager"/ > //"../server/webapps/manager"指定到tomcat安裝目錄
<Context path="/admin" docBase="../server/webapps/admin"
debug="0" privileged="true"> //"../server/webapps/manager"指定到tomcat安裝目錄
< Context path="/kim" docBase="kim" debug="0"
reloadable="true" crossContext="true"/ > //在/kim下定義java應用實例
< Logger className="org.apache.catalina.logger.FileLogger"
prefix="host1_log." suffix=".txt"
timestamp="true"/ >
< /Host >
< !-- 新加內容結束 -- >
< /Engine >
< /Service >
2、編輯tomcat的管理權限文件tomcat-users.xml,在中間加一行:
< user username="name" password="passwd" roles="standard,manager"/ > //name、passwd可自定義
3、編輯apache的配置文件,httpd.conf做如下修改:
< VirtualHost xxx.xxx.xxx.xxx >
ServerName host1.rosealet.com
ServerAdmin host1@rosealet.com
DocumentRoot /www/host1/htdocs
ErrorLog /www/host1/logs/error_log
CustomLog /www/host1/logs/access_log common
WebAppDeploy ROOT warpConnection /
< /VirtualHost >
// 注:此行的作用是把ROOT目錄作為虛擬主機URL的根,并使前面定義的根htdocs失效。
但如果不想整個虛擬主機都使用jsp頁面程序,而想使用大量靜態頁面或php程序的話,
就要使用下面這行,并把所有的靜態頁面和php程序放在htdocs目錄下。
// WebAppDeploy ROOT warpConnection /jsp
WebAppDeploy manager warpConnection /manager
WebAppDeploy jive warpConnection /kim
// 在server.xml里每定義一個都要在這里加一條WebAppDeploy。
以后訪問http://host1.rosealet.com/manager/或http://host1.rosealet.com/admin/ 會提示輸入密碼,
在輸入正確的 name和passwd后,就會看到“Tomcat Web Application Manager”的頁面,里面的
Application Path已經是虛擬主機里配置的信息了,并可以對其進行管理。
到此虛擬主機下的配置和管理就全部完成,剩下的事情就是測試和應用了。