SpringBoot运维篇

工程打包与运行

windows系统

        直接使用maven对项目进行打包

        jar支持命令行启动需要依赖maven插件支持,打包时须确认是否具有SpringBoot对应的maven插件

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins>
</build>>

        直接在cmd窗口中运行

java -jar StudySpringBoot-0.0.1-SNAPSHOT.jar

        若没有该插件jar包不能直接在Java中运行,直接运行会报错“没有主清单属性”

        使用插件与不使用插件的jar包的描述文件不同(MANIFEST.MF)

Windonws端口被占用解决办法(指令在cmd中运行)

        查询端口

netstat -ano

        查询指定端口

netstat -ano | findstr "端口号"

        根据进程PID查询进程名称

tasklist | findstr "进程PID号"

        根据PID杀死任务(-f表示强制杀死)

taskkill /f /pid "进程PID号"

        根据进程名称杀死任务(-f表示强制杀死)

taskkill -f -t -im "进程名称"

 Liunx系统

        基于Linux(CenterOS7)

        安装JDK,且版本不低于打包时使用的JDK版本

        安装包保存在/usr/local/自定义目录中或$HOME下

        其他操作参照Windows版进行

配置高级

临时属性设置

临时属性设置

        在启动项目时可以用临时属性

java -jar StudySpringBoot-0.0.1-SNAPSHOT.jar --server.port=80

        还可以同时设置多个临时属性

java -jar StudySpringBoot-0.0.1-SNAPSHOT.jar --server.port=80 --logging.level.root=debug

         属性加载优先顺序

                参看springboot官方文档(序号越大,优先级越高)

        临时属性必须是当前boot工程支持的属性,否则设置无效

idea中测试临时属性是否能用 

         在上图所示的地方添加临时属性即可,若无该内容需要勾选图中Modlfy options中的Overrid configuration properties 即可。(idea版本不同可能会有些差异)

        临时参数是通过application中传入的参数改变程序运行时的参数的

@SpringBootApplication
public class Application {//引导类public static void main(String[] args) {// 临时传参以字符的形式存入到了args中// 若下列代码中不传入args参数则临时传参失效SpringApplication.run(Application.class, args);  }}

配置文件分类

SpringBoot中4级配置文件:

        1级: file :config/application.yml 【最高】

        2级: file :application.yml

        3级:classpath:config/application.yml

        4级:classpath:application.yml 【最低】

        1级配置文件需要在jar包所在的文件夹里新建一个名为config的文件夹,将配置文件放到该文件夹里,3级配置文件需要在项目里的resources文件夹里新建一个名为config的文件夹,将配置文件放到该文件夹里。

作用:

        1级与2级留做系统打包后设置通用属性,1级常用于运维经理进行线上整体项目部署案调控

        3级与4级用于系统开发阶段设置通用属性,3级常用于项目经理进行整体项目属性调控

自定义配置文件

        通过启动参数加载配置文件(无需书写配置文件扩展名,且propertiesyml文件格式均支持)

        通过启动参数加载指定文件路径下的配置文件时可以加载多个配置,中间用逗号分开

重要说明:

        单服务器项目:使用自定义配置文件需求较低

        多服务器项目:使用自定义配置文件需求较高,将所有配置放置在一个目录中,统一管理

        基于SpringCloud技术,所有的服务器将不再设置配置文件,而是通过配置中心进行设定,动态加载配置信息

多环境开发

多环境开发(YAML版)

        yaml格式中不同环境之间使用---分开

        使用profiles来设置环境名称,使用active来设置运行的环境

        主配置文件中设置公共配置(全局),环境分类配置文件中常用于设置冲突属性(局部)

# 公共配置
spring:profiles:active: pro
---
# 设置环境
# 生产环境
spring:profiles: pro
server:port: 80
---
# 开发环境
spring:profiles: dev
server:port: 81
---
# 测试环境
spring:profiles: test
server:port: 82

        直接使用spring的profiles这种格式已过时,下列格式是推荐格式

spring:config:activate:on-profile: pro

也可以将每一个环境分开写(环境名称写在application后用-连接)

        主启动配置文件application.yml

spring:profiles:active: dev

        环境分类配置文件application-pro.yml

server:port: 80

        环境分类配置文件application-dev.yml

server:port: 81

        环境分类配置文件application-test.yml

server:port: 82

多环境开发(Properties版)

        与yaml版的很相似,但在Properties文件中不同的环境不能写在同一个文件中

        主启动配置文件application.properties:

spring.profiles.active=pro

        环境分类配置文件application-pro.properties:

server.port=80

        环境分类配置文件application-dev.properties:

server.port=81

        环境分类配置文件application-test.properties:

server.port=82

多环境开发独立配置文件书写技巧:

        根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下

application-devDB.yml
application-devRedis.yml
application-devMVC.yml

        使用include属性可以在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔

spring:profiles:active: devinclude: devDB,devRedis,devMVC

        当主环境dev与其他环境有相同属性时,主环境属性生效;其他环境中有相同属性时,最后加载的环境属性生效 

        include在用的时候有一些不便之处,从Spring2.4版开始可以使用group属性替代include属性,降低了配置书写量

         使用group属性定义多种主环境与子环境的包含关系:
spring:profiles:active: devgroup:"dev": devDB,devRedis,devMVC"pro": proDB,proRedis,proMVC"test": testDB,testRedis,testMVC
        多环境开发使用group 属性设置配置文件分组,便于线上维护管理

多环境开发控制

        Maven与SpringBoot多环境兼容。当Maven与SpringBoot同时对多环境进行控制时,以Maven为主。SpringBoot使用@..@占位符读取Maven对应的配置属性值

Maven中设置多环境属性:
<profiles><profile><id>dev_env</id><properties><profile.active>dev</profile.active><!--profile.active只是一个名称--></properties><activation><activeByDefault>true</activeByDefault><!--上列值为true表示使用该环境,若不设置为true默认为false即不会加载--></activation></profile><profile><id>pro_env</id><properties><profile.active>pro</profile.active></properties></profile><profile><id>test_env</id><properties><profile.active>test</profile.active></properties></profile>
</profiles>
        SpringBoot中引用 Maven 属性:
spring:profiles:active: @profile.active@

        每次更改环境后都要重新打包才能生效。若使用idea直接运行时pom.xml每次更新需要手动compile才可生效

日志

日志基础

日志(log)作用:

        编程期调试代码

        运营期记录信息

                记录日常运营重要信息(峰值流量、平均响应时长……)

                记录应用报错信息(错误堆栈)

                记录运维过程数据(扩容、宕机、报警……)

        添加日志记录操作:

@RestController
@RequestMapping("/hero")
public class HeroController {private static final Logger log = LoggerFactory.getLogger(HeroController.class);@RequestMapping("/test")public String test() {System.out.println("springboot is running...");log.debug("debug ...");log.info("info ...");log.warn("warn ...");log.error("error ...");return "springboot is running...";}
}

        日志级别:

TRACE:运行堆栈信息,使用率低
DEBUG:程序员调试代码使用
INFO:记录运维过程数据
WARN:记录运维过程报警数据
ERROR:记录错误堆栈信息
FATAL:灾难信息,合并计入ERROR

        设置日志输出级别:

# 开启debug模式,输出调试信息,常用于检查系统运行状况
debug: true
# 设置日志级别,root表示根节点,即整体应用日志级别
logging:level:root: debug

        设置日志组,控制指定包对应的日志输出级别,也可以直接控制指定包对应的日志输出级别

logging:# 设置日志组group:# 自定义组名,设置当前组中所包含的包bank: com.glaty.studyspringboot.Controllerlevel:root: warn# 为对应组设置日志级别bank: debug# 为对包设置日志级别com.glaty.studyspringboot.Controller: debug

        每一个controller都要定义一个Logger,可以直接在类上加lombok提供的@Slf4j注解,减少日志对象的声明操作。

@Slf4j
@RestController
@RequestMapping("/hero")
public class HeroController {@RequestMapping("/test")public String test() {System.out.println("springboot is running...");log.debug("debug ...");log.info("info ...");log.warn("warn ...");log.error("error ...");return "springboot is running...";}
}

日志输出格式控制

格式:

        PID:进程ID,用于表明当前操作所处的进程,当多服务同时记录日志时,该值可用于协助程序员调试程序
        所属类/接口名:当前显示信息为SpringBoot重写后的信息,名称过长时,简化包名书写为首字母,甚至直接删除

格式控制:

        %d:日期

        %p:日志级别

        %t:所属线程

        %c:所属类/接口名

        %m:消息
        %n:换行

        %clr(){}:颜色,小括号里填要改变颜色的信息,大括号可以省略(省略后里边的内容也要省略)内容填颜色

        %16t表示占位大于等于16右对齐,%-40.40c表示左对齐截取后40位(-号表示左对齐)

logging:pattern:console: "%d %clr(%p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"

        一般当日志格式确定后不会再设置日志格式

日志文件

        日志信息一般储存在文件里

设置日志文件

logging:file:name: server.log

日志文件详细配置

logging:file:name: server.loglogback:rollingpolicy:max-file-size: 3KBfile-name-pattern: server.%d{yyyy-MM-dd}.%i.log

 max-file-size:设置每个文件的最大大小

file-name-pattern:设置文件的名称(%d为时间,%i为序号从0开始依次加一,)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/867980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最小表示法

#define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> using namespace std;const int N (int)3e5 5; int n; int a[N * 2];int main() {cin >> n;for (int i 0; i < n; i) {cin >> a[i];a[i n] a[i]; // 构造成链}int l 0, r 1; // 一开始 r …

昇思12天

FCN图像语义分割 1. 主题和背景 FCN是由UC Berkeley的Jonathan Long等人于2015年提出的&#xff0c;用于实现图像的像素级预测。 2. 语义分割的定义和重要性 语义分割是图像处理和机器视觉中的关键技术&#xff0c;旨在对图像中的每个像素进行分类。它在很多领域有重要应用…

npm安装完yarn还是用不了?

前言 解决 找到你的包全局安装目录 复制路径&#xff0c;配置到Path全局环境变量 结果 不过发现在idea里还是用不了&#xff0c;此时你会想&#xff0c;这什么烂贴&#xff0c;没一点屁用 不过在重启idea之后&#xff0c;你也许就不会这么想了

秋招提前批面试经验分享(下)

⭐️感谢点开文章&#x1f44b;&#xff0c;欢迎来到我的微信公众号&#xff01;我是恒心&#x1f60a; 一位热爱技术分享的博主。如果觉得本文能帮到您&#xff0c;劳烦点个赞、在看支持一下哈&#x1f44d;&#xff01; ⭐️我叫恒心&#xff0c;一名喜欢书写博客的研究生在读…

数据结构/作业/2024/7/7

搭建个场景: 将学生的信息&#xff0c;以顺序表的方式存储&#xff08;堆区)&#xff0c;并且实现封装函数︰1】顺序表的创建&#xff0c; 2】判满、 3】判空、 4】往顺序表里增加学生、5】遍历、 6】任意位置插入学生、7】任意位置删除学生、8】修改、 9】查找(按学生的学号查…

网络安全基础-2

知识点 1.网站搭建前置知识 域名&#xff0c;子域名&#xff0c;DNS&#xff0c;HTTP/HTTPS&#xff0c;证书等 注册购买域名&#xff1a;阿里云企航_万网域名_商标注册_资质备案_软件著作权_网站建设-阿里云 2.web应用环境架构类 理解不同WEB应用组成角色功能架构: 开发语…

DHCP的原理及配置

目录 一、了解DHCP服务 1.什么是DHCP 1.1DHCP广播 2.使用DHCP的好处 2.1为什么使用DHCP 3.DHCP的模式与分配方式 3.1分配方式 3.2模式 二、DHCP工作原理 1.四次回话 2.重新登录 3.更新租约 4.扩展 三、安装DHCP服务 四、DHCP局部配置并且测试 五、使用…

7.Android逆向协议-抓取安卓http和https数据包(设备需要root权限)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;微尘网校 上一个内容&#xff1a;6.Android逆向协议-配置FD抓包环境 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s…

Nestjs基础

一、创建项目 1、创建 安装 Nest CLI&#xff08;只需要安装一次&#xff09; npm i -g nestjs/cli 进入要创建项目的目录&#xff0c;使用 Nest CLI 创建项目 nest new 项目名 运行项目 npm run start 开发环境下运行&#xff0c;自动刷新服务 npm run start:dev 2、…

GuitarPro2024音乐软件#创作神器#音乐梦想

嘿&#xff0c;亲爱的朋友们&#xff01;&#x1f44b;&#x1f44b;&#x1f44b;今天我要给你们安利一款超赞的软件——Guitar Pro。这款软件简直是吉他手的福音啊&#xff01;&#x1f389;&#x1f389;&#x1f389; Guitar Pro免费绿色永久安装包下载&#xff1a;&#…

YOLOv8 | 代码逐行解析(五) | YOLOv8中损失函数计算的详解包含Cls和Bbox计算的解析,小白必看(下)

一、本文介绍 本文给大家带来的是YOLOv8中的损失函数计算的完整解析&#xff0c;内容包括v8DetectionLoss的解析&#xff0c;以及BboxLoss的解析&#xff0c;如果你相对损失函数的计算原理&#xff0c;本文内容绝对会对你有所帮助&#xff0c;全文内容包含1万两千字&#xff0…

(十) Docker compose 本地部署 apollo

文章目录 1、apollo2、数据库准备3、启动后会用到的几个地址4、docker-compose运行 apollo方式一&#xff1a;使用容器 hostName 作为网络媒介方式二&#xff1a;使用端口映射固定 ip 作为网络媒介 6、客户端 1、apollo https://www.apolloconfig.com/#/zh/deployment/quick-s…

使用策略模式加工厂模式实现数据上传时的不同云平台的处理

在处理不同云存储的 SDK 和接口调用时可以使用策略模式加工厂模式实现了灵活的云存储上传处理 策略模式&#xff1a;可以为每个云存储&#xff08;如阿里云、腾讯云等&#xff09;创建一个策略类&#xff0c;实现统一的接口&#xff0c;来封装不同的上传逻辑。工厂模式&#x…

【代码管理的必备工具:Git的基本概念与操作详解】

一、Git 初识 1.提出问题 不知道你工作或学习时&#xff0c;有没有遇到这样的情况&#xff1a;我们在编写各种⽂档时&#xff0c;为了防止⽂档丢失&#xff0c;更改失误&#xff0c;失误后能恢复到原来的版本&#xff0c;不得不复制出⼀个副本&#xff0c;比如&#xff1a; “…

敏感词匹配DFA算法

算法简介与场景介绍 DFA算法&#xff0c;中文全称为确定性有穷自动机。它的基本思想是构建一个有穷自动机&#xff0c;当用户输入文本时&#xff0c;通过自动机的状态转换来快速匹配敏感词。具体特征是&#xff0c;有一个有效状态的集合和一些从一个状态通向另一个状态的边&am…

VuePress 的更多配置

现在&#xff0c;读者应该对 VuePress、主题和插件等有了基本的认识&#xff0c;除了插件&#xff0c;VuePress 自身也有很多有用的配置&#xff0c;这里简单说明下。 ‍ ‍ VuePress 的介绍 在介绍了 VuePress 的基本使用、主题和插件的概念之后&#xff0c;我们再来看看官…

简介空间复杂度

我们承接上一篇博客。我们写了时间复杂度之后&#xff0c;我们就要来介绍一下另一个相关复杂度了。空间复杂度。我觉得大家应该对空间复杂度认识可能比较少一些。我就是这样&#xff0c;我很少看见题目中有明确要求过空间复杂度的。但确实有这个是我们不可忽视的&#xff0c;所…

PXIe-7976【K410T】

起售价 RMB 152,880.00 块RAM(BRAM): 28620 kbit 动态RAM(DRAM): 2 GB FPGA: Kintex-7 410T PXI背板链路: PCI-Express Gen2 x 8 FPGA片: 63550 DSP片: 1540

ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建等高级进阶

目录 第一章 ChatGPT-4o使用进阶 第二章 大语言模型原理详解 第三章 大语言模型优化 第四章 开源大语言模型及本地部署 第五章 从0到1搭建第一个大语言模型 第六章 智能体&#xff08;Agent&#xff09;构建 第七章 大语言模型发展趋势 第八章 总结与答疑讨论 更多应用…

昇思25天学习打卡营第12天|FCN图像语义分割

文章目录 昇思MindSpore应用实践基于MindSpore的FCN图像语义分割1、FCN 图像分割简介2、构建 FCN 模型3、数据预处理4、模型训练自定义评价指标 Metrics 5、模型推理结果 Reference 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 基于MindSpo…