Nginx+Redis+Tomcat学习笔记二(实现session共享)

上篇说过Nginx的安装使用,继续如下:

首先,Redis安装

1、解压redis-64.3.0.503.zip;
2、进入解压后的目录,并在此页面打开cmd命令;
3、输入命令注册redis服务,redis-server –service-install redis.windows.conf,注意:其中redis.windows.conf为当目录下的配置文件。
(这里有坑,有的电脑运行这个命令会报打不开“–service-install”,可以把命令换成
redis-server.exe –service-install redis.windows.conf,我是这样的哦了的)
4、打开redis.windows.conf,知道到# requirepass foobared这句话,然后在换行加入requirepass ****,设置密码(****代表访问redis的密码,在tomcat配置中需要使用到)。
5、找到bind 127.0.0.1这行,并在前面加上#,表示注释该行。如果不注释,则表示只能本机访问redis。
6、右键我的电脑–管理–打开电脑服务,找到redis并启动,设置为自动启动。

然后,我们需要三个jar包,放入tomcat的lib目录下:

jar包
找不到资源的的可以加我Q:1716750380
继续,在tomat的conf文件夹下打开context.xml文件,在标签内部新增如下代码:

  <Valve className="com.javazhan.tomcat.redis.session.RedisSessionHandlerValve" />        
    <Manager className="com.javazhan.tomcat.redis.session.RedisSessionManager" 
      host="192.168.x.xxx"
      port="6379"
      password="xxxx"
      database="0"
      maxInactiveInterval="60" />

其中,host为redis服务器ip地址,port为6379固定值,password为在安装redis服务器时所设置的密码。
注意:Valve 不是 Value

安装完成后就可以实现session共享了,我们来测试一下:

我测试使用了两台服务器,A服务器和B服务器(与Nginx里upstream里链接的服务器对应);

A服务器的准备工作:

我们先在A上的tomcat里,webapps下面添加一个文件夹test,里面放一个a.jsp,内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>session_a</title>
</head>
<body>
  <%String s = session.getId(); //获取session ID号  %>
  <%=s %>
  <%
	session.setAttribute("sess", "session success"); 
  %>
</body>
</html>

然后Nginx里面upstream里链的都是ip+端口号的形式,这里处理一下tomcat:
在conf里的server.xml里,Host标签里添加

<Context path="" docBase="test" reloadable="true" />

这句代码我理解的是当访问的url访问test目录的时候,可以写成path="“引号里的名称,我们写为”"的话,相当于直接链到了test目录下,那么到底访问test目录下哪个html或者说jsp呢?
我们还需要一步,在web.xml的最后面添加配置:

   <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>a.jsp</welcome-file>//这个就是我们的目标jsp,所以我们把他加入默认访问
  </welcome-file-list>

准备工作都完成了,启动tomcat。
观察cmd,如果没有报错,先在浏览器上访问一下a.jsp

localhost:8080

如果出现了a.jsp页面没问题,启动你的Nginx(此时Redis服务也是启动的)
然后我们去B服务器;

B服务器的准备工作

和A服务器差不多
我们按照原来的步骤把Redis加到tomcat上(B就不需要安装Redis服务了)
然后配置好B服务器的tomcat
然后webapps—>test—>b.jsp,代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>session_b</title>
</head>
<body>
<%String s = session.getId(); //获取session ID号  %>
 <%=s %>
 <br/>
 <br/>
<%=(String)session.getAttribute("sess")%>
 
</body>
</html>

启动,观察,测试localhost:8080
没问题 :)
到redis的服务器上(我的redis服务放A上面了)
访问Nginx设置的域名,访问过a.jsp之后
访问b.jsp,如果b页面上出现了a往session里放的内容,
那么恭喜你,session共享成功了
参考:https://blog.csdn.net/clj198606061111/article/details/46051483

猜你喜欢

转载自blog.csdn.net/weixin_41266715/article/details/90044079