Window下搭建Tomcat+Nginx+Redis

Window下搭建Tomcat+Nginx+Redis

一、部署环境说明

1,  Win7、JDK1.7、Tomcat7(免安装版)、nginx-1.12.1、redis64-2.8.9

2,  Java依赖包:

Window下搭建Tomcat+Nginx+RedisWindow下搭建Tomcat+Nginx+Redis

这个彼此间版本需要匹配,这个可以根据不同版本做不同调整。

二、JDK部署

JDK安装,设置环境变量,我的电脑-属性-高级系统设置-高级-环境变量。

创建环境变量JAVA_HOME: D:\Program Files\Java\jdk1.7.0_80

创建环境变量CLASSPATH: %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

环境变量Path中增加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

三、Tomcat部署

1,  将Tomcat放在任意(没有中文路径)目录下,修改conf/server.xml的三个端口信息,如下:

Window下搭建Tomcat+Nginx+RedisWindow下搭建Tomcat+Nginx+Redis


三个端口要不一样而且没有被其他服务占用的端口即可。

2,  在webapps下创建了一个临时项目sso,sso下创建两个文件,一个index.jsp和clearSession.jsp,用于观察session的共享情况,代码如下:

3,  文件index.jsp内容:

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

</head>

<body>

<h1>这个是第1个页面</h1><br>

<%

         if (session.getAttribute("ss") == null) {

                   session.setAttribute("ss", "page1 session");

         }

         out.print("session ss is " + session.getAttribute("ss").toString()+"<br/>");

         out.print("session id is " + session.getId());

%>

</body>

</html>

4,  文件clearSession.jsp内容:

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

</head>

<body>

<h1>这个是第1个页面</h1><br>

<%

         if (session.getAttribute("ss") != null) {

                   session.removeAttribute("ss");

         }

%>

session is clear.

</body>

</html>

5,  运行该tomcat(双击bin下startup.bat),访问看是否正常。PS:如果运行tomcat遇到下列异常,是因为tomcat和操作系统一个32位一个64位不一致,暂时不用管。

Window下搭建Tomcat+Nginx+RedisWindow下搭建Tomcat+Nginx+Redis

6,  如果一起正常,将这个tomcat复制一份或者多份,我复制两份,共三个tomcat。

Window下搭建Tomcat+Nginx+RedisWindow下搭建Tomcat+Nginx+Redis

7,  将另外两个tomcat中的端口修改,我是改成8021|8020|8022和8031|8030|8032,同时将index.jsp下图标红处分别改成相应的2和3.

Window下搭建Tomcat+Nginx+RedisWindow下搭建Tomcat+Nginx+Redis

8,  三个tomcat都启动,分别确认三个页面访问正常,不同页面,不同sessionId。

Window下搭建Tomcat+Nginx+RedisWindow下搭建Tomcat+Nginx+Redis

四、Nginx部署

1,Window版Nginx的目录如下:

Window下搭建Tomcat+Nginx+Redis

Window下搭建Tomcat+Nginx+Redis

2,配置文件conf/nginx.conf,进行如下调整:

Window下搭建Tomcat+Nginx+RedisWindow下搭建Tomcat+Nginx+Redis

代码:

upstreamsso {

         server localhost:8010;

         server localhost:8020;

         server localhost:8030;

         }

 

location/sso {

        index index.jsp;

                  proxy_pass   http://sso;

        client_max_body_size 100m;

                   proxy_set_headerHost $http_host;

                   proxy_set_headerX-Real-IP $remote_addr;

                   proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;

        }

3,完成后双击“nginx.exe”,运行nginx,访问路径:127.0.0.1:800/sso会在三个tomcat下的页面之间调换,不同页面,不同sessionId。如下图所示。

Window下搭建Tomcat+Nginx+RedisWindow下搭建Tomcat+Nginx+Redis

五、Redis部署

1,Windows版Redis目录结构如下:

Window下搭建Tomcat+Nginx+RedisWindow下搭建Tomcat+Nginx+Redis

2,配置文件不做任何修改时,数据库是没有密码的,端口默认6379,运行redis-server.exe便启动数据库,出现下图就OK了。

Window下搭建Tomcat+Nginx+Redis

Window下搭建Tomcat+Nginx+Redis

六、Tomcat修改配置共享Session

1,找到Tomcat7下cong/context.xml文件,在</Context>结束前增加下列配置。

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />

<Manager className="com.radiadesign.catalina.session.RedisSessionManager"

                   host="127.0.0.1"

                   port="6379"

                   database="3"

                   maxInactiveInterval="60" />

2,将之前准备好的三个Java依赖包分别复制到三个Tomcat目录的lib下,否则Tomcat启动会报错的。

3,重启所有Tomcat,在访问800服务,就会发现sessionId始终是一个,session的内容共享了。

Window下搭建Tomcat+Nginx+Redis

Window下搭建Tomcat+Nginx+Redis