当前位置: 首页 > news >正文

day41-动静分离

1.每日复盘与今日内容

1.1复盘

  • 部署、安装、配置tomcat(systemctl)
  • Tomcat主配置文件
  • 部署静态页
  • 部署zrlog🍟🍟🍟🍟🍟
  • 接入负载均衡
  • 挂载到NFS

1.2今日内容

  • Tomcat会话保持
  • java运行jar包、nginx前端页面
  • nginx动静分离实践🍟🍟🍟🍟🍟
  • pc端和移动端分离🍟🍟🍟🍟🍟

2.Tomcat部署证书(了解)

详情见:

在Tomcat服务器安装SSL证书(Linux)_数字证书管理服务(原SSL证书)(SSL Certificate)-阿里云帮助中心

3.Tomcat会话保持(一般不用自带的)

第一步:配置web01-tomcat实现获取当前的session id

第二步:配置web02-tomcat实现获取当前的session id

第三步:接入负载均衡,浏览器访问session会一直跳

第四步:部署redis

第五步:将会话写入到redis、负载测试

#第一步: 配置web01
[root@web01 ~]#  cd /soft/tomcat/conf/
[root@web01 conf]# vim server.xml
...<Host name="session.oldboy.com"  appBase="/session/"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="session" suffix=".log"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host>
...[root@web01 conf]# systemctl restart tomcat
[root@web01 conf]# netstat -tnulp
tcp6       0      0 :::8080                 :::*                    LISTEN      22140/java     [root@web01 conf]# mkdir /session/ROOT
[root@web01 conf]# cat /session/ROOT/index.jsp
<body><%//HttpSession session = request.getSession(true);System.out.println(session.getCreationTime());out.println("<br> web01 SESSION ID:" + session.getId() + "<br>");out.println("Session created time is :" + session.getCreationTime()+ "<br>");%>
</body>windows修改
10.0.0.7 session.oldboy.com浏览器测试访问

#WEB02配置获取session id 页面
[root@web02 ~]# cd /soft/tomcat/conf/
[root@web02 conf]# vim server.xml
...<Host name="session.oldboy.com"  appBase="/session/"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="session" suffix=".log"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host>
...
[root@web02 conf]# systemctl restart tomcat
[root@web02 conf]# mkdir /session/ROOT
[root@web02 conf]# cat /session/ROOT/index.jsp 
<body><%//HttpSession session = request.getSession(true);System.out.println(session.getCreationTime());out.println("<br> WEB2 SESSION ID:" + session.getId() + "<br>");out.println("Session created time is :" + session.getCreationTime()+ "<br>");%>
</body>浏览器访问测试
10.0.0.8 session.oldboy.com

负载均衡配置
[root@lb01 conf.d]# cat se.conf
upstream se {server 172.16.1.7:8080;server 172.16.1.8:8080;
}
server {listen 80;server_name session.oldboy.com;location / {proxy_pass http://se;proxy_set_header Host $http_host;}
}
[root@lb01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@lb01 conf.d]# systemctl restart nginx浏览器访问测试
10.0.0.5 session.oldboy.com刷新浏览器每次session id都会变化。#部署Redis
10.0.0.51
yum -y install redis
[root@db01 ~]# grep 172.16.1.51 /etc/redis.conf
..
bind 127.0.0.1 172.16.1.51
requirepass 123456 
...systemctl start redis#上传redis插件
下载github: wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/4.0/tomcat-cluster-redis-session-manager.zip#上传zip包
[root@web01 ~]# ll
total 900
-rw-r--r-- 1 root root 921429 Aug 25 09:26 tomcat-cluster-redis-session-manager.zip
1.#解压
[root@web01 ~]# unzip tomcat-cluster-redis-session-manager.zip#配置插件修改默认的会话写入到redis
2.拷贝jars到tomcat的/lib目录中
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/3.拷贝conf下的redis.properties文件,到tomcat的conf文件
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/4.将配置文件中连接redis地址修改为如下地址即可
[root@web01 ~]# vim /soft/tomcat/conf/redis-data-cache.properties
redis.hosts=172.16.1.51:6379
redis.password=1234565.添加如下两行至tomcat/conf/context.xml  (添加在</Context> 上一行 )
[root@web01 ~]# vim /soft/tomcat/conf/context.xml
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />#同步给WEB02
[root@web01 ~]# scp -r /soft/tomcat/ 10.0.0.8:/soft/
注意: 修改完一台直接和另外一台进行无差异同步rsync --delete
修改完成后重启Tomcat
systemctl restart tomcat#浏览器测试访问 session.oldboy.com  session不会发生变化

  • 刷新一下

配置完redis后,发现session不会发生变化

4.java运行jar包

java代码编译后:

war包: 基于Tomcat运行

jar包: 部署运行环境JDK 命令行运行jar包 内嵌了轻量的tomcat

#第一步,部署运行环境JDK
[root@web02 ~]# rpm -qa |grep jdk
jdk1.8-1.8.0_181-fcs.x86_64#第二步,下载代码(jar包)
#通过页面管理nginx的项目
https://gitee.com/cym1102/nginxWebUI/  #创建存放jar包的目录
[root@web02 ~]# mkdir /home/nginxWebUI/
#下载jar包
[root@web02 ~]# wget -O /home/nginxWebUI/nginxWebUI.jar https://gitee.com/cym1102/nginxWebUI/releases/download/4.1.9/nginxWebUI-4.1.9.jar#关闭tomcat
systemctl stop tomcat#运行jar包
[root@web02 ~]# nohup java -jar -Dfile.encoding=UTF-8 /home/nginxWebUI/nginxWebUI.jar --server.port=8080 --project.home=/home/nginxWebUI/ > /dev/null &#输入用户名密码
用户名:admin
密码:Lidao996#企业如果连接数据、需要添加数据库的启动参数
nohup java -jar -Dfile.encoding=UTF-8 /home/nginxWebUI/nginxWebUI.jar --server.port=8080 --project.home=/home/nginxWebUI/  --spring.datasource.url=172.16.1.51  --spring.datasource.username=root --spring.datasource.password=pass> /dev/null &#最后将启动方式写入脚本
[root@web02 ~]# cat start_nginx_ui.sh 
nohup java -jar -Dfile.encoding=UTF-8 /home/nginxWebUI/nginxWebUI.jar --server.port=8080 --project.home=/home/nginxWebUI/ &>/dev/null &
[root@web02 ~]# cat stop_web_ui.sh 
ps axu|grep jar|grep -v grep|awk '{print $2}'|xargs kill -9

5.动静分离实践

  • 单台
#第一步: 保证web01的tomcat正常访问的#第二步: 接入负载均衡、通过负载均衡访问web01的tomcat
[root@lb01 conf.d]# cat tom.conf 
upstream toms {server 172.16.1.7:8080;
}
server {listen 80;server_name www.tom.com;location / {proxy_pass http://toms;proxy_set_header Host $http_host;}location ~ \.(png|svg|avi|jpeg)$ {root /code/image;}}[root@lb01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@lb01 conf.d]# systemctl restart nginxwindows解析
10.0.0.5  www.tom.com

#负载均衡创建图片目录
[root@lb01 conf.d]# mkdir /code/image -p
#将tomcat下的静态资源拷贝到/code/image
[root@lb01 conf.d]# cd /code/image/
[root@lb01 image]# scp 10.0.0.7:/soft/tomcat/webapps/ROOT/* .
#删除其他的资源 只留下静态资源
[root@lb01 image]# rm -rf favicon.ico index.jsp RELEASE-NOTES.txt tomcat.css
[root@lb01 image]# ll
total 112
-rw-r----- 1 root root 27235 Aug 25 11:20 asf-logo-wide.svg
-rw-r----- 1 root root   713 Aug 25 11:20 bg-button.png
-rw-r----- 1 root root  1918 Aug 25 11:20 bg-middle.png
-rw-r----- 1 root root  1401 Aug 25 11:20 bg-nav.png
-rw-r----- 1 root root  3103 Aug 25 11:20 bg-upper.png
-rw-r----- 1 root root 67795 Aug 25 11:20 tomcat.svg#修改静态资源的属主属组
[root@lb01 conf.d]# chown -R nginx.nginx /code/image/ #此时是51上的nginx用户
[root@lb01 conf.d]# ll /code/image/
total 112
-rw-r----- 1 nginx nginx 27235 Aug 25 11:20 asf-logo-wide.svg
-rw-r----- 1 nginx nginx   713 Aug 25 11:20 bg-button.png
-rw-r----- 1 nginx nginx  1918 Aug 25 11:20 bg-middle.png
-rw-r----- 1 nginx nginx  1401 Aug 25 11:20 bg-nav.png
-rw-r----- 1 nginx nginx  3103 Aug 25 11:20 bg-upper.png
-rw-r----- 1 nginx nginx 67795 Aug 25 11:20 tomcat.svg
  • 多台

#WEB01创建静态页面
[root@web01 conf.d]# cat s.conf
server {listen 80;server_name www.tom.com;location / {root /code;index index.html;}
}
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 conf.d]# systemctl restart nginx
[root@web01 conf.d]# ll /code/
31.png                      index.html                  test/                       zh/
admin/                      info.php                    tt/                         zrlog/
dia/                        mysql.php                   wordpress/                  
diy/                        she/                        wordpress-6.0-zh_CN.tar.gz  
[root@web01 conf.d]# ll /code/1.jpg
-rw-r--r-- 1 root root 296356 Aug 13 10:51 /code/1.jpg#windows解析测试
10.0.0.7 www.tom.com

#web02部署动态随机数页面
[root@web02 conf]# cat server.xml
...<Host name="www.tom.com"  appBase="/session/"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="session" suffix=".log"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host>
...
[root@web02 session]# cd
[root@web02 ~]# cd /session/ROOT/
[root@web02 ROOT]# ll
total 4
-rw-r--r-- 1 root root 290 Aug 25 09:16 index.jsp
[root@web02 ROOT]# vim index.jsp   # 原来的内容删除、粘贴下面的内容
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<HTML><HEAD><TITLE>oldboy JSP Page</TITLE></HEAD><BODY><%Random rand = new Random();out.println("<h1>oldboy随机数:<h1>");out.println(rand.nextInt(99)+100);%></BODY>
</HTML>[root@web02 ROOT]# 
[root@web02 ROOT]# systemctl restart tomcat#windows解析测试
10.0.0.8 www.tom.com#别忘记开启51

#负载均衡集成后端的静态和动态资源
修改nginx配置文件
[root@lb01 conf.d]# cat tom.conf
upstream static {server 172.16.1.7:80;
}
upstream java {server 172.16.1.8:8080;
}
server {listen 80;server_name www.tom.com;root /code;index index.html;location ~* \.(jpg|png|gif)$ {proxy_pass http://static;proxy_set_header Host $http_host;}location ~ \.jsp {proxy_pass http://java;proxy_set_header Host $http_host;}}
[root@lb01 conf.d]# systemctl restart nginx[root@lb01 conf.d]# cat /code/index.html 
<html lang="en"><head><meta charset="UTF-8" /><title>测试ajax和跨域访问</title><script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script></head><script type="text/javascript">$(document).ready(function(){$.ajax({type: "GET",url: "http://www.tom.com/index.jsp",success: function(data){$("#get_data").html(data)},error: function() {alert("哎呦喂,失败了,回去检查你服务去~");}});});</script><body><h1>测试动静分离</h1><img src="http://www.tom.com/1.jpg"><div id="get_data"></div></body>
</html>windows解析测试
10.0.0.5 www.tom.com

停掉web01--nginx

systemctl stop nginx.service

开启web01,关闭web02--tomcat

6.PC端和移动端分离

Nginx通过负载均衡实现手机与PC调度至不通的后端节点应用案例系统版本 主机角色	  外网IP	  内网IP	      提供端口
kylin	负载均衡	10.0.0.5  172.16.1.5	80
kylin	提供Android页面		  172.16.1.7	9090
kylin	提供Iphone页面		  172.16.1.7	9091
kylin	提供pc页面		      172.16.1.7	9092
#WEB01配置静态资源
[root@web01 conf.d]# cat s.conf
charset utf-8,gbk;
server {listen 9090;server_name m.oldboy.com;location / {root /code/9090;index index.html;}
}
server {listen 9091;server_name m.oldboy.com;location / {root /code/9091;index index.html;}
}
server {listen 9092;server_name m.oldboy.com;location / {root /code/9092;index index.html;}
}[root@web01 conf.d]# mkdir /code/9090
[root@web01 conf.d]# mkdir /code/9091
[root@web01 conf.d]# mkdir /code/9092[root@web01 conf.d]# echo 提供Android页面 > /code/9090/index.html
[root@web01 conf.d]# echo 提供Iphone页面 > /code/9091/index.html
[root@web01 conf.d]# echo 提供pc页面 > /code/9092/index.html[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 conf.d]# systemctl restart nginxwindows解析
10.0.0.7 m.oldboy.com

#负载均衡配置
[root@lb01 conf.d]# cat m.conf 
upstream android {server 172.16.1.7:9090;
}upstream iphone {server 172.16.1.7:9091;
}upstream pc {server 172.16.1.7:9092;
}server {listen 80;server_name m.oldboy.com;charset 'utf-8';location / {#如果客户端来源是Android则跳转到Android的资源;if ($http_user_agent ~* "Android") {proxy_pass http://android;}#如果客户端来源是Iphone则跳转到Iphone的资源;if ($http_user_agent ~* "Iphone") {proxy_pass http://iphone;}#如果客户端是IE浏览器则返回403错误;if ($http_user_agent ~* "MSIE") {return 403;}#默认跳转pc资源;proxy_pass http://pc;}
}[root@lb01 conf.d]# systemctl restart nginxwindows解析到10.0.0.5
10.0.0.5 m.oldboy.com

点击F12,点击此可以切换设备访问

7.今日总结

  • Tomcat会话保持
  • java运行jar包、nginx前端页面
  • nginx动静分离实践🍟🍟🍟🍟🍟
  • pc端和移动端分离🍟🍟🍟🍟🍟

http://www.dtcms.com/a/352377.html

相关文章:

  • 数字时代下的智能信息传播引擎
  • 仿真干货|解析Abaqus AMD的兼容与并行效率问题
  • 基于硅基流动API构建智能聊天应用的完整指南
  • 使用QML的Rectangle组件的边框属性
  • `stat` 系统调用详解
  • 学习碎片02
  • Firefox Relay 体验
  • Redis支持事务吗?了解Redis的持久化机制吗?
  • 面试八股文之——Java集合
  • 115、【OS】【Nuttx】【周边】效果呈现方案解析:重定向命令
  • Python编程快速上手—让繁琐工作自动化
  • 论文阅读-CompletionFormer
  • (我与爬虫的较量)码上爬第5题
  • JDK 8 → JDK 17 升级说明书(面向 Spring Boot / Spring Cloud / Spring )
  • Filter过滤器入门
  • android 事件处理源码
  • 当 AI 走进日常:除了聊天机器人,这些 “隐形应用” 正在改变我们的生活
  • 报告:2025机器人技术产业化研究|附130+份报告PDF、数据仪表盘汇总下载
  • 直播到AI助教:在线教育系统源码如何重塑知识付费平台生态?
  • 算法练习——26.删除有序数组中的重复项(golang)
  • 电影感氛围人像风光摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 抖音多账号管理平台哪家比较好?
  • 力扣 30 天 JavaScript 挑战 第40天 (第十一题)对纯函数和记忆函数有了更深理解
  • ABC420A-E题解
  • Zynq开发实践(FPGA之verilog仿真)
  • leetcode算法刷题的第十八天
  • 【世纪龙科技】职业院校汽车专业职业体验中心建设方案
  • 面试题随笔
  • 微服务-25.网关登录校验-网关传递用户到微服务
  • 微服务的编程测评系统16-用户答题