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.xdnf.cn/news/1474713.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

一篇就够了,为你答疑解惑:锂电池一阶模型-在线参数辨识(附代码)

锂电池一阶模型-在线参数辨识 背景在线 VS 离线 参数辨识递推最小二乘法一阶戴维南Z域离散表达式 背景 锂电池一阶戴维南等效模型的基础知识和离线辨识方法&#xff0c;已经在上一期非常详细地讲解了一轮&#xff08;上期文章请戳此处&#xff09;&#xff0c;本期继续讲解一下…

《昇思 25 天学习打卡营第 11 天 | ResNet50 图像分类 》

《昇思 25 天学习打卡营第 11 天 | ResNet50 图像分类 》 活动地址&#xff1a;https://xihe.mindspore.cn/events/mindspore-training-camp 签名&#xff1a;Sam9029 计算机视觉-图像分类&#xff0c;很感兴趣 且今日精神颇佳&#xff0c;一个字&#xff0c;学啊 上一节&…

C++笔试强训1

文章目录 一、单项选择题二、编程题1. 组队竞赛1. 删除公共字符 一、单项选择题 解析&#xff1a; for(初始化部分;条件判断部分;调整部分) { //循环部分 } 本题中条件判断部分是(y 123) && (x < 4)&#xff0c;中间用&&相连&#xff0c;左右都为真时才为真…

STM32实战项目:从零打造GPS蓝牙自行车码表,掌握传感器、蓝牙、Flash存储等核心技术

一、 引言 骑行&#xff0c;作为一项绿色健康的运动方式&#xff0c;越来越受到人们的喜爱。而记录骑行数据&#xff0c;分析速度、里程等信息&#xff0c;则成为了许多骑行爱好者的追求。本篇文章将带你使用STM32单片机&#xff0c;DIY一款功能完备的自行车码表&#xff0c;记…

GRPC使用之ProtoBuf

1. 入门指导 1. 基本定义 Protocol Buffers提供一种跨语言的结构化数据的序列化能力&#xff0c;类似于JSON&#xff0c;不过更小、更快&#xff0c;除此以外它还能用用接口定义(IDL interface define language)&#xff0c;通protoc编译Protocol Buffer定义文件&#xff0c;…

vue学习笔记之组件传值

说起组件传值&#xff0c;首先要介绍再vue中什么是组件。 组件&#xff08;Component&#xff09;&#xff0c;是vue中很强大的一个功能&#xff0c;可以将一些可重用的代码进行重用。所有的vue组件同时也是vue实例&#xff0c;可以接受使用相同的选项对象和提供相同的生命周期…

高考志愿填报千万要注意这四点

在高考志愿填报过程中&#xff0c;确实有很多需要留心的点。我为你总结了四个关键点&#xff0c;希望能帮助你顺利完成志愿填报&#xff1a; 1、学校提供的支持 学校作为学生志愿填报咨询服务的主阵地&#xff0c;应提供体系化和制度化的支持。包括及时关注并传达政策动向和相…

Spring AOP源码篇三之 xml配置

简单代码示例, 了解Spring AOP基于xml的基本用法 xml配置&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-insta…

数学系C++ 排序算法简述(八)

目录 排序 选择排序 O(n2) 不稳定&#xff1a;48429 归并排序 O(n log n) 稳定 插入排序 O(n2) 堆排序 O(n log n) 希尔排序 O(n log2 n) 图书馆排序 O(n log n) 冒泡排序 O(n2) 优化&#xff1a; 基数排序 O(n k) 快速排序 O(n log n)【分治】 不稳定 桶排序 O(n…

Linux—网络设置

目录 一、ifconfig——查看网络配置 1、查看网络接口信息 1.1、查看所有网络接口 1.2、查看具体的网络接口 2、修改网络配置 3、添加网络接口 4、禁用/激活网卡 二、hostname——查看主机名称 1、查看主机名称 2、临时修改主机名称 3、永久修改主机名称 4、查看本…

Polkadot(DOT)即将爆雷?治理无能还歧视亚洲!资金将在两年内耗尽!是下一个FTX吗?

近期&#xff0c;关于Polkadot(DOT)生态圈的一系列负面消息引发了业界和投资者的广泛关注。从高昂的营销开支、缺乏实际业务亮点&#xff0c;再到治理问题和种族歧视指控&#xff0c;Polkadot似乎正面临着严峻的危机。业内人士警告&#xff0c;Polkadot的财政状况堪忧&#xff…

一个最简单的comsol斜坡稳定性分析例子——详细步骤

一个最简单的comsol斜坡稳定性分析例子——详细步骤 标准模型例子—详细步骤 线弹性模型下的地应力平衡预应力与预应变、土壤塑性和安全系数求解的辅助扫描

Vue2前端实现数据可视化大屏全局自适应 Vue实现所有页面自适应 Vue实现自适应所有屏幕

Vue自适应所有屏幕大小,目前页面自适应,尤其是数据可视化大屏的自适应更是案例很多 今天就记录一下使用Vue全局自适应各种屏幕大小的功能 在Vue.js中创建一个数据大屏,并使其能够自适应不同屏幕大小,通常涉及到布局的响应式设计、CSS媒体查询、以及利用Vue的事件系统来处理…

非同步升压转换器,效率95%你信吗?ETA1611输出电流2A, 22V DCDC

前言&#xff1a; 截止24年7月7日某创报价&#xff1a;500&#xff1a; &#xffe5;0.7856 / 个 建议使用前同时了解下方器件。 2毛钱的SOT23-5封装28V、1.5A、1.2MHz DCDC转换器用于LCD偏置电源和白光LED驱动等MT3540升压芯片 描述 ETA1611 SOT23-6封装 丝印GVYW&#xff0…

对话大模型Prompt是否需要礼貌点?

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 基于Dify的QA数据集构建&#xff08;附代码&#xff09;Qwen-2-7B和GLM-4-9B&#x…

YOLOv8结合SAHI推理图像和视频

文章目录 前言视频效果必要环境一、完整代码二、运行方法1、 推理图像2、 推理视频 总结 前言 在上一篇文章中&#xff0c;我们深入探讨了如何通过结合YOLOv8和SAHI来增强小目标检测效果 &#xff0c;并计算了相关评估指标&#xff0c;虽然我们也展示了可视化功能&#xff0c;…

入门PHP就来我这(高级)13 ~ 图书添加功能

有胆量你就来跟着路老师卷起来&#xff01; -- 纯干货&#xff0c;技术知识分享 路老师给大家分享PHP语言的知识了&#xff0c;旨在想让大家入门PHP&#xff0c;并深入了解PHP语言。 今天给大家接着上篇文章编写图书添加功能。 1 添加页面 创建add.html页面样式&#xff0c;废…

去O化神器 Exbase

随着去O化进程推动&#xff0c;很多旧业务依赖的oracle数据库&#xff0c;都需要实现做数据库的替换&#xff0c;当下能很好兼容Oracle&#xff0c;并实现异构数据库之间转换的工具并不多。这里给大家推荐一个商业工具数据库迁移工具exbase&#xff08;北京海量&#xff09;&am…

排序格式排序格式

排序格式排序格式

CosyVoice - 阿里最新开源语音克隆、文本转语音项目 支持情感控制及粤语 本地一键整合包下载

近日&#xff0c;阿里通义实验室发布开源语音大模型项目FunAudioLLM&#xff0c;而且一次包含两个模型&#xff1a;SenseVoice和CosyVoice。 CosyVoice专注自然语音生成&#xff0c;支持多语言、音色和情感控制&#xff0c;支持中英日粤韩5种语言的生成&#xff0c;效果显著优于…