项目部署相关
打jar包,后台部署项目
一、后端jar包部署
1、idea打jar包
1)方式一:使用maven打包(最常用、最方便)
如下图,依次点击项目生命周期的clean–>package
完成后,即可在项目包含启动类的模块下、target包中找到jar包
2)方式二:不使用maven打jar包
在项目结构project stucture中的Artifacts中,添加jar–>from modules;选择要打包的模块(带有启动类的模块),选中启动类
这里选中MANIFEST.MF路径时,不能选到src\main\java下,不然打出的jar包启动会报“jar中没有主清单属性”;要选到src目录下
配置好以后,如下图,记住地址等会jar包就放在这个地址下
在build–>build artifact打包刚才设置的jar
完成后,在刚才配置的地址就可以看到目标jar包了
2、windos本地测试jar包是否可以正常启动
1)普通启动
在jar包所在的目录,启动cmd;
输入项目启动命令(需要配置java变量全局可用):
java -jar xxx.jar
启动成功
2)后台启动jar包
普通启动,关闭控制台后,项目就自动关闭了;
如何使得项目,即使关闭控制台、项目仍然可以运行呢?
很简单,改一下启动命令就可以,采用后台启动的方式启动项目(这个启动方式,也适用启动要部署在linux服务器的项目)
后台启动java项目的命令:
nohup java -jar xxx.jar &
nohup是linux命令,不是Windows命令,windows环境无法使用nohup后台启动jar包,会报:
‘nohup’ 不是内部或外部命令,也不是可运行的程序
二、部署相关问题汇总
1、windows环境启动项目报端口被占用
1)先排查占用端口的服务pid
cmd输入
netstat -ano | findstr "端口号"
eg:netstat -ano | findstr "8088"
2)拿pid查对应的服务是什么
方法一:cmd输入
tasklist | findstr pid
方法二:通过“任务管理器” -> “服务”查看
3)确定服务是否可关闭,执行关闭
方法一:根据进程号关闭服务
cmd输入
taskkill /T /F /PID pid
方法二:根据服务名关闭服务
taskkill /f /t /im "java.exe"
方法三:通过任务管理器 -> 服务 -> (右键)关闭
三、SpringBoot配置环境变量
1、场景
开发和生产环境,有很多参数不一样,那些参数值在配置文件中的参数,最好分开配置,否则每次上线都需要改来改去、很麻烦,也容易出错。
springboot可以通过环境变量的配置,方便的切换配置文件。
2、配置
1)springboot配置文件加载顺序
第一步,加载类路径->config文件夹->子文件夹(如果有)->application-{profile}.properties/yml
在idea代码,就是resources下的config的子文件夹下的application-{profile}.properties/yml
第二步,加载类路径->config文件夹->application-{profile}.properties/yml
在idea代码,就是resources下的config的application-{profile}.properties/yml
第三步,加载类路径->application-{profile}.properties/yml
在idea代码,就是resources下的application-{profile}.properties/yml
同路径下,properties文件优先于yml文件;
application-{profile}文件优先于application文件。
对以上做一个总结,总体如下图:
2)环境配置的本质
通过1)中springboot配置文件加载顺序的说明,可以知道,生产、开发配置文件(一般写作application-prod,application-dev),只要放在recourse下,springboot就都会加载到,区别只是加载顺序不同;
而我们的目标,是让springboot按照我们的要求,加载对应的配置文件(同时不加载未配置的文件)
即,所谓配置环境变量profile,就是告诉spring启动的时候,以哪配置个文件的数据为准。
补充:配置文件一般命名为application-{profile},这个{profile}一般以dev、test、prod分别代表开发、测试、生产,但是如果你愿意,把profile命名为local、abc、xxx也可以,但建议还是做到见名知义。
3)实际配置(示例)
在application.yml/properties,配置环境变量(方式之一):
# 配置环境变量
spring:
profiles:
active: dev
application里边,还可以放一些生产、开发环境都一样的变量,比如
com:
shop:
# 项目名词
name: xx公司-商城系统
# 版本号
version: 1.0.0
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
captchaType: math
生产(application-prod)、测试(application-test)、开发(application-test)配置,就是普通的参数配置,比如数据源、redis、七牛云参数等等。
4)启动
做好上面的环境变量配置,idea启动就会自动按application环境变量配置加载文件了;
那要放到测试环境部署的jar包,打包前还要改环境变量配置吗?
不需要,只要设置好jar包启动命令即可:
# 启动jar包命令,指定配置文件
nohup java -jar xxx.jar --spring.profiles.active=test &
同理,生产上线,也是提前设计好启动脚本即可,同一个jar包就可以在不同环境启动、并启用对应的配置参数值。
更多推荐
所有评论(0)