Linux下搭建Tomcat+Nginx+Redis
一、部署环境说明
Linux CentOS6、Tomcat7免安装版、Redis-2.8.9.tar.gz、nginx-1.12.0.tar.gz
Redis下载路径:http://download.redis.io/releases/redis-2.8.9.tar.gz
Nginx下载路径:http://nginx.org/download/nginx-1.12.0.tar.gz
二、JDK部署
我应用的是免安装Linux64JDK,解压后需要将bin下文件chmod赋予权限;
之后,配置环境变量,保存退出后source生效,查看版本是否为你的。
# vi /etc/profile # 在unset i 前增加4行配置,如下。
exportJAVA_HOME=/datared/java/jdk1.7.0_25
exportJRE_HOME=$JAVA_HOME
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
三、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="" %> 这个是第1个页面<% if (session.getAttribute("ss") == null) { session.setAttribute("ss", "page1 session"); } out.print("session ss is " + session.getAttribute("ss").toString()+" out.print("session id is " + session.getId()); %> |
4, 文件clearSession.jsp内容:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %> 这个是第1个页面<% if (session.getAttribute("ss") != null) { session.removeAttribute("ss"); } %> session is clear. |
5, 运行该tomcat,执行bin下startup.sh,访问看是否正常。如果一起正常,将这个tomcat复制一份或者多份,我复制两份,共三个tomcat。
# cp –r ./apache-tomcat-7.0.42_1 ./apache-tomcat-7.0.42_2
# cp –r ./apache-tomcat-7.0.42_1 ./apache-tomcat-7.0.42_3
6, 将另外两个tomcat中的端口修改,我是改成8021|8020|8022和8031|8030|8032,同时将index.jsp下图标红处分别改成相应的2和3.
7, 三个tomcat都启动,分别确认三个页面访问正常,不同页面,不同sessionId。
四、Nginx部署
1, 下载并解压
# wget http://nginx.org/download/nginx-1.12.0.tar.gz#如果已存在就不用从网上获取
# tar-xzvf nginx-1.12.0
# cd nginx-1.12.0
2, 安装
# ./configure--user=www --group=www --prefix=/datared/nginx --with-http_stub_status_module--with-http_ssl_module --with-http_gzip_static_module
# make && make install
其中—prefix是安装目录,可以根据需求修改。
如果在检测环境时提示缺少包,那就需要提前yuminstall一下依赖的包了。
3, 目录,在刚安装完是没有*_temp文件夹的。
4, 配置反向代理,nginx下的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;
}
启动nginx,切换到sbin目录下(具体目录根据实际情况来):
# ./nginx-c /datared/nginx/conf/nginx.conf
# ps –aux| grep nginx #可以查看到进程
# lsof -i:800# 可以查看到端口占用情况
启动成功后,访问试试。访问时,会在三个tomcat下的页面之间调换,不同页面,不同sessionId。如下图所示。
五、Redis部署
1, 下载并解压
# wget http://download.redis.io/releases/redis-2.8.9.tar.gz# 如果已存在就不用从网上获取
# tar-xzvf redis-2.8.9.tar.gz
# cd redis-2.8.9
# make
# cd src
# make install
2, 转移redis编译后的文件到指定文件目录下,创建一个bin一个etc,将必要文件(redis.conf配置文件和bin需要的文件)进行拷贝。
# mkdir /datared/redis/bin
# mkdir /datared/redis/etc
# cp /datared/redis-2.8.9/redis.conf/datered/redis
# cd /datared/redis-2.8.9/src/
# cp mkreleasehdr.shredis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server/datared/redis/bin
3, 启动redis,进入到bin/redis-server中,执行下列命令启动:
#./redis-server /datared/redis/redis.conf
4, 退出后,发现redis也跟着退出了,解决如下:修改redis.conf文件daemonize由no改为yes,这样便可以在后台运行啦。
六、Tomcat修改配置共享Session
1, 找到Tomcat7下cong/context.xml文件,在结束前增加下列配置。
host="127.0.0.1" port="6379" database="3" maxInactiveInterval="60" /> |
2, 将之前准备好的三个Java依赖包分别复制到三个Tomcat目录的lib下,否则Tomcat启动会报错的。
3, 重启所有Tomcat,在访问800服务,就会发现sessionId始终是一个,session的内容共享了。