CGB2104-Day18
1. Nginx反向代理
1.1 代理分析
1.1.1 需求分析
前端服务器:
1.现在访问前端http://localhost:8080 访问前端项目 借助于tomcat服务器.但是在生产环境中前端项目都是静态资源文件.
2. 如果项目需要发布.则需要编译项目
后端项目: http://localhost:8091 负责为前端项目提供数据支持. 需要通过域名的方式访问后端服务器.
1.2 前端项目发布
1.2.1 修改请求路径
业务说明: 前后端需要通过域名的方式进行数据的交互.
后端网址: http://manage.jt.com
- 修改main.js:
- 修改AddItem.vue 修改文件上传的路径
- 检查前端网址是否正常
1.1.2 前端项目编译
说明: 前端项目发布 实质就是将脚手架中多余的解构进行优化,将有价值的信息打包压缩生成静态资源文件,被用户访问.
编译后的文件如图:
说明:程序在编译之后生成dist文件目录,其中包含了整合后太管理系统
1.1.3 前端项目发布
需求: 用户要求通过 http://web.jt.com的域名访问dist目录中的index.html文件.
- 复制dist目录到nginx根目录中 如图
- 编辑反向代理配置文件
#配置前端
server {
listen 80;
server_name web.jt.com;
location / {
root dist;
index index.html;
}
}
1.1.4 修改hosts文件
说明: 在hosts文件目录中 添加前后端域名控制.
127.0.0.1 localhost
::1 localhost
#图片服务器域名
127.0.0.1 image.jt.com
#前端域名地址
127.0.0.1 web.jt.com
#后端域名地址
127.0.0.1 manage.jt.com
1.1.5 前端效果展现
1.2 后端项目发布
1.2.1 业务需求
要求: 用户通过 http://manage.jt.com 访问http://localhost:8091服务器.
1.2.2 编辑nginx配置
#配置后端服务器.
server {
listen 80;
server_name manage.jt.com;
location / {
#代理的是一个请求网址
proxy_pass http://localhost:8091;
}
}
1.2.3 后端域名测试
通过域名: http://manage.jt.com/rights/getRightsList 是否正常.
1.2.4 前后端测试
通过前端域名访问.检查前后端是否正常.
1.3 项目部署流程图
1.4 集群部署准备
1.4.1 集群概念
说明: 由多台服务器组成的一个物理结构. 这些服务器可以提供相同的服务. 把这样的结构称之为集群
1.4.2 动态获取端口号
说明: 在集群中有多台tomcat服务器,用户每次访问都会只访问其中1台. 应该如何选择.这时应该采用负载均衡算法. 所以编辑如下方式动态获取端口号.验证负载均衡算法实用性.
@RestController
@CrossOrigin
public class PortController {
@Value("${server.port}")
private Integer port;
/**
* 动态获取端口号
*/
@GetMapping("/getPort")
public String getPort(){
return "动态获取端口号:"+port;
}
}
1.4.3 后端项目发布准备
说明: 一般开发完成之后,需要将项目打成 xxx.jar/xxx.war(java/html)
策略: 分别将项目打包 端口号分别为 8091/8092
打包方式: 利用maven工具的 install指令.
打包结果: 准备2个jar包文件
1.4.4 项目发布
JDK检查:
java中如果要运行xxxx.jar的文件
命令: java -jar xxxxx.jar
1.4.5 项目调试
分别启动8091/8092 测试项目发布是否正常
1.5 Nginx实现集群负载均衡
1.5.1 需求说明
要求用户通过http://manage.jt.com 访问8091/8092服务器. 并且实现负载均衡的效果.
1.5.1 轮询机制
规则说明: 根据配置文件的顺序依次访问.
#准备集群
#负载均衡策略: 1.轮询机制
upstream tomcats {
server 127.0.0.1:8091;
server 127.0.0.1:8092;
}
#配置后端服务器.
server {
listen 80;
server_name manage.jt.com;
location / {
#代理的是一个请求网址
#proxy_pass http://localhost:8091;
proxy_pass http://tomcats;
}
}
1.5.2 权重机制
关键字: weight= 阿拉伯数字
用法: 根据服务器性能实现动态的分配.
1.5.3 IPHASH策略
规则: 如果需要用户与服务器进行绑定 则采用IPHASH方式.
1.5.4 IPHash算法
要素: IP地址 端口号
算法: hash(ip:端口)%2 余数 0或者1
1.6 nginx实现tomcat高可用
1.6.1 高可用(HA)说明
如果发现服务器宕机,则程序可以自动化的实现故障的迁移.无需人为干预.
1.6.2 Nginx策略
根据配置文件的顺序,依次访问服务器.如果访问的服务器超时,则自动的切换下一台服务器.
弊端: 如果宕机的服务器不做配置,则会频繁的访问故障机. 默认规则
1.6.3 Nginx常用属性
- down属性 如果该属性标识服务器,则nginx永远不会访问该设备.
- backup属性 设定备用机 正常情况下 该设备不提供服务. 如果其他的设备宕机/遇忙时 才会访问备用机
1.6.4 项目如何在线部署
需求: 在不影响用户使用的条件下 如何将项目升级!!!
步骤:
1. 将需要升级的服务器 在nginx中标识为down属性.
2. 重启nginx服务器
3. 将新的jar包文件部署到服务器中.
4. 进行软件调试. 如果测试无误.修改nginx down属性进行切换.
1.6.5 Nginx 高可用实现方案
说明: 如果服务器宕机 通过down属性进行标识,则需要人为的干预,这样的方式效率低. 最好的方式由程序自动完成.
属性说明:
1. max_fails=1 设定访问失败的最大次数
2. fail_timeout=60s; 设定失败的超时时间,在超时时间范围内不会再次访问故障机.
#准备集群
#负载均衡策略: 1.轮询机制 2.权重方式 3.IPHASH
upstream tomcats {
#ip_hash;
server 127.0.0.1:8091 max_fails=1 fail_timeout=60s;
server 127.0.0.1:8092 max_fails=1 fail_timeout=60s;
}
2. 远程链接工具
- 下载工具
2).新建用户 新建之后需要输入密码防止丢失.
- 动态链接
- 远程链接效果
3. SpringBoot加载机制
3.1 开箱即用
SpringBoot官网已经将主流的框架进行整合.用户使用时无需多余的配置 拿来就用.既开箱即用
3.2 pom.xml文件
SpringBoot 中pom.xml文件 只是添加了jar包文件的依赖. 存储到项目中,需要被其他程序调用才能生效.
SpringBoot中常见启动项(依赖):
1.spring-boot-starter-web
2.spring-boot-starter-text
3.spring-boot-starter-jdbc
4.spring-boot-starter-aop
3.3 @SpringBootApplication注解说明
说明: SpringBoot程序启动的实质 注解开始工作.
3.3.1 注解的结构
- 元注解 标识注解的注解
- 配置类
- 自动配置
- 包扫描机制
3.3.2 启动项执行过程
3.3.3 SpringBoot主启动类加载过程
更多推荐
所有评论(0)