springBoot02-运维-使用篇

springBoot02-运维-使用篇

  • 一、打包和运行
    • 1、直接打包:
    • 2、打包报错:没有主清单属性:
    • 3、win端口占用如何解决?
    • 4、Linux运行Jar包
  • 二、配置高级
    • 1、临时属性(不重要)
      • 1.带参数启动jar时
      • 2.开发环境:
    • 2、配置文件的四级分类:(重要)
      • 级别分类:
    • 3、自定义配置文件路径、名字
  • 三、多环境开发
    • 1、统一yml文件,不同的生产环境
    • 2、不同的yml文件
    • 3、多环境分组管理
    • 4、多环境开发控制
  • 四、日志:
    • 1、日志基础
    • 2、日志输出格式控制
    • 3、开启文件记录日志

一、打包和运行

1、直接打包:

  1. 跳过测试,要不然会执行测试里面的文件。
  2. 打包
    springBoot02-运维-使用篇_第1张图片

2、打包报错:没有主清单属性:

是因为没有使用SpringBoot提供的maven插件
springBoot02-运维-使用篇_第2张图片
使用SpringBoot提供的maven插件可以将工程打包成可执行jar包

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-maven-pluginartifactId>
		plugin>
	plugins>
build>

3、win端口占用如何解决?

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

4、Linux运行Jar包

  1. 将项目打包成jar包,然后放到Linux当中。Linux必须安装java、mysql
  2. 创建mysql连接,并且创建库。主机ip地址:Linux的ip地址。
  3. 后台启动,并指定日志文件(或者默认):
  4. nohup java -jar springboot.jar >service.log 2>&1 &
  5. windows在页面查看:linux的ip地址加端口号
  6. 关闭:
    查看pid:ps -ef | grep “java.jar”
    关闭pid:kill -9 进程号

二、配置高级

1、临时属性(不重要)

1.带参数启动jar时

  • 带属性数启动SpringBoot,将端口号设为8888
    java –jar springboot.jar –-server.port=8888

  • 属性优先级:
    https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
    springBoot02-运维-使用篇_第3张图片

2.开发环境:

  • 方法一:等同于方法二 springBoot02-运维-使用篇_第4张图片
  • 方法二:
public static void main(String[] args) {
	String[] arg = new String[1];
	arg[0] = "--server.port=8080";
	SpringApplication.run(SSMPApplication.class, arg);

//可以在启动boot程序时断开读取外部临时配置对应的入口,
//也就是去掉读取外部参数的形参
	SpringApplication.run(SSMPApplication.class);
} 

2、配置文件的四级分类:(重要)

  • 多层级配置文件的属性采用叠加并覆盖的形式作用于程序

级别分类:

SpringBoot中4级配置文件
1级: file :config/application.yml 【最高】
2级: file :application.yml
3级:classpath:config/application.yml
4级:classpath:application.yml 【最低】

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

  • file:将项目打包后,在jar包下创建.yml文件,或者创建config/yml文件

3、自定义配置文件路径、名字

将一些配置文件更改名字后,再让其生效。
springBoot02-运维-使用篇_第5张图片

单服务器项目:使用自定义配置文件需求较低
多服务器项目:使用自定义配置文件需求较高,将所有配置放置在一个目录中,统一管理
基于SpringCloud技术,所有的服务器将不再设置配置文件,而是通过配置中心进行设定,动态加载配置信息

三、多环境开发

1、统一yml文件,不同的生产环境

spring:
	profiles:
		active: pro
---
spring:
	profiles: pro
server:
	port: 80
---
spring:
	profiles: dev
server:
port: 81
---
spring:
	profiles: test
server:
	port: 82

2、不同的yml文件

  • yml文件格式, 一定是注重格式:applicaiton-pro.yml 其中的“-”不要忘了。
    springBoot02-运维-使用篇_第6张图片

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

3、多环境分组管理

根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下
springBoot02-运维-使用篇_第7张图片

  • 使用group属性定义多种主环境与子环境的包含关系
    使用include属性在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔
spring:
	profiles:
		active: dev
		group:
			"dev": devDB,devRedis,devMVC
			"pro": proDB,proRedis,proMVC
			"test": testDB,testRedis,testMVC

当主环境dev与其他环境有相同属性时,主环境属性生效;其他环境中有相同属性时,最后加载的环境属性生效。最后加载的覆盖前面加载的。例如上述goup的“dev”的:devMVC 会覆盖前面的devDB/devRedis

4、多环境开发控制

Spring在基于maven运行,所以说主要配置maven,让spring读取maven。

在xml设定好规则,然后yml文件去xml去读取即可。

<profiles> 
	<profile> 
		<id>dev_envid> 
			<properties> 
				<profile.active>devprofile.active> 
			properties> 
			
			<activation> 
				<activeByDefault>trueactiveByDefault> 
			activation> 
			profile> 
			
			<profile> 
				<id>pro_envid> 
				<properties> 
					<profile.active>proprofile.active> 
				properties> 
			profile> 
			
			<profile> 
				<id>test_envid> 
			<properties> 
			
			<profile.active>testprofile.active> 
		properties> 
	profile>
profiles>
 spring:
	profiles:
		active: @profile.active@

springBoot02-运维-使用篇_第8张图片

  • 当打包后:查看yml文件时,以及是在maven设定好的优先启动文件。并非是:@profile.active@而是相对应的:dev

  • 基于SpringBoot读取Maven配置属性的前提下,如果在Idea下测试工程时pom.xml,每次更新需要手动compile方可生效

四、日志:

1、日志基础

  • 编程期调试代码

  • 运营期记录信息:
    记录日常运营重要信息(峰值流量、平均响应时长……)
    记录应用报错信息(错误堆栈)
    记录运维过程数据(扩容、宕机、报警……)

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

# 设置日志级别,root表示根节点,即整体应用日志级别
logging:
	level:
		root: debug

springBoot02-运维-使用篇_第9张图片

  • 使用lombok提供的注解@Slf4j简化开发,减少日志对象的声明操作
    springBoot02-运维-使用篇_第10张图片

2、日志输出格式控制

springBoot02-运维-使用篇_第11张图片

3、开启文件记录日志

日志文件详细配置:

#开启日志文件
logging:
  file:
    name: server.log
  #分文件记录、滚动的日志:1.文件名字 2.文件大小,超过则自动创建下一个文件
  logback:
    file-name-pattern:
    # server.2020-01-01.0.log  百分d是日期,i:是第几个文件
    max-file-size: server.%d{yyyy-MM-dd}.%i.log
    rollingpolicy: 4KB

你可能感兴趣的:(SpringBoot的基础使用,java)