首页 > 代码库 > CentOS7 下 Nginx + Tomcat 实现 Session 共享

CentOS7 下 Nginx + Tomcat 实现 Session 共享

  在之情的文章中搭建的 centos7 + tomcat + nginx 的环境的基础上, 使用 redis 实现 tomcat 的 session 共享的问题。

一 : 安装 Redis

  安装 gcc:
  yum install -y gcc-c++

  使用 FTP 服务器上传安装包,解压上传的 redis 的包
  tar -zxvf redis-3.0.0.tar.gz

  进入解压目录 redis-3.0.0 执行
  make PREFIX=/usr/local/redis install

  把 redis-3.0.0 目录下的 redis.conf 文件 cp 到 /usr/local/redis 中

  启动 /usr/local/redis 目录下 执行
  ./bin/redis-server ./redis.conf

  修改 /usr/local/redis 目录下的 redis.conf
  daemonize no ----> 改成 yes 也就是后端启动


  关闭 /usr/local/redis 目录下 执行
  ./bin/redis-cli shutdown


二 : redis + tomcat 实现 session 共享

  首先,需要在 tomcat 的安装目录下的 lib 目录下添加以下三个 jar 包  (!!关于 jar 包, 可能会出现 jar 包冲突的问题, 参考 https://github.com/izerui/tomcat-redis-session-manager )
  commons-pool2-2.2.jar
  jedis-2.5.2.jar
  tomcat-redis-session-manager-2.0.0.jar

  技术分享

 

  然后修改在 tomcat 的安装目录下的 conf 目录里的 context.xml 文件
  在 <Context> 节点中, 添加以下内容:

1   <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
2   <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
3   host="192.168.191.2"
4   port="6379"
5   database="0"
6   maxInactiveInterval="60" />

  技术分享

 

  注意 注意 注意 : Valve 而不是 Value (被这个低级错误坑了一天了)

  关闭所有的 tomcat , nginx ,redis, 重启 redis (先开启 redis , 不然会报错), 重启 nginx 和 tomcat, 访问 tomcat 时就能看到 session 不变了

  技术分享

 

  最后是用 RedisDesktopManager 查看存入 redis 的 session 数据

  技术分享

  简单的一点总结: 在实现 session 共享的功能的时候在 context.xml 文件的配置中,由于把 Valve 看成 Value, 然后 tomcat 启动一直报错 fail to start component RedisSessionManager, 以为是 jar 包冲突的问题, 花了一天的时间发现 context.xml 文件的配置错了。以后配置服务器文件的时候一定要细心细心再细心, 被低级的错误困扰一天, 就当教训了,努力学习吧!

  

  

CentOS7 下 Nginx + Tomcat 实现 Session 共享