赞
踩
编辑
对SpringBoot项目打包(执行Maven构建指令package)。
打包好后,会在target中看到打包好的jar包。右击点击open in -- > Explorer打开jar包路径,在地址路径输入cmd进行执行启动指令。
运行项目(执行启动指令)。
java –jar jar包名称
注意:jar支持命令行启动需要依赖maven插件,确认打包是有SpringBoot对应的maven插件。
<code class="language-plaintext hljs"><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></code>
总结:
SpringBoot工程可以基于java环境下独立运行jar文件启动服务。
1.上传项目的jar包到linux系统中(usr的local目录下创建一个项目)。
2. 执行jar命令:java –jar 工程名.jar,
后台启动:nohup java -jar 项目jar包 > server.log 2>&1 &
3. 服务器断开:①查询对应的pid 命令:ps ef|grep 'java -jar'
②结束进程 命令:kill -9 pid
1. 基于Linux(CenterOS7)。
2. 安装JDK,且版本不低于打包时使用的JDK版本。
3. 安装mysql数据库。
在usr下的local目录, 创建一个目录jdk,下载linux版本jdk,把jdk拖进去。
安装java环境。
①检测当前系统是否存在java环境 命令:java -version,
如果有的话就需要卸载,检测jdk版本 命令:rpm -qa|grep jdk,
卸载 命令: rpm -e --nodeps 版本。
②安装jdk 命令:rpm -ivk rpm包。
配置环境变量。
①所有的环境配置都在cd / etc/profile。
③命令:vim /etc/profile进入这个文件后面进行编辑环境配置,跟windows大致。
JAVA_HOME=/usr/java/jdk...名称
:CLASSPATH=%JAVA_HOME%/lib
PATH=$JAVA_HOME/bin
export PATH CLASSPATH JAVA_HOME
④让配置文件生效 命令:source /etc/profile
开启防火墙端口。
①查看防火墙 命令:firewall-cmd --list-ports
②开启某个防火墙端口 命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
③重启防火墙 命令:systemctl restart firewalld.serive
在usr下的local目录, 创建一个目录mysql,下载linux版本mysql,把mysql拖进虚拟机去。
解压mysql 命令:tar -xvf mysql....版本。
检查CenterOS7里面可能有mariadb库,需要卸载,因为跟mysql有冲突。
①查询mariadb 命令:rpm -qa|grep mariadb
②卸载 命令:rpm -e --nodeps mariadb-libs
依次安装所需要的mysql的rpm。
①rpm -ivh mysql-community-common......
②rpm -ivh mysql-community-client-plugins-......
③rpm -ivh mysql-community-libs-.....
④rpm -ivh mysql-community-client-.........
⑤rpm -ivh mysql-community-icu-data-files-.....
⑥rpm -ivh mysql-community-server-.......
注意:包与包有依赖关系,按照顺序安装。
初始化 命令:mysqld --initalize --console。
修改安装目录的所有者,以便有权限使用。
①命令:chown -R mysql:mysql /var/lib/mysql/
②启动服务,systemctl start mysqld
③初始化的时候,程序自动设置临时密码,查询密码 命令:cat /var/log/mysqld.log|grep localhost
使用临时密码登录mysql账号进行修改密码。
①登录mysql 命令:mysql -uroot -p
②修改密码 命令:alter user 'root'@'localhost' identifiend by '123456';
③exit退出
开放mysql端口3306。
firewall-cmd --zone=public --add-port=3306/tcp --permanent
原因:
考虑是不是连接数据库的这个用户权限不足导致,因为在新建一个 MySQL连接时,会有一个默认的mysql数据库,此数据库中有一个 user用户表,此表就是用来设置所有用户的权限。
于是查询了user表中的user字段和host字段,发现想要进行数据库连接的root用户的host字段只有localhost地址,也就是只允许root用户从localhost或者127.0.0.1地址连接数据库,此时就需要将root用户的host字段改为'%',因为如果使用通配符%作为主机,则允许指定用户从任意主机连接。
错误解决
①重启防火墙,firewall-cmd --reload
②登录mysql
③进入mysql数据库,查看mysql数据库的user表,
此时看到root用户的host字段是localhost也就是只允许本机地址连接数据库。
④修改root用户的host字段 命令:update user set host='%' where user='root';
如果使用通配符%作为主机,则允许指定用户从任意主机连接。
⑤ 刷新特权命令:flush privileges;
临时修改项目的端口号
java -jar 项目jar包 --server.port=临时端口号
注意:后面添加临时属性,来覆盖原来的属性。
临时修改项目连接数据库的密码
java -jar 项目jar包 --server.port=临时端口号 --spring.datasource.druid.password=123
注意:携带多个属性启动SpringBoot,属性间使用空格分隔。
问题:发现加了指令参数不生效,应该在idea下帮助运维人员把命令测通,
这样才能交给运维使用,问题是在idea怎么测试临时属性是否生效呢?
总结:
1. 临时属性添加方式:java –jar 工程名.jar –-属性名=值
2. 多个临时属性之间使用空格分隔。
3. 临时属性必须是当前boot工程支持的属性,否则设置无效。
点击修改配置
2 . 看到配置属性的位置,Program arguments程序参数,在里面配置自己需求。
在Program arguments填属性--server.port=8081 --a=b,会进入到args命令里面,
那么现在这个属性值通过这个参数传递到这里面。
-
- @SpringBootApplication
- public class SpringbootCrudApplication {
- public static void main(String[] args) {
- // //可以自己编写参数
- // String [] arg=new String[1];
- // arg[0]="--server.port=8082";
- // SpringApplication.run(SpringbootCrudApplication.class, arg);
-
- //也可以在启动boot程序断开读取外部临时配置对应的入口,也就是去掉读取外部参数的形参。
- SpringApplication.run(SpringbootCrudApplication.class);
- }
-
- }
springboot提供了一种机制,在现有的配置之上在做一套配置,
这套配置可以覆盖当前的配置,这样就不用在命令行上输入那么多临时属性。
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级常用于项目经理进行整体项目属性调控。
总结
1. 配置文件分为4种:
① 项目类路径配置文件:服务于开发人员本机开发与测试。
② 项目类路径config目录中配置文件:服务于项目经理整体调控
③ 工程路径配置文件:服务于运维人员配置涉密线上环境
④ 工程路径config目录中配置文件:服务于运维经理整体调控
2. 多层级配置文件间的属性采用叠加并覆盖的形式作用于程序。
例定义一个yml文件,就要通过启动参数加载配置文件(无需书写配置文件扩展名)
注意:
1. 单服务器项目:使用自定义配置文件需求较低。
2. 基于SpringCloud技术,所有的服务器将不再设置配置文件,
而是通过配置中心进行设定,动态加载配置信息。
总结
1. 配置文件可以修改名称或者路径,通过启动参数设定。
2. 微服务开发中配置文件通过配置中心进行设置。
什么是多环境?
开发项目的时候,在自己机器上的开发环境,而到了测试那边,环境却不一样,不是自己本机的了,
每一种不同环境对应配置是不同的。
所以所谓的环境根据不同环境配置不同的值。
# 应用环境 #公共配置都写在这里,例如 spring: profiles: active: pro #使用pro这个环境 --- #区分多个环境 --- # 设置环境 #生产环境配置 server: port: 80 spring: profiles:pro --- #开发环境 server: port: 81 spring: profiles:dev --- #测试环境 server: port: 82 spring: config: activate: on-profile: test #推荐方式
总结:
1. 多环境开发需要设置若干种常用环境,例如开发、生产、测试环境。
2. yaml格式中设置多环境使用---区分环境设置边界。
3. 每种环境的区别在于加载的配置属性不同。
4. 启用某种环境时需要指定启动时使用该环境。
多环境开发,各种各样环境集中以前容易暴露信息的,并且维护起来不方便。
就需要多个配置多文件格式。
主启动配置文件application.properties
spring.profiles.active=pro
1.环境分类配置文件application -pro.properties
server.port=80
2. 环境分类配置文件application -dev.properties
server.port=81
3. 环境分类配置文件application -test.properties
server.port=82
注意:properties文件多环境配置仅支持多文件格式。
根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下
① application-devDB.yml
② application-devRedis.yml
③ application-devMVC.yml
使用group属性定义多种主环境与子环境的包含关系
- spring:
- profiles:
- active: dev
- group:
- "dev": devDB,devRedis,devMVC
- "pro": proDB,proRedis,proMVC
- "test": testDB,testRedis,testMVC
注意:
当主环境dev与其他环境有相同属性时,主环境属性生效;
其他环境中有相同属性时,最后加载的环境属性生效。
如何用maven控制springboot环境?
当maven与springboot多环境产生冲突的时候,应该让springboot使用maven的环境。
1 . Maven中设置多环境属性
<!-- 设置多环境--> <profiles> <!-- 第一个环境--> <profile> <id>env_dev</id> <properties> <profile.active>dev</profile.active> </properties> <!-- 默认使用这个环境--> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!-- 第二个环境--> <profile> <id>env_pro</id> <properties> <profile.active>pro</profile.active> </properties> </profile> </profiles>
2. SpringBoot中引用Maven属性
3. 执行Maven打包指令,并在生成的boot打包文件.jar文件中查看对应信息。
总结:
1. 当Maven与SpringBoot同时对多环境进行控制时,以Mavn为主,
SpringBoot使用@..@占位符读取Maven对应的配置属性值。
2. 基于SpringBoot读取Maven配置属性的前提下,
如果在Idea下测试工程时pom.xml每次更新需要手动compile方可生效。
日志(log)作用
1. 编程期调试代码
2. 运营期记录信息
①记录日常运营重要信息(峰值流量、平均响应时长……)
②记录应用报错信息(错误堆栈)
③记录运维过程数据(扩容、宕机、报警……)
1. 添加日志记录操作(创建一个工具类)
-
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
-
- public class BaseClass {
- private Class clazz; //声明一个当前类对象
- public static Logger log; //声明一个log对象
- public BaseClass(){
- //初始化当前类对象
- clazz=this.getClass(); //通过反射的方式动态获取不同类需要操作的slf4j日记
- log= LoggerFactory.getLogger(clazz); //初始化log对象
- }
- }
-
- @RestController
- @RequestMapping("/books")
- public class BookController extends BaseClass {
- //创建记录日记对象
-
- @GetMapping
- public String getById(){
- System.out.println("fjdlfgjl");
- // 记录日记
- log.debug("debug....");//日记级别,默认用的info级别,目前看到是info以上级别,所以debug是看不到的,可以调级别
- log.info("info.....");
- log.warn("warn.....");
- log.error("error.....");
- return "springboot log";
- }
- }
2. 设置日志输出级别,使用配置文件方式
① DEBUG:程序员调试代码使用
② INFO:记录运维过程数据
③ WARN:记录运维过程报警数据
④ ERROR:记录错误堆栈信息
- # ②设置分组级别方式,对某个组设置日记级别
- logging:
- group:
- ebank: com.atguigu.controller,com.atguigu.service #代表设置一个组
- iservice: com.aliyun
- level:
- root: info
- ebank: warn # 使用分组,对某个组设置日记级别
-
- ##①设置包级别方式
- #logging:
- # level:
- # root: info
- # # #①设置某个包的日记级别
- # com.atguigu.controller: debug
1. 导入lombok依赖
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </dependency>
2. 添加注解
- @Slf4j
- @RestController
- @RequestMapping("/books")
- public class BookController{
- @GetMapping
- public String getById(){
- System.out.println("fjdlfgjl");
- log.debug("debug....");
- log.info("info.....");
- log.warn("warn.....");
- log.error("error....");
- return "springboot logger";
- }
- }
PID:进程ID,用于表明当前操作所处的进程,当多服务同时记录日志时,
该值可用于协助程序员调试程序。
所属类/接口名:当前显示信息为SpringBoot重写后的信息,
名称过长时,简化包名书写为首字母,甚至直接删除。
设置日志输出格式,看自己需求设置
- logging:
- pattern:
- console: "%d - %m%n"
- #%d:日期 %m:消息 %n:换行
.....
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。