1. 程式人生 > >nginx+tomcat7+redis

nginx+tomcat7+redis

event 行修改 ado water yum安裝 ignore tty 技術 process

安裝jdk

安裝tomcat7

安裝nginx

安裝redis


tomcat-redis-session-manager項目目前只支持tomcat6和tomcat7


  • 使用gradle編譯

wget https://services.gradle.org/distributions/gradle-4.4.1-bin.zip

unzip gradle-4.4.1-bin.zip

然後將它的bin加到PATH環境變量就可以使用gradle命令了


  • 編譯tomcat-redis-session-manager

  • 修改tomcat-redis-session-manager中的代碼

https://github.com/jcoleman/tomcat-redis-session-manager

下載tomcat-redis-session-manager的zip文件

技術分享圖片

unzip tomcat-redis-session-manager-master.zip


  • 修改build.gradle文件

vim build.gradle

註釋掉47-49行,56-58行

47 //signing {

48 // sign configurations.archives

49 //}

56 // repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {

57 // authentication(userName: sonatypeUsername, password: sonatypePassword)

58 // }


構建

到tomcat-redis-session-manager-master目錄下

gradle build

#如果gradle沒有加到PATH環境變量中,就用絕對路徑

技術分享圖片

顯示BUILD SUCCESSFUL說明構建成功

build/libs/下可以找到構建的tomcat-redis-session-manager-master-2.0.0.jar包

/root/.gradle/caches/目錄下可以找到jedis-2.5.2.jar、commons-pool2-2.2.jar

技術分享圖片

將這三個包放到tomcat的libs目錄下



  • 設置nginx+tomcat的負載均衡

本次測試使用的一臺機器,運行了tomcat雙實例

服務端口主配置文件
nginx 80

/etc/nginx/conf.d/default.conf(yum安裝)

${NGINX_HOME}/conf/nginx.conf(二進制安裝)

tomcat18080/tomcat1/conf/server.xml/
tomcat28081/tomcat2/conf/server.xml/


  • 在tomcat中添加測試頁面(路徑自行修改)

tomcat1/tomcat1/webapps/ROOT/test.jsp
tomcat2 tomcat2


內容如下(out.println後面為輸出信息,請自行修改)

<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false"%>

SessionID:<%=session.getId()%><BR>

SessionIP:<%=request.getServerName()%> <BR>

SessionPort:<%=request.getServerPort()%>

<% out.println("This is Tomcat 1 !"); %>


啟動tomcat訪問測試

IP:PORT/test.jsp

技術分享圖片



  • 設置nginx負載均衡

這裏以yum安裝的nginx為例

vim /etc/nginx/conf.d/default.conf

#設置upstream

upstream tomcat_nginx {

server 192.168.233.111:8080;

server 192.168.233.111:8081;

}

server {

listen 80 default_server;

listen [::]:80 default_server;

server_name _;

root /usr/share/nginx/html;

# Load configuration files for the default server block.

include /etc/nginx/default.d/*.conf;

#修改location

location / {

proxy_pass http://tomcat_nginx;

# root html;

# index index.html index.htm;

}

error_page 404 /404.html;

location = /40x.html {

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

}


啟動nginx訪問測試

技術分享圖片


  • 修改tomcat的conf/context.xml實現將session存放在redis中

<Context>


<!-- Default set of monitored resources -->

<WatchedResource>WEB-INF/web.xml</WatchedResource>

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />

<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

host="127.0.0.1"

port="6379"

password="redhat"

database="0"

maxInactiveInterval="60"

/>


<!-- Uncomment this to disable session persistence across Tomcat restarts -->

<!--

<Manager pathname="" />

-->


<!-- Uncomment this to enable Comet connection tacking (provides events

on session expiration as well as webapp lifecycle) -->

<!--

<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />

-->


</Context>

host是主機,password是密碼,沒有就刪掉這行,post端口,註意Valve必須在Manager之前



啟動redis,重啟tomcat訪問測試

技術分享圖片

技術分享圖片


##### 註意:tomcat-redis-session-manager項目不支持tomcat8,作者沒弄,網上的都是在7的基礎上進行的修改,不知道會有什麽問題。

安裝網上的弄tomcat8+redis老是報錯,明天試試其他方法,試試memcache


nginx+tomcat7+redis