1. 操作系統
RedHat Linux
2. 所需軟件
Apache 2.2.14 下載地址
http://apache.freelamp.com/httpd/httpd-2.2.14.tar.gz
Tomcat5.5.28 下載地址
http://tomcat.apache.org/download-55.cgi
JK 下載地址
http://apache.etoak.com/tomcat/tomcat-connectors
文件:tomcat-connectors-1.2.28-src.tar.gz
Jdk 1_5_0_04 下載地址
http://java.sun.com/j2se/1.5.0/download.jsp
備注:下載時將所需軟件包文件保存在/opt目錄下
3. 安裝步驟
A 安裝JDK
# cd /opt/
# chmod +x jdk-1_5_0_04-linux-i586-rpm.bin
# ./jdk-1.5.0_04-linux-i586-rpm.bin
# cd /usr/java/
# ln -s /usr/java/jdk-1_5_0_04 /opt/java
# vi /etc/profile
#添加如下內容
export JAVA_HOME=/opt/java/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=.:$JAVA_HOME/bin:$PATH
B 安裝Apache
# cd /opt/
# tar xvfz httpd-2.0.54.tar.gz
# cd httpd-2.0.54
#./configure --prefix=/opt/apache --enable-module=so
# make
# make install
# cd /opt/apache/conf
# vi ./httpd.conf
將Listen 80 修改為Listen <Your IP>:80 IP到時候就是自己機器的IP地址,否則
其他機器沒法訪問你。
將ServerName 修改為ServerName <HOST-NAME> ,這個地方直接127.0.0.1即可。集群的時候會讀httpd-vhost.conf
下面是一個配置有關的問題:
修改serverName,重裝apache后問題依舊,最后發現host配置不正確,
httpd.conf 中serverName 為www.zudar.com
host 中 127.0.0.1 www.zudar.com
改為 192.168.100.38 www.zudar.com
后正確啟動
問題是由于 ip 地址 與 域名沒有正確匹配引起
也就是說host中一點要配置好ip與serverName
hostname與/etc/hosts的關系
很過人一提到更改hostname首先就想到修改/etc/hosts文件,認為hostname的配置文件就是/etc/hosts。其實不是的。
hosts文件的作用相當如DNS,提供IP地址到hostname的對應。早期的互聯網計算機少,單機hosts文件里足夠存放所有聯網計算機。不過隨著互聯網的發展,這就遠遠不夠了。于是就出現了分布式的DNS系統。由DNS服務器來提供類似的IP地址到域名的對應。具體可以man hosts。
Linux系統在向DNS服務器發出域名解析請求之前會查詢/etc/hosts文件,如果里面有相應的記錄,就會使用hosts里面的記錄。/etc/hosts文件通常里面包含這一條記錄
127.0.0.1 localhost.localdomain localhost
hosts文件格式是一行一條記錄,分別是IP地址 hostname aliases,三者用空白字符分隔,aliases可選。
127.0.0.1到localhost這一條建議不要修改,因為很多應用程序會用到這個,比如sendmail,修改之后這些程序可能就無法正常運行。
修改hostname后,如果想要在本機上用newhostname來訪問,就必須在/etc/hosts文件里添加一條newhostname的記錄。比如我的eth0的IP是192.168.1.61,我將hosts文件修改如下:
#hostname blog.infernor.net
# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.61 blog.infernor.net blog
這樣,我就可以通過blog或者blog.infernor.net來訪問本機。
在DirectoryIndex中添加 index.jsp
# cd /opt/apache/bin/
# ./apachectl configtest
若顯示Syntax ok則表明安裝成功
#./apachectl start
啟動apache服務,訪問本機80端口,查看端口是否正常
# ./apachectl stop
關閉服務
備注:prefix定義apache的安裝路徑
C 安裝Tomcat
# cd /opt/
# tar xvfz jakarta-tomcat-5.5.9.tar.gz
# ln –s /opt/jakarta-tomcat-5.5.9 /opt/tomcat
# vi /opt/tomcat/bin/catalina.sh
JAVA_HOME=/opt/java
啟動服務后,訪問本機8080端口,查看端口是否正常
# /opt/tomcat/bin/startup.sh /startup.bat
關閉服務
# /opt/tomcat/bin/shutdown.sh /shutdown.bat
修改各個tomcat的端口(如果兩臺機器是在不同的主機上,端口可以不動,顯然)
tomcat1/conf/server.xml
<Server port="8005" shutdown="SHUTDOWN" debug="0">改為
<Server port="11001" shutdown="SHUTDOWN" debug="0">
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8"/>改為
<Connector port="11002"
......
作loadbalance的話,上面connector可以注釋掉。
<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />改為
<Connector port="11003"
......
tomcat2/conf/server.xml
<Server port="8005" shutdown="SHUTDOWN" debug="0">改為
<Server port="12001" shutdown="SHUTDOWN" debug="0">
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8"/>改為
<Connector port="12002"
......
上面這個connector同樣也注釋掉。
<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />改為
<Connector port="12003"
D 安裝JK
#cd /usr/local/
# tar xzvf jakarta-tomcat-connectors-1.2.14-src.tar.gz
#cd jakarta-tomcat-connectors-1.2.14-src/native
#./buildconf.sh
#./configure --with-apxs=/usr/local/apache/bin/apxs
#make
#make install
#cd /opt/jakarta-tomcat-connectors- jk1.2.14-src/jk/native/apache-2.0/
#cp mod_jk.so /opt/apache/modules/
E 系統整合
#vi /opt/apache/conf/httpd.conf
在文件最末尾加上如下語句
include conf/mod_jk.conf
# Configure mod_jk.conf
在conf目錄下創建mod_jk.conf文件,內容如下:
--------------------------mod_jk.conf--------------------------
# 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] "
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
#指定那些請求交給tomcat處理,"controller"為在workers.propertise里指定的負載分配控制器
JkMount /*.jsp loadbalancer(這個loadbalancer是下面worker.list最后一個值)
如果還要指定*.do也進行分流就再加一行
JkMount /*.do loadbalancer
如果你想對所有的請求進行分流只需要寫成
JkMount /* loadbalancer
--------------------------mod_jk.conf--------------------------
編輯workers.properties
#vi /opt/apache/conf/workers.properties
#
# workers.properties
#
# list the workers by name
worker.list=tomcat1, tomcat2, loadbalancer
# ------------------------
# First tomcat server
# ------------------------
worker.tomcat1.port=11003
worker.tomcat1.host=127.0.0.1
worker.tomcat1.type=ajp13
# Specify the size of the open connection cache.
#worker.tomcat1.cachesize
#
# 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.tomcat1.lbfactor=100
# ------------------------
# Second tomcat server
# ------------------------
worker.tomcat2.port=12003
worker.tomcat2.host=127.0.0.1
worker.tomcat2.type=ajp13
# Specify the size of the open connection cache.
#worker.tomcat2.cachesize
#
# 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.tomcat2.lbfactor=100
# ------------------------
# Load Balancer worker
# ------------------------
# The loadbalancer (type lb) worker performs weighted 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
# worker.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1, tomcat2
#
# END workers.properties
#
cluster配置,如果不配置cluster只是做loadbalance不需要
修改server.xml中的engine
#vi /opt/tomcat/conf/server.xml
在120行左右修改原來的, 添加jvmRoute="tomcat1"
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
若第二臺tomcat,添加jvmRoute的修改為tomcat2
至此,系統已經整個完畢 啟動apache和tomcat服務 如果不放心可以編寫一個測試
在其中一個tomcat的webapps中建立一個目錄TestCluster,里面新建一個test.jsp,內容為
<%
System.out.println("===========================");
%>
把TestCluster放到tomcat1,tomcat2的webapps下
啟動apache,tomcat1,tomcat2,進行測試
通過 http://localhost/TestCluster/test.jsp 訪問,多刷新幾次頁面,查看Tomcat1和Tomcat2 logs目錄下面的catalina.out
文件,你將可以看到打印了一行行"===========================",并且從統計上來說,
大約在tomcat2打印的數量和在Tomcat1中一樣,
如果lbfactor不一樣的話,可以看到請求會被tomcat1,tomcat2按照不同的權重分流處理,實現了負載均衡。
自動重啟
將如下內容添加至/etc/rc.d/rc.local文件末尾,以便系統啟動后開啟apache,tomcat服務
/usr/local/tomcat1/bin/startup.sh
/usr/local/tomcat2/bin/startup.sh
/opt/apache/bin/apachectl start
這樣做是不是夠呢,比如說一個瀏覽器訪問的時候開始被分發給A sever,然后又分發給B server,那么
session里面的數據就不一致了或不正確了。兩個問題,一個是apahce已經實現了,對于同一個瀏覽器通過來的請求會綁定到同一個server,那就沒有問題。但是通過下面的測試發現不是的。
是需要其他配置還是?另一個方法就是session的復制,及集群功能。
配置集群的方法參考“鏈接”中的一篇文章就可以了。
apache和tomcat虛擬機設置:
1,在apache中 注銷DocumentRoot,ServerName,Directory 等行(Directory包括的也
是)。
2,把conf文件中的Include conf/extra/httpd-vhosts.conf的注銷去掉,這個文件專
門用于配置虛擬主機。
3,設置conf文件的listen 為你的ip
4,假設apache的項目在usr/webapps下,項目的域名為www.mydomain.com,并在isp做好
了域名解析指向當前服務器的IP
5,打開conf/extra/httpd-vhosts.conf ,添加如下內容
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin admin@yazhouly.cn
ServerName www.mydomain.com
DocumentRoot "/usr/webapps/test"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "/usr/webapps/test">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
JkMount /* loadbalancer
</VirtualHost>
其中最后四行表示關于jsp的內容都轉交給tomcat處理,雖然我們在配置連接器的時候
,已經配置了,但是在虛擬機設置后,還是要單獨加上這幾句,其中work就是
mod_jk.conf中配置的代理名。
打開tomcat目錄conf下面的server.xml
添加主機信息
<Host name="localhost" appBase="/usr/webapps/test"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/usr/webapps/test" debug="0" reloadable="true"
crossContext="true"/>
</Host>
保存 重新啟動apache
在地址欄中輸入
www.mydomain.com
就會出現你的首頁
遇到的問題
1)啟動時產生 Error receiving mcast package
經測試發現,我用的ADSL,如果我聯網,則會報這個異常,如果斷網則不會產生。看來那個
tcpListenAddress="192.168.0.1"
需要使用外網的IP地址才可以。
2)啟動異常,一般是端口被占用
請仔細看各個server.xml配置文件,各個端口不能相同
3)如果不能做cluster只做load balance那么jvm="tomcat1"和jvm="tomcat2"這兩部分內容必須保留,
cluster保持注釋狀態,<distributable/>不需要。
RedHat Linux
2. 所需軟件
Apache 2.2.14 下載地址
http://apache.freelamp.com/httpd/httpd-2.2.14.tar.gz
Tomcat5.5.28 下載地址
http://tomcat.apache.org/download-55.cgi
JK 下載地址
http://apache.etoak.com/tomcat/tomcat-connectors
文件:tomcat-connectors-1.2.28-src.tar.gz
Jdk 1_5_0_04 下載地址
http://java.sun.com/j2se/1.5.0/download.jsp
備注:下載時將所需軟件包文件保存在/opt目錄下
3. 安裝步驟
A 安裝JDK
# cd /opt/
# chmod +x jdk-1_5_0_04-linux-i586-rpm.bin
# ./jdk-1.5.0_04-linux-i586-rpm.bin
# cd /usr/java/
# ln -s /usr/java/jdk-1_5_0_04 /opt/java
# vi /etc/profile
#添加如下內容
export JAVA_HOME=/opt/java/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=.:$JAVA_HOME/bin:$PATH
B 安裝Apache
# cd /opt/
# tar xvfz httpd-2.0.54.tar.gz
# cd httpd-2.0.54
#./configure --prefix=/opt/apache --enable-module=so
# make
# make install
# cd /opt/apache/conf
# vi ./httpd.conf
將Listen 80 修改為Listen <Your IP>:80 IP到時候就是自己機器的IP地址,否則
其他機器沒法訪問你。
將ServerName 修改為ServerName <HOST-NAME> ,這個地方直接127.0.0.1即可。集群的時候會讀httpd-vhost.conf
下面是一個配置有關的問題:
修改serverName,重裝apache后問題依舊,最后發現host配置不正確,
httpd.conf 中serverName 為www.zudar.com
host 中 127.0.0.1 www.zudar.com
改為 192.168.100.38 www.zudar.com
后正確啟動
問題是由于 ip 地址 與 域名沒有正確匹配引起
也就是說host中一點要配置好ip與serverName
hostname與/etc/hosts的關系
很過人一提到更改hostname首先就想到修改/etc/hosts文件,認為hostname的配置文件就是/etc/hosts。其實不是的。
hosts文件的作用相當如DNS,提供IP地址到hostname的對應。早期的互聯網計算機少,單機hosts文件里足夠存放所有聯網計算機。不過隨著互聯網的發展,這就遠遠不夠了。于是就出現了分布式的DNS系統。由DNS服務器來提供類似的IP地址到域名的對應。具體可以man hosts。
Linux系統在向DNS服務器發出域名解析請求之前會查詢/etc/hosts文件,如果里面有相應的記錄,就會使用hosts里面的記錄。/etc/hosts文件通常里面包含這一條記錄
127.0.0.1 localhost.localdomain localhost
hosts文件格式是一行一條記錄,分別是IP地址 hostname aliases,三者用空白字符分隔,aliases可選。
127.0.0.1到localhost這一條建議不要修改,因為很多應用程序會用到這個,比如sendmail,修改之后這些程序可能就無法正常運行。
修改hostname后,如果想要在本機上用newhostname來訪問,就必須在/etc/hosts文件里添加一條newhostname的記錄。比如我的eth0的IP是192.168.1.61,我將hosts文件修改如下:
#hostname blog.infernor.net
# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.61 blog.infernor.net blog
這樣,我就可以通過blog或者blog.infernor.net來訪問本機。
在DirectoryIndex中添加 index.jsp
# cd /opt/apache/bin/
# ./apachectl configtest
若顯示Syntax ok則表明安裝成功
#./apachectl start
啟動apache服務,訪問本機80端口,查看端口是否正常
# ./apachectl stop
關閉服務
備注:prefix定義apache的安裝路徑
C 安裝Tomcat
# cd /opt/
# tar xvfz jakarta-tomcat-5.5.9.tar.gz
# ln –s /opt/jakarta-tomcat-5.5.9 /opt/tomcat
# vi /opt/tomcat/bin/catalina.sh
JAVA_HOME=/opt/java
啟動服務后,訪問本機8080端口,查看端口是否正常
# /opt/tomcat/bin/startup.sh /startup.bat
關閉服務
# /opt/tomcat/bin/shutdown.sh /shutdown.bat
修改各個tomcat的端口(如果兩臺機器是在不同的主機上,端口可以不動,顯然)
tomcat1/conf/server.xml
<Server port="8005" shutdown="SHUTDOWN" debug="0">改為
<Server port="11001" shutdown="SHUTDOWN" debug="0">
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8"/>改為
<Connector port="11002"
......
作loadbalance的話,上面connector可以注釋掉。
<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />改為
<Connector port="11003"
......
tomcat2/conf/server.xml
<Server port="8005" shutdown="SHUTDOWN" debug="0">改為
<Server port="12001" shutdown="SHUTDOWN" debug="0">
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8"/>改為
<Connector port="12002"
......
上面這個connector同樣也注釋掉。
<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />改為
<Connector port="12003"
D 安裝JK
#cd /usr/local/
# tar xzvf jakarta-tomcat-connectors-1.2.14-src.tar.gz
#cd jakarta-tomcat-connectors-1.2.14-src/native
#./buildconf.sh
#./configure --with-apxs=/usr/local/apache/bin/apxs
#make
#make install
#cd /opt/jakarta-tomcat-connectors- jk1.2.14-src/jk/native/apache-2.0/
#cp mod_jk.so /opt/apache/modules/
E 系統整合
#vi /opt/apache/conf/httpd.conf
在文件最末尾加上如下語句
include conf/mod_jk.conf
# Configure mod_jk.conf
在conf目錄下創建mod_jk.conf文件,內容如下:
--------------------------mod_jk.conf--------------------------
# 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] "
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
#指定那些請求交給tomcat處理,"controller"為在workers.propertise里指定的負載分配控制器
JkMount /*.jsp loadbalancer(這個loadbalancer是下面worker.list最后一個值)
如果還要指定*.do也進行分流就再加一行
JkMount /*.do loadbalancer
如果你想對所有的請求進行分流只需要寫成
JkMount /* loadbalancer
--------------------------mod_jk.conf--------------------------
編輯workers.properties
#vi /opt/apache/conf/workers.properties
#
# workers.properties
#
# list the workers by name
worker.list=tomcat1, tomcat2, loadbalancer
# ------------------------
# First tomcat server
# ------------------------
worker.tomcat1.port=11003
worker.tomcat1.host=127.0.0.1
worker.tomcat1.type=ajp13
# Specify the size of the open connection cache.
#worker.tomcat1.cachesize
#
# 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.tomcat1.lbfactor=100
# ------------------------
# Second tomcat server
# ------------------------
worker.tomcat2.port=12003
worker.tomcat2.host=127.0.0.1
worker.tomcat2.type=ajp13
# Specify the size of the open connection cache.
#worker.tomcat2.cachesize
#
# 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.tomcat2.lbfactor=100
# ------------------------
# Load Balancer worker
# ------------------------
# The loadbalancer (type lb) worker performs weighted 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
# worker.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1, tomcat2
#
# END workers.properties
#
cluster配置,如果不配置cluster只是做loadbalance不需要
修改server.xml中的engine
#vi /opt/tomcat/conf/server.xml
在120行左右修改原來的, 添加jvmRoute="tomcat1"
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
若第二臺tomcat,添加jvmRoute的修改為tomcat2
至此,系統已經整個完畢 啟動apache和tomcat服務 如果不放心可以編寫一個測試
在其中一個tomcat的webapps中建立一個目錄TestCluster,里面新建一個test.jsp,內容為
<%
System.out.println("===========================");
%>
把TestCluster放到tomcat1,tomcat2的webapps下
啟動apache,tomcat1,tomcat2,進行測試
通過 http://localhost/TestCluster/test.jsp 訪問,多刷新幾次頁面,查看Tomcat1和Tomcat2 logs目錄下面的catalina.out
文件,你將可以看到打印了一行行"===========================",并且從統計上來說,
大約在tomcat2打印的數量和在Tomcat1中一樣,
如果lbfactor不一樣的話,可以看到請求會被tomcat1,tomcat2按照不同的權重分流處理,實現了負載均衡。
自動重啟
將如下內容添加至/etc/rc.d/rc.local文件末尾,以便系統啟動后開啟apache,tomcat服務
/usr/local/tomcat1/bin/startup.sh
/usr/local/tomcat2/bin/startup.sh
/opt/apache/bin/apachectl start
這樣做是不是夠呢,比如說一個瀏覽器訪問的時候開始被分發給A sever,然后又分發給B server,那么
session里面的數據就不一致了或不正確了。兩個問題,一個是apahce已經實現了,對于同一個瀏覽器通過來的請求會綁定到同一個server,那就沒有問題。但是通過下面的測試發現不是的。
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
// 如果有新的 Session 屬性設置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session 列表</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="index.jsp" method="POST">
名稱:<input type=text size=20 name="dataName">
<br>
值:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
// 如果有新的 Session 屬性設置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session 列表</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="index.jsp" method="POST">
名稱:<input type=text size=20 name="dataName">
<br>
值:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
是需要其他配置還是?另一個方法就是session的復制,及集群功能。
配置集群的方法參考“鏈接”中的一篇文章就可以了。
apache和tomcat虛擬機設置:
1,在apache中 注銷DocumentRoot,ServerName,Directory 等行(Directory包括的也
是)。
2,把conf文件中的Include conf/extra/httpd-vhosts.conf的注銷去掉,這個文件專
門用于配置虛擬主機。
3,設置conf文件的listen 為你的ip
4,假設apache的項目在usr/webapps下,項目的域名為www.mydomain.com,并在isp做好
了域名解析指向當前服務器的IP
5,打開conf/extra/httpd-vhosts.conf ,添加如下內容
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin admin@yazhouly.cn
ServerName www.mydomain.com
DocumentRoot "/usr/webapps/test"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "/usr/webapps/test">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
JkMount /* loadbalancer
</VirtualHost>
其中最后四行表示關于jsp的內容都轉交給tomcat處理,雖然我們在配置連接器的時候
,已經配置了,但是在虛擬機設置后,還是要單獨加上這幾句,其中work就是
mod_jk.conf中配置的代理名。
打開tomcat目錄conf下面的server.xml
添加主機信息
<Host name="localhost" appBase="/usr/webapps/test"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/usr/webapps/test" debug="0" reloadable="true"
crossContext="true"/>
</Host>
保存 重新啟動apache
在地址欄中輸入
www.mydomain.com
就會出現你的首頁
遇到的問題
1)啟動時產生 Error receiving mcast package
經測試發現,我用的ADSL,如果我聯網,則會報這個異常,如果斷網則不會產生。看來那個
tcpListenAddress="192.168.0.1"
需要使用外網的IP地址才可以。
2)啟動異常,一般是端口被占用
請仔細看各個server.xml配置文件,各個端口不能相同
3)如果不能做cluster只做load balance那么jvm="tomcat1"和jvm="tomcat2"這兩部分內容必須保留,
cluster保持注釋狀態,<distributable/>不需要。