SpringBoot02_运维篇

文章详细介绍了SpringBoot程序的打包过程,包括使用Maven的clean和package命令,以及解决MANIFEST.MF中缺少主清单属性的问题。在程序运行部分,讨论了如何处理启动错误并展示了在Linux环境下使用nohup后台启动的方法。此外,文章还深入探讨了SpringBoot的配置管理,如配置文件的优先级、多环境配置和日志设置,包括日志级别和日志文件的滚动策略。
摘要由CSDN通过智能技术生成

SpringBoot02 运维篇章

SpringBoot程序的打包与运行

程序的打包
  • 其中使用Maven提供的工具,Maven命令

  • 在打包之前,可以先clean清除以往打包数据

  • mvn package
    
程序的运行
  • 使用命令 java -jar XXX.jar包
    
  • 遇见问题:

  • XXXX中没有主清单属性
    
  • 是因为META-INF -> MANIFEST.MF文件中

  • 缺少主启动类配置或者启动类加载器

    • #主要程序启动类
      Start-Class: com.tanshilin.SpringBoot2BasicApplication
      
      #启动类加载器
      Main-Class: org.springframework.boot.loader.JarLauncher 
      
      
  • 解决方法: 在POM->Maven的Plugin中

  • <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring-boot.version}</version>
                    <configuration>
                        <mainClass>com.tanshilin.SpringBoot2BasicApplication</mainClass>
    <!--                    <skip>true</skip>-->
                    </configuration>
    
                    <executions>
                        <execution>
                            <id>repackage</id>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    
  • 其中配置标签中,配置为false或注释该行配置

在Linux环境下快速启动
  • 使用命令java -jar XXX.jar启动

  • 后台启动,使用nohup命令 在后台启动

  •  nohup javar -jar SpringBoot2_basic-0.0.1-SNAPSHOT
     可以使用 > server.log 命令重定向日志输出
    
  • 关闭应用,无法使用ctrl + c关闭当前终端进程

  • 使用命令后

  •  ps -a | grep "java -jar ...."  #等后置属性描述查询出当前命令
     kill -9 3303(终端端口port) 杀死当前进程
    

配置高级

配置临时属性

  • 使用 命令行启动:

  • java -jar XXBoot.jar --server.port=8081 --其他配置=XXX
    
  • 也可以使用IDEA中 Run Configuration配置

  • 所传递的临时属性,作为SpringBoot启动类@SpringBootApplication中args参数传入启动类

  • public static void main(String[] args) {
            SpringApplication.run(SpringBoot2BasicApplication.class, args);
        }
    
    拒接接收临时参数
  • 因此,可以自定义新的arg参数,修改启动类调用配置好的参数;防止外部传入临时参数,更改运行配置。

配置文件分类

  • 配置文件加载优先级: properties > yml > yaml

    • 分为四种配置文件:加载顺序依次为:
    • file :config/application.yml 【最高】
    • file :application.yml
    • classpath:config/application.yml
    • classpath:application.yml 【最低】

    自定义配置文件

    • 指定配置文件路径: --spring.config.name=filename 无需文件后缀名
    • 指定配置文件名称*--spring.config.location=classpath:/file 指定配置文件的路径*

多环境开发

  • 多环境配置: 单文件配置
    • yml版本 单文件配置
    • properties版本 单文件配置 配置Profiles – active-profile 进行设置
    多文件配置 yml
    • 主配置文件

      spring:
      	profiles:
      		active: pro		# 启动pro
      

      环境配置文件

      server:
      	port: 80
      

      ​ 环境配置文件因为每一个都是配置自己的项,所以连名字都不用写里面了。那问题是如何区分这是哪一组配置呢?使用文件名区分。

      application-pro.yaml

      server:
      	port: 80
      

      application-dev.yaml

      server:
      	port: 81
      
    • 多环境配置中,多文件组合配置

      • SpringBoot从2.4版开始使用group属性替代include属性,降低了配置书写量。简单说就是我先写好,你爱用哪个用哪个。

        spring:
        	profiles:
            	active: dev
                group:
                	"dev": devDB,devRedis,devMVC
              		"pro": proDB,proRedis,proMVC
              		"test": testDB,testRedis,testMVC
        
      • 使用dev主配置文件,直接合并加载group中dev组合

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

    Maven与SpringBoot多环境配置冲突:

  • Maven中配置的多环境选择,占比大于SpringBoot环境配置。

  • 可以通过*@属性名@* SpringBoot读取Maven中Properties设置属性值

    • spring:
      	profile:
      		active: @profile.active@
      
    • 这样共同配置,方便运行环境选择,共同维护

日志

日志的级别:
    1. TRACE:运行堆栈信息,使用率低 (最低)
    2. DEBUG:程序员调试代码使用
    3. INFO:记录运维过程数据
    4. WARN:记录运维过程报警数据
    5. ERROR:记录错误堆栈信息
    6. FATAL:灾难信息,合并计入ERROR (最高)
设置日志:
  • # 开启debug模式,输出调试信息,用于检查系统运行状态
    debug : true
    
    # 设置日志级别,root表示根及诶单,整体应用日志级别
    logging:
    	level:
    		root: debug
    
设置日志组级别:
  • logging:
    	# 设置日志组
        group:
        	# 自定义组名,设置当前组中所包含的包
            ebank: com.itheima.controller
        level:
        	root: warn
    为对应组设置日志级别
            ebank: debug
        	# 为对包设置日志级别
            com.itheima.controller: debug
    
日志的导出
  • ​ 记录日志到文件中格式非常简单,设置日志文件名即可。

    logging:
    	file:
        	name: server.log
    

    ​ 虽然使用上述格式可以将日志记录下来了,但是面对线上的复杂情况,一个文件记录肯定是不能够满足运维要求的,通常会每天记录日志文件,同时为了便于维护,还要限制每个日志文件的大小。

    下面给出日志文件的常用配置方式:

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

    ​ 以上格式是基于logback日志技术设置每日日志文件的设置格式,要求容量到达3KB以后就转存信息到第二个文件中。文件命名规则中的%d标识日期,%i是一个递增变量,用于区分日志文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值