Apache代理Tomcat实现session共享构建网上商城系统
一、环境介绍
二、安装配置后端服务器
三、安装配置前端服务器
四、配置Tomcat服务器实现session共享
五、构建网上商城系统
一、环境介绍
系统版本:CentOS 6.4_x86_64
Mysql版本:mysql-5.1.66-2.el6_3.x86_64
Apache版本:httpd-2.2.15-26.el6
Tomcat版本:apache-tomcat-7.0.33 点此下载
Jdk版本: jdk-7u40-linux-x64 点此下载
Tomcat-commectors版本:tomcat-connectors-1.2.37 点此下载
网上商城系统:shopxx-3.0Beta 点此下载
环境介绍:
注释:后端服务器网卡使用"Host-only";前端Apache服务器"eth1"网卡为"Host-only","eth0"网卡为"Bridged";而后端服务器的网关指向Apache的服务器的"eth1"网卡地址
当用户通过 "www.allen.com" 域名访问时,首先由前端Apache服务器响应并把动态页面根据某种调度算法将请求转发以后端Tomcat服务器上,由Tomcat服务器响应Apache服务器,再由Apache服务器响应客户端;而后端Tomcat服务器是基于Tomcat自带的基于内存复制的session共享集群
注意:Tomcat的详细配置及介绍请看前两篇写的博客,这里主要介绍tomcat如何实现的session共享
二、安装配置后端服务器
1、安装Tomcat服务器,安装方法相同,这里只介绍一次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
------安装JDK
# rpm -ivh jdk-7u40-linux-x64.rpm
# vim /etc/profile.d/java.sh
export JAVA_HOME= /usr/java/latest
export PATH=$JAVA_HOME /bin :$PATH
# . /etc/profile.d/java.sh
# java -version #查看JDK是否安装成功
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
------------------------------------------------------------------------
------安装Tomcat
# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
# cd /usr/local/
# ln -s apache-tomcat-7.0.42 tomcat
# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME= /usr/local/tomcat
export PATH=$CATALINA_HOME /bin :/$PATH
# catalina.sh version #查看Tomcat是否安装成功
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
Server version: Apache Tomcat /7 .0.42
Server built: Jul 2 2013 08:57:41
Server number: 7.0.42.0
OS Name: Linux
OS Version: 2.6.32-358.el6.x86_64
Architecture: amd64
JVM Version: 1.7.0_40-b43
JVM Vendor: Oracle Corporation
----------------------------------------------------------------------
# catalina.sh start #启动Tomcat进程
# jps #查看启动的JVM虚拟机与Tomcat
2925 Bootstrap
2943 Jps
# ss -tanlp|grep 80 #查看监听的端口
LISTEN 0 100 :::8080 :::* users :(( "java" ,2925,40))
LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users :(( "java" ,2925,46))
LISTEN 0 100 :::8009 :::* users :(( "java" ,2925,41))
|
2、安装Mysql服务器,并授权一个用户便于后面安装网上商城系统使用
1
2
3
4
5
6
|
[root@mysql ~] # yum -y install mysql-server
[root@mysql ~] # service mysqld start
[root@mysql ~] # mysql
mysql> grant all on *.* to 'shopuser' @ '192.168.1.%' identified by 'shoppass' ;
mysql> flush privileges;
注释:授权一个用户,用于商城系统连接数据库使用,这里授权了所有权限方便做实验,但在生产环境中千万不要授权所有权限;然后刷新使其生效
|
三、安装配置前端服务器
1、安装Apache服务
1
2
3
4
|
[root@apache ~] # yum -y install httpd
[root@apache ~] # service httpd start
[root@apache ~] # ss -tanl | grep 80
LISTEN 0 128 :::80 :::*
|
2、访问测试服务是否正常
3、配置基于"mod_proxy"模块的Apache代理(使用rpm包安装默认已经开启了此模块)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@apache ~] # vim /etc/httpd/conf.d/mod_proxy.conf
ProxyVia On
ProxyRequests Off
ProxyPreserveHost Off
<Proxy balancer: //allen >
BalancerMember http: //192 .168.1.1:8080 loadfactor=1
BalancerMember http: //192 .168.1.2:8080 loadfactor=1
ProxySet lbmethod=bytraffic
< /Proxy >
<Proxy *>
Order allow,deny
Allow from all
< /Proxy >
ProxyPass / balancer: //allen/
ProxyPa***everse / balancer: //allen/
<Location />
Order allow,deny
Allow from all
< /Location >
----------------------------------------------------------------------
注释:BalancerMember 指定后端服务器IP及连接协议、权重等
|
4、开启Tomcat的管理功能并访问测试;两台Tomcat服务器配置相同
1
2
3
4
5
6
7
8
|
------添加如下内容
# vim /usr/local/tomcat/conf/tomcat-users.xml
<role rolename= "manager-gui" />
<role rolename= "admin-gui" />
<user username= "tomcat" password= "tomcat" roles= "admin-gui.manager-gui" />
------------------------------------------------------------------------
# catalina.sh stop #重新启动使其生效
# catalina.sh start
|
5、使用"www.allen.com" 域名访问测试是否能登录到Tomcat后端管理页面
1
2
3
|
######Windows客户端在hosts文件中添加如下记录
C:\Windows\System32\drivers\etc\hosts
172.16.14.1 www.allen.com
|
四、配置Tomcat服务器实现session共享
1、修改Tomcat1服务器的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
[root@Tomcat1 ~] # cd /usr/local/tomcat/conf/
[root@Tomcat1 conf] # cp server.xml server.xml.bak
----------------------------------------------------------------------
[root@Tomcat1 conf] # vim server.xml
<Engine name= "Catalina" defaultHost= "www.allen.com" > #修改默认访问主机
<Host name= "www.allen.com" appBase= "/web/allen" #在Engine标签中添加一个虚拟主机
unpackWARs= "true" autoDeploy= "true" >
<Valve className= "org.apache.catalina.valves.AccessLogValve" directory= "logs"
prefix= "allen_access_log." suffix= ".txt"
pattern= "%h %l %u %t "%r" %s %b" />
<Context path= "" docBase= "/web/allen" />
< /Host >
----------------------------------------------------------------------
[root@Tomcat1 ~] # mkdir -p /web/allen #创建网站存放目录
[root@Tomcat1 conf] # vim /web/allen/index.jsp #创建测试页面
<%@ page language= "java" %>
<html>
< head ><title>TomcatA< /title >< /head >
<body>
<h1><font color= "red" >TomcatA < /font >< /h1 >
<table align= "centre" border= "1" >
< tr >
<td>Session ID< /td >
<% session.setAttribute( "abc" , "abc" ); %>
<td><%= session.getId() %>< /td >
< /tr >
< tr >
<td>Created on< /td >
<td><%= session.getCreationTime() %>< /td >
< /tr >
< /table >
< /body >
< /html >
----------------------------------------------------------------------
[root@Tomcat1 ~] # catalina.sh stop #重启使配置生效
[root@Tomcat1 ~] # catalina.sh start
|
2、修改Tomcat2服务器的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
[root@Tomcat2 ~] # cd /usr/local/tomcat/conf/
[root@Tomcat2 conf] # cp server.xml server.xml.bak
----------------------------------------------------------------------
[root@Tomcat2 conf] # vim server.xml
<Engine name= "Catalina" defaultHost= "www.allen.com" > #修改默认访问主机
<Host name= "www.allen.com" appBase= "/web/allen" #在Engine标签中添加一个虚拟主机
unpackWARs= "true" autoDeploy= "true" >
<Valve className= "org.apache.catalina.valves.AccessLogValve" directory= "logs"
prefix= "allen_access_log." suffix= ".txt"
pattern= "%h %l %u %t "%r" %s %b" />
<Context path= "" docBase= "/web/allen" />
< /Host >
----------------------------------------------------------------------
[root@Tomcat2 ~] # mkdir -p /web/allen #创建网站存放目录
[root@Tomcat2 conf] # vim /web/allen/index.jsp #创建测试页面
<%@ page language= "java" %>
<html>
< head ><title>TomcatB< /title >< /head >
<body>
<h1><font color= "blue" >TomcatB < /font >< /h1 >
<table align= "centre" border= "1" >
< tr >
<td>Session ID< /td >
<% session.setAttribute( "abc" , "abc" ); %>
<td><%= session.getId() %>< /td >
< /tr >
< tr >
<td>Created on< /td >
<td><%= session.getCreationTime() %>< /td >
< /tr >
< /table >
< /body >
< /html >
----------------------------------------------------------------------
[root@Tomcat2 ~] # catalina.sh stop #重启使配置生效
[root@Tomcat2 ~] # catalina.sh start
|
3、访问前端代理服务器测试是否实现负载均衡效果
4、配置Tomcat服务器实现session共享
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
######编辑Tomcat1服务器
[root@Tomcat1 ~] # nano /usr/local/tomcat/conf/server.xml #使用"nano"文本编辑工具打开主配置文件
<Cluster className= "org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions= "8" >
<Manager className= "org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown= "false"
notifyListenersOnReplication= "true" />
<Channel className= "org.apache.catalina.tribes.group.GroupChannel" >
<Membership className= "org.apache.catalina.tribes.membership.McastService"
address= "228.0.0.4" #组播地址要保持一致
port= "45564"
frequency= "500"
dropTime= "3000" />
<Receiver className= "org.apache.catalina.tribes.transport.nio.NioReceiver"
address= "192.168.1.1" #主机IP地址,也可以使用auto
port= "4000"
autoBind= "100"
selectorTimeout= "5000"
maxThreads= "6" />
<Sender className= "org.apache.catalina.tribes.transport.ReplicationTransmitter" >
<Transport className= "org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
< /Sender >
<Interceptor className= "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />
<Interceptor className= "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />
< /Channel >
<Valve className= "org.apache.catalina.ha.tcp.ReplicationValve"
filter= "" />
<Valve className= "org.apache.catalina.ha.session.JvmRouteBinderValve" />
<Deployer className= "org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir= "/tmp/war-temp/"
deployDir= "/tmp/war-deploy/"
watchDir= "/tmp/war-listen/"
watchEnabled= "false" />
<ClusterListener className= "org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />
<ClusterListener className= "org.apache.catalina.ha.session.ClusterSessionListener" />
< /Cluster >
注释:以上内容在“<Engine>”标签中添加,对所有主机生效;也可以添加在“<Host>”标签中,对当前主机生效;用 "nano" 编辑工具的原因是:复制这些集群配置粘贴至文本文件时有格式,如果使用 "vim" 打开,粘贴到文本中比较乱,修改完成后,按<Crtl+o>组合键然后再按<Crtl+x>组合键保存,再使用 "vim" 编辑器编辑其内容就没有问题了
----------------------------------------------------------------------
[root@Tomcat1 ~] # mkdir /web/allen/WEB-INF #创建"WEB-INF"目录
[root@Tomcat1 ~] # cp /usr/local/tomcat/conf/web.xml /web/allen/WEB-INF/ #为此网站提供一个"web.xml"文件
[root@Tomcat1 ~] # vim /web/allen/WEB-INF/web.xml
<web-app xmlns= "http://java.sun.com/xml/ns/javaee"
xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http: //java .sun.com /xml/ns/javaee
http: //java .sun.com /xml/ns/javaee/web-app_3_0 .xsd"
version= "3.0" >
<distributable/> #添加此行内容
< /web-app >
----------------------------------------------------------------------
[root@Tomcat1 ~] # catalina.sh stop #重启使用配置生效
[root@Tomcat1 ~] # catalina.sh start
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
========================================================================
######修改Tomcat2服务器
[root@Tomcat1 ~] # scp /usr/local/tomcat/conf/server.xml 192.168.1.2:/usr/local/tomcat/conf/
[root@Tomcat1 ~] # scp -r /web/allen/WEB-INF 192.168.1.2:/web/allen/
注释:将Tomcat1服务器的主配置文件与网站目录下的 "WEB-INF" 目录及目录下的文件复制到Tomcat2服务器;然后只需要修改主配置中集群配置代码中的IP地址为当前主机的IP地址即可:如下
<Receiver className= "org.apache.catalina.tribes.transport.nio.NioReceiver"
address= "192.168.1.2"
port= "4000"
autoBind= "100"
selectorTimeout= "5000"
maxThreads= "6" />
----------------------------------------------------------------------
[root@Tomcat2 ~] # catalina.sh stop #重启服务使配置生效
[root@Tomcat2 ~] # catalina.sh start
|
5、验证是否实现session共享
由上图可见,访问到不同的后台主机而"session_id"是相同的,已经成功实现"session"共享
6、可以查看Tomcat日志验证集群节点是否正常
1
2
3
|
# tail /usr/local/tomcat/logs/catalina.2013-09-24.log
INFO: Received member disappeared:org.apache.catalina.tribes.membership.MemberImpl[tcp: // {192, 168, 1, 2}:4000,{192, 168, 1, 2},4000, alive=377686, securePort=-1, UDP Port=-1, id ={73 -112 -108 -8 97 9 66 63 -110 -63 -81 115 61 -92 90 78 }, payload={}, command ={66 65 66 89 45 65 76 69 88 ...(9)}, domain={}, ]
注释:由上可知,有一个地址 "192.168.1.2" 已加入到集群中
|
五、构建网上商城系统
1、需调整java虚拟机运行的内存大小,否则安装网上商城系统时会提示内存较小
1
2
3
4
|
# vim /usr/local/tomcat/bin/catalina.sh
#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`" #找到此行在下面添加如下内容
JAVA_OPTS= "$JAVA_OPTS -Xmx300M"
注释:修改java虚拟机的内存需要在启动脚本里修改; -Xmx:java虚拟机使用最大内存 -Xms:java虚拟机初始值的内存大小 -Xmn:java虚拟机的最小使用内存;M:指的是MB,不指定则为KB
|
2、在Tomcat1服务器上安装网上商城系统
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@Tomcat1 ~] # unzip shopxx-3.0Beta.zip #解压缩商城系统
[root@Tomcat1 ~] # rm -rf /web/allen/* #删除原来网站目录文件或新添加一个虚拟主机;
[root@Tomcat1 ~] # cp -rp shopxx-v3.0-Beta/shopxx-3.0Beta /web/allen/shop #将商城系统复制到网站目录下
[root@Tomcat1 ~] # vim /web/allen/shop/WEB-INF/web.xml
<web-app version= "2.5" xmlns= "http://java.sun.com/xml/ns/javaee"
xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
<distributable/> #添加此内容
注释:修改网站目录下 "web.xml" 文件,在 "<web-app>" 标签下添加内容
------------------------------------------------------------------------
<distributable/>
[root@Tomcat1 ~] # catalina.sh stop #重启Tomcat服务
[root@Tomcat1 ~] # catalina.sh start
|
3、在前端Apache服务器上安装浏览器软件
1
2
|
[root@apache ~] # yum -y install firefox
注释:如果后端服务器直接可以跟本地通信,这一步可以省略,安装的时候不能经过代理来安装
|
4、安装网上商城系统
1
|
[root@apache ~] # firefox & #在前端服务器执行此命令会打开一个图形化浏览器窗口
|
勾选同意使用协议,点击下一步
点击下一步,会有一个警告提示信息,可以点OK继续安装;然后填写数据库信息
点立即安装,会自动创建数据库安装并初始化数据
5、然后点击完成安装,会提示让重启WEB服务,上图中还提示安装完成后删除install目录
1
2
3
4
|
[root@Tomcat1 ~] # mv /web/allen/shop/install /web/allen/shop/install.bak
[root@Tomcat1 ~] # catalina.sh stop
[root@Tomcat1 ~] # catalina.sh start
注释:这里没有删除Install目录只是做了重命名,然后重启服务
|
6、将Tomcat1服务器的的WEB程序与修改过的"catalina.sh"脚本复制到Tomcat2服务器相对应的路径下
1
2
3
4
5
6
|
[root@Tomcat2 ~] # rm -rf /web/allen/* #删除Tomcat2服务器上网站目录的测试文件
[root@Tomcat1 ~] # scp -rp /web/allen/shop 192.168.1.2:/web/allen/
[root@Tomcat1 ~] # scp /usr/local/tomcat/bin/catalina.sh 192.168.1.2:/usr/local/tomcat/bin/
------------------------------------------------------------------------
[root@Tomcat2 ~] # catalina.sh stop #重启Tomcat2服务器上的Tomcat服务
[root@Tomcat2 ~] # catalina.sh start
|
7、使用本地浏览器访问 "www.allen.com" 域名验证网上商城系统
8、可以在商城系统注册一个帐号,并登录到系统,比如购买一些衣服等,查看购物车中是否保存已加入到购物车中的衣服;如果有说明"session"信息已经成功同步到各节点并能够追踪用户的状态信息。
到此,Tomcat基于内存复制的session共享集群已完成,也可以成功实现一个网上商城系统的正常运行,这里就不做太多介绍了,当然如果博友们有兴趣可以登录到后台管理界面看看。
转载于:https://blog.51cto.com/hao360/1337991
Apache代理Tomcat实现session共享构建网上商城系统相关推荐
- tomcat的session共享
转自:https://blog.csdn.net/weixin_33940102/article/details/85973141 可通过下面方法限制一个用户访问一个服务器之后就只在该服务器上操作. ...
- 软件工程课程设计·SOA架构搭建SSM框架的网上商城系统
软件工程课程设计·SOA架构搭建SSM框架的网上商城系统 项目简介 本系统利用SSM框架.Dubbo框架.Maven模块化开发等技术开发的一个网上商城项目,主要包括订单系统模块.购物车系统模块.搜索系 ...
- Java+Springboot+Mybatis+Mysql+Bootstrap+Maven实现网上商城系统
网上商城系统 一.系统介绍 1.软件环境 2.功能模块图 3.系统功能 4.数据库表 5.SQL语句 6.工程截图 二.系统展示 1.用户-浏览商品 2.用户-注册 3.用户-登录 4.用户-购物车管 ...
- SSM柳州博物馆文创产品网上商城系统 计算机毕设源码14620
摘 要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,博物馆文创产品网上商城系统当然也不能排除在外.博物馆文创产品网上商城系统是以实际运 ...
- 基于php的网上商城系统报告,基于PHP的网上商城系统分析与设计
第一章绪论 1.1电子商务概述 电子商务是伴随着信息经济的高速发展而产生的一个较新的概念,是一种新型的商业运营模式.可以概括为电子商务Web服务器IT信息技术+企业业务.发展电子商务是不可阻挡的趋势, ...
- 基于javaweb的网上商城系统(java+jsp+servlert+mysql+ajax)
基于javaweb的网上商城系统(java+jsp+servlert+mysql+ajax) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myec ...
- Java项目:网上商城系统(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载! 一.项目简述功能 javaweb 网上商城系统,前台+后台管理,用户注册,登录,上哦展示,分组展示,搜索,收货地址管理,购物车管理,添加,购 ...
- web课程设计:网上商城系统
web课程设计:网上商城系统 项目详情: 课程设计:网上商城系统 2019.6-2019.7 1.1 选题目的及意义 网上购物系统构建初始目标主要是面对广大消费者,网上商店成本较低,而且运营简单方便, ...
- 【计算机毕业设计】123网上商城系统的设计与实现
一.系统截图(需要演示视频可以私聊) 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式.本网上商城系统就是在这样的大环境下 ...
- SSM全注解开发的网上商城系统
SL会员商城 1 需求分析 1.1需求陈述 1.2基于UML的需求分析 1.2.1参与者和参与者之间的关系 1.2.2用例与用例之间的关系.参与者与用例的关系 1.2.3用例图 1.2.4用例说明 1 ...
最新文章
- 工作失职的处理决定_工作失误处理决定
- 周报 2016.04.10
- 信息系统项目管理师-项目需求管理知识点
- kail Linux 安装Parallels Tools
- windows 环境下mysql的操作浅析
- Codeforces 985C (贪心)
- python response重头开始_你必须学写 Python 装饰器的五个理由
- 谷歌开源代码评审规范:好坏代码应该这样来判断
- 华硕笔记本电池软件_华硕灵耀X逍遥测评:11代酷睿处理器加持,王者归来
- 高中英语计算机辅助教学例子,计算机辅助教学在英语听力中的运用
- 本人为巨杉数据库(开源NoSQL)写的C#驱动,支持Linq,全部开源,已提交github
- 计算机中硬盘和移动硬盘的区别,固态硬盘与移动硬盘有哪些区别?
- Windows10系统以太网显示“未识别的网络”如何解决
- 思维导图:从Xmind到docsify博客
- linux环境下添加定时任务,linux下添加定时任务。
- 使用vite安装vue3.0(不是脚手架)
- 甘超波:NLP价值观
- Oracle:ADG基础知识学习一20230515
- 遗传算法入门(连载1-10)
- 【健康提示】吃鱼过多等于吃毒药