CentOS7 下 Nginx + Tomcat 实现 Session 共享
Posted DarkFuture
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 共享的主要内容,如果未能解决你的问题,请参考以下文章
nginx+tomcat实现负载均衡以及session共享(linux centos7环境)
centos7安装jdk+tomcat+nginx+mysql
Centos7下Nginx+Tomcat配置反向代理,使用memcached解决session一致性问题