Window下搭建Tomcat+Nginx+Redis
Window下搭建Tomcat+Nginx+Redis
一、部署环境说明
1, Win7、JDK1.7、Tomcat7(免安装版)、nginx-1.12.1、redis64-2.8.9
2, Java依赖包:
这个彼此间版本需要匹配,这个可以根据不同版本做不同调整。
二、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的三个端口信息,如下:
三个端口要不一样而且没有被其他服务占用的端口即可。
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位不一致,暂时不用管。
6, 如果一起正常,将这个tomcat复制一份或者多份,我复制两份,共三个tomcat。
7, 将另外两个tomcat中的端口修改,我是改成8021|8020|8022和8031|8030|8032,同时将index.jsp下图标红处分别改成相应的2和3.
8, 三个tomcat都启动,分别确认三个页面访问正常,不同页面,不同sessionId。
四、Nginx部署
1,Window版Nginx的目录如下:
2,配置文件conf/nginx.conf,进行如下调整:
代码:
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。如下图所示。
五、Redis部署
1,Windows版Redis目录结构如下:
2,配置文件不做任何修改时,数据库是没有密码的,端口默认6379,运行redis-server.exe便启动数据库,出现下图就OK了。
六、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的内容共享了。