SpringBoot2运维实用篇

本文详细介绍了SpringBoot程序在Windows和Linux环境下的打包与运行步骤,包括使用Maven打包,解决Windows端口占用问题,Linux环境的jar包运行,以及配置文件的优先级和自定义。此外,还讨论了多环境开发策略,如YAML和Properties版的配置,以及日志基础和控制。
摘要由CSDN通过智能技术生成

前言

本视频承接SpringBoot2基础篇,SpringBoot2基础篇链接:https://blog.csdn.net/weixin_51714391/article/details/130243844?spm=1001.2014.3001.5502
本视频笔记,是根据b站黑马程序员SpringBoot视频(p51-p67)整理而来
视频链接如下:https://www.bilibili.com/video/BV15b4y1a7yG/?spm_id_from=333.337.search-card.all.click&vd_source=f4a032fee75744e378f4ac30c7e8ad39

九、打包与运行

笔记小结

  1. Boot程序打包依赖SpringBoot对应的Maven插件即可打包 出可执行的jar包
  2. 运行jar包使用jar命令进行
  3. Windows与Linux下执行Boot打包程序流程相同,仅需确保 运行环境有效即可

程序为什么要打包
在这里插入图片描述

9.1、程序打包与运行(Windows版)

步骤一:使用Maven进行程序打包

(打包操作前,前clean一遍)

由于SpringBoot在打包的时候会把测试类也执行一遍,所以需要首先进行如下操作,避免此情况发生

在这里插入图片描述
点击后test会有一个横杠
在这里插入图片描述
其次,进行打包:在这里插入图片描述

步骤二:程序运行

打包好的jar包,打开其目录位置
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常见问题

  • Windonws端口被占用

在这里插入图片描述

解决方法:找出占用端口的程序,并且把它终止掉

# 查询端口
netstat -ano
# 查询指定端口
netstat -ano |findstr "端口号"
# 根据进程PID查询进程名称
tasklist |findstr "进程PID号"
# 根据PID杀死任务
taskkill /F /PID "进程PID号"
# 根据进程名称杀死任务
taskkill -f -t -im "进程名称"

在这里插入图片描述

9.2、程序运行(Linux版)(重点)

笔记小结

  1. 上传安装包
  2. 执行jar命令:java –jar 工程名.jar

步骤一:在usr/local创建app目录

步骤二:上传jar包

在usr/local/app上传jar包:ssmp-0.0.1-SNAPSHOT.jar

步骤三:安装jdk1.8(若有jdk,此步跳过)

步骤四:安装mysql(若有,可跳过)

启动mysql:mysql -u root -p 123456
(查看mysql是否安装成功)
如果提示:Failed to start mysqld.service: Unit not found
那么请看:https://editor.csdn.net/md/?articleId=130340768#linuxmysqlFailed_to_start_mysqldservice_Unit_not_found_29

初始化数据库配置:创建数据库以及对应的表,并且插入数据 (最好使用SQLyog)

步骤五:后台启动

nohup java -jar ssmp-0.0.1-SNAPSHOT.jar >server.log 2>&1 &

在这里插入图片描述

server.log 2>&1 &日志挂载

补充:

1.关闭该进程

查看该进程

ps -ef | grep "java -jar"

杀死该进程

kill -9 "PID"

#例如
kill -9 9393

2.查看服务器日志

cat server.log

在这里插入图片描述

十、高级配置

笔记小结

  1. SpringBoot在开发和运行环境均支持使用临时参数修改工程配置
  2. SpringBoot支持4级配置文件,应用于开发与线上环境进行配置的 灵活设置
  3. SpringBoot支持使用自定义配置文件的形式修改配置文件存储位置
  4. 基于微服务开发时配置文件将使用配置中心进行管理

10.1、临时属性设置

笔记小结

    1、使用jar命令启动SpringBoot工程时可以使用临时属性替 换配置文件中的属性
    2、临时属性添加方式:java –jar 工程名.jar **--属性名=值**
    3、多个临时属性之间使用**空格分隔**
    4、临时属性必须是当前boot工程支持的属性,否则设置无效

在这里插入图片描述
端口被占用,需要临时转换端口,可以使用临时属性进行配置

  • 带属性数启动SpringBoot
java –jar xxx.jar –-server.port=80
  • 携带多个属性启动SpringBoot,属性间使用空格分隔

10.1.1、属性加载优先顺序

参看https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config

在这里插入图片描述

10.1.2、开发环境中

笔记小结

  • 启动SpringBoot程序时,可以选择是否使用命令行属性为 SpringBoot程序传递启动属性
  • 带属性启动SpringBoot程序,为程序添加运行属性

在这里插入图片描述在这里插入图片描述

通过编程形式带参数启动SpringBoot程序,为程序添加运行参数

public static void main(String[] args) {
    String[] arg = new String[1];
    arg[0] = "--server.port=8080";
    SpringApplication.run(SSMPApplication.class, arg);
}
  • 不携带参数启动SpringBoot程序
public static void main(String[] args) {
    SpringApplication.run(SSMPApplication.class);
}

10.2、配置文件分类*

笔记小结

  • 配置文件分为4种
    • 项目类路径配置文件:服务于开发人员本机开发与测试
    • 项目类路径config目录中配置文件:服务于项目经理整体调控
    • 工程路径配置文件:服务于运维人员配置涉密线上环境
    • 工程路径config目录中配置文件:服务于运维经理整体调控
  • 多层级配置文件间的属性采用叠加并覆盖的形式作用于程序

1、SpringBoot中4级配置文件

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

2级: file :application.yml

3级:classpath:config/application.yml

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

补充:若同时配置了application.properties,则同一层级的 :proproperties生效,不同层级的,层级高则生效。.

2、作用:

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

10.3、自定义配置文件

笔记小结

    1、配置文件可以修改名称,通过启动参数设定
    2、配置文件可以修改路径,通过启动参数设定
    3、微服务开发中配置文件通过配置中心进行设置
  1. 单服务器项目:使用自定义配置文件需求较低
  2. 多服务器项目:使用自定义配置文件需求较高,将所有配置放置在一个目录中,统一管理
  3. 基于SpringCloud技术,所有的服务器将不再设置配置文件,而是通过配置中心进行设定,动态加载配置信息

通过启动参数加载配置文件(无需书写配置文件扩展名)

在这里插入图片描述在这里插入图片描述补充:properties与yml文件格式均支持

通过启动参数加载指定文件路径下的配置文件

在这里插入图片描述补充:properties与yml文件格式均支持

通过启动参数加载指定文件路径下的配置文件时可以加载多个配置
在这里插入图片描述补充:多配置文件常用于将配置进行分类,进行独立管理,或将可选配置单独制作便于上线更新维护

十一、多环境开发

笔记小结

   1、多环境开发(YAML版)
   2、多环境开发(Properties版)
   3、Maven与SpringBoot多环境冲突现象解决方案

在这里插入图片描述

11.1、多环境开发(YAML版)

笔记小结:

    1、多环境开发需要设置若干种常用环境,例如开发、生产、测试环境
    2、yaml格式中设置多环境使用  ---   区分环境设置边界
    3、每种环境的区别在于加载的配置属性不同
    4、启用某种环境时需要指定启动时使用该环境

1、单文件

# 启动指定环境
spring:
  profiles:
    active: dev

---
#生产环境,生产环境具体参数设定
spring:
  profiles: pro
server:
  port: 80
---
#开发环境,开发环境具体参数设定
spring:
  profiles: dev
server:
  port: 81
---
#测试环境,测试环境具体参数设定
spring:
  profiles: test
server:
  port: 82
---

过时格式:

spring:
  profiles:
    active: pro
---
spring:
  profiles: pro
server:
  port: 80

推荐格式:✳

spring:
  profiles:
    active: pro
--- 
#用下面的的四行替换掉原来的
#spring:
#  profiles: pro   
spring:
  config:
    activate:
      on-profile: pro
server:
  port: 80

2.多文件

在主启动配置文件application.yml

spring:
  profiles:
    active: dev

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

server:
  port: 8081

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

server:
  port: 8080

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

server:
  port: 8082 

11.2、多环境开发(Properties版)

笔记小结

    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: dev
    include: devDB,devRedis,devMVC
  • 注意:当主环境dev与其他环境有相同属性时,主环境属性生效;其他环境中有相同属性时,最后加载的环境属性生效
  • 使用group属性定义多种主环境与子环境的包含关系
spring:
  profiles:
    active: dev
    group:
      "dev": devDB,devRedis,devMVC
      "pro": proDB,proRedis,proMVC
      "test": testDB,testRedis,testMVC

补充:多环境开发使用group属性设置配置文件分组,便于线上维护管理

11.3、多环境开发控制*

笔记小结

  1. 当Maven与SpringBoot同时对多环境进行控制时,以Maven为主,SpringBoot使用@…@占位符读取Maven对应的配置属性值
  2. 基于SpringBoot读取Maven配置属性的前提下,如果在Idea下测试工程时pom.xml每次更新需要手动compile方可生效

在这里插入图片描述

springboot依赖于maven,是基于maven来进行相关配置的

Maven与SpringBoot多环境兼容

1. Maven中设置多环境属性

<!--Maven中设置多环境属性-->
<profiles>
    <profile>
        <id>dev_env</id>
        <properties>
            <profile.active>dev</profile.active>
        </properties>
        <!--设置启动的环境-->
        <activation>
            <activeByDefault>true</activeByDefault>
        </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>

注意:单词拼写 <profile.active>……</profile.active> 不加s

2. SpringBoot中引用Maven属性

spring:
  profiles:
    active: @profile.active@

在这里插入图片描述

3. 执行Maven打包指令,并在生成的boot打包文件.jar文件中查看对应信息
示例结果:

在打包好的jar包中名称会对应改变
在这里插入图片描述在这里插入图片描述(由于Maven缓存问题,一定别忘了要先点击compile)
在这里插入图片描述

十二、日志

笔记小结

    1、日志基础使用规则
    2、编辑日志输出格式
    3、日志文件设置(重点)

12.1、日志基础

笔记小结

1、日志用于记录开发调试与运维过程消息
2、日志的级别共6种,通常使用4种即可,分别是DEBUGINFO,WARN,ERROR
3、可以通过日志组或代码包的形式进行日志显示级别的控制 4、基于lombok提供的@Slf4j注解为类快速添加日志对象

日志(log)作用

  • 编程期调试代码
  • 运营期记录信息
    • 记录日常运营重要信息(峰值流量、平均响应时长……)
    • 记录应用报错信息(错误堆栈)
    • 记录运维过程数据(扩容、宕机、报警……)
  • 日志级别:fatal>error>warn>info>debug>trace
    • FATAL:灾难信息,合并计入ERROR
    • ERROR:记录错误堆栈信息
    • WARN:记录运维过程报警数据
    • INFO:记录运维过程数据
    • DEBUG:程序员调试代码使用
    • TRACE:运行堆栈信息,使用率低

代码中使用日志工具记录日志

1. 添加日志记录操作

@RestController
@RequestMapping("/books")
public class BookController extends BaseController {
    private static final Logger log = LoggerFactory.getLogger(BookController.class);
    @GetMapping
    public String getById(){
        System.out.println("springboot is running...");
        log.debug("debug ...");
        log.info("info ...");
        log.warn("warn ...");
        log.error("error ...");
        return "springboot is running...";
    }
}

2. 设置日志输出级别

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

debug模式,是程序员调制程序时使用

debug日志级别(常用),root代表整体应用日志级别,级别范围很大

3. 设置日志包,控制指定包对应的日志输出级别

#设置日志级别,com.gq.controller: debuf 表示单独设置com.gq.controller包下的日志级别为debug
logging:
  level:
    root: info
    com.gq.controller: debug

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

#设置日志级别,ebank表示设置组下的日志级别
logging:
  group:
    ebank: com.gq.controller
  level:
    root: info
    ebank: debug

步骤:定义组,设置组级的日志级别 ebank这个名称可以自定义

优化日志对象创建代码✳

使用lombok提供的注解@Slf4j简化开发,减少日志对象的声明操作

@Slf4j
@RestController
@RequestMapping("/books")
public class BookController {
    @GetMapping
    public String getById(){
        System.out.println("springboot is running...");
        log.debug("debug info...");
        log.info("info info...");
        log.warn("warn info...");
        log.error("error info...");
        return "springboot is running...";
    }
}

1、@Slf4j该注解的作用主要是操作在idea中的控制台中打印的日志信息。该注解相当于代替了以下的代码:private final Logger logger = LoggerFactory.getLogger(当前类名.class);

2、@Slf4j速记,英文简写 self-justification,自我辩解

12.2、日志输出格式控制

笔记小结

  • 日志输出格式设置规则

在这里插入图片描述

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

%d:日期

%m:消息

%n:换行

12.3、日志文件*

笔记小结

    日志记录到文件
    日志文件格式设置
  • 设置日志文件
logging:
  #设置日志保存文件
  file:
    name: server.log

关键词file

  • 日志文件详细配置
logging:
  #设置日志文件最大容量
  logback:
    rollingpolicy:
      max-file-size: 10MB
      file-name-pattern: server.%d{yyyy-MM-dd}.%i.log
Spring Boot一个用于简化 Spring 应用程序开发的框架。它内置了许多常用的配置和功能,使得开发者能够更加快速地构建和运维应用程序。 在 Spring Boot运维中,可以使用 JarLauncher 来启动 Spring Boot 应用程序。需要注意的是,JarLauncher 已经被打包在 Spring Boot 库中,并作为 Spring Boot 应用程序的默认启动器,所以不需要单独引入。 在运行 Spring Boot 程序时,可以选择使用命令行属性为程序传递启动属性,可以通过命令行参数或者配置文件的方式进行配置。配置文件可以分为不同的分类,通过指定不同的配置文件路径来加载不同的配置。例如,可以使用 --spring.config.location 选项指定配置文件的路径,如 --spring.config.location=D:\springboot\springboot_09_config\src\main\resources。 总之,Spring Boot 提供了许多便捷的工具和功能来简化应用程序的运维工作,使开发者能够更加轻松地管理和维护应用程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [36.SpringBoot实用运维](https://blog.csdn.net/khmff/article/details/131115157)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [SpringBoot --- 运维](https://blog.csdn.net/shuai_h/article/details/129920983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值