nginx tomcat应用平台下使用redis解决session问题

2016-01-2623:26:20nginx tomcat应用平台下使用redis解决session问题已关闭评论 969

系统环境:CentOS release 6.4 

软件版本

redis-2.8.24.tar.gz

tengine-1.4.6

 tomcat-7.0.54

 tomcat-redis-session-manager-3.0.0.jar

 commons-pool2-2.2.jar

 jedis-2.7.1.jar

nginx 192.168.200.100:80
tomcat1 192.168.200.100:8080
tomcat2 192.168.200.100:9090
redis 192.168.200.250:6369

说明:本文只是为了测试多台tomcat共享session,建立了两台机器,nginx和tomcat一台机器,redis一台机器。

如果tomcat放置在不同的机器可以使用相同的端口

1.安装redis数据库

解压

tar -zxf redis-2.8.24.tar.gz

cd redis-2.8.24

make 

创建redis主目录,执行文件目录,日志目录,数据存放目录

mkdir /usr/local/redis
mkdir /usr/local/redis/bin
mkdir /usr/local/redis/log

mkdir /usr/local/redis/data/6369

拷贝文件

cp redis-server /usr/local/redis/bin/
cp redis-cli /usr/local/redis/bin/
cp redis.conf /usr/local/redis/6369.conf

vim 6369.conf

daemonize yes

pidfile /var/run/redis-6369.pid

port 6369

logfile "/usr/local/redis/log/redis-6369.log"

dir ./data/6369

wq!

设置可以直接使用命令方法

cp bin/redis-server /usr/local/bin

cp bin/redis-cli /usr/local/bin

启动服务

redis-server 6369.conf

连接数据库

redis-cli -p 6369

redis安装配置完毕

接下来是nginx和tomcat

1.nginx和tomcat安装过程不再赘述

nginx安装步骤http://www.ulshang.com/service/2016/01/296.html

tomcat 安装步骤http://www.ulshang.com/service/2016/01/298.html

2.nginx配置nginx.conf

添加

upstream site {  
    server 192.168.200.100:8080;
    server 192.168.200.100:9090;

server
{
        listen       80;

        server_name  192.168.200.100;
        index    index.jsp index.html index.htm;
        error_log   /data/logs/error/error.log crit;
        access_log  /data/logs/access/access.log  access;

        location ~ \.jsp$ {

                proxy_pass http://site;
                proxy_redirect off;
                proxy_set_header HOST $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }
}

3.tomcat配置

tomcat安装目录

conf/context.xml

添加以下配置

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
      <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
           host="192.168.200.250"
           port="6369"
           database="0"
           maxInactiveInterval="60" />
confi/server.xml

定义网站程序的目录

<Host name="localhost"  appBase="/data/web"  unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/data/web" />

4.拷贝文件到lib

commons-pool2-2.2.jar
jedis-2.7.1.jar
tomcat-redis-session-manager-3.0.0.jar

5.复制一份tomcat为第二个tomcat

cp -r tomcat tomcat2

修改conf/server.xml文件

<Host name="localhost"  appBase="/data/home"  unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/data/home" />

把文件中的8005改成8006端口,8080端口改成9090,否则会出现端口冲突

6.创建数据存放目录

mkdir -p /data/{web,home}

在web中新建index.jsp页面

vim index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>session</title>
</head>
<body>

tomcat1 //tomcat1和tomcat2区别
  <%String s = session.getId(); //获取session ID号  %>
  <%=s %>
  <%
    session.setAttribute("test", "test123");
  %>
</body>
</html>

home中新建index.jsp

vim index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>session</title>
</head>
<body>

tomcat2
  <%String s = session.getId(); //获取session ID号  %>
  <%=s %>
</body>
</html>

7.启动nginx和tomcat服务

进入到tomcat主目录

./bin/startup.sh

直接使用nginx可以启用nginx服务

8.测试

浏览器输入http://192.168.200.100/index.jsp

正常情况会出现tomcat1 和一串字符串(就是session)

刷新浏览器,tomcat1和tomcat2交替出现,但是session值不变

9.在redis服务器查看session

redis-cli -p 6369

127.0.0.1:6369>keys *

完毕