手动部署
部署步骤
第一步: 通过IDEA自带的Maven面板的package指令将SpringBoot项目打成jar包并自动放在target目录下
第二步: 将jar包上传到linux服务器,可以创建一个/usr/local/app目录专门存放
第三步: 执行命令启动jar包java -jar [打包好的jar包名,注意后缀]
,确保8080和3306端口是开放的
.jar.original
用来给别的项目用: 是普通jar包,不包含依赖.jar
文件专门用来部署: 可以直接用java -jar命令执行,包含了pom中的所有依赖- 这种方式是采用控制台霸屏的形式运行程序,一旦终端退出就无法访问
第四步: 在浏览器访问ip地址:端口/路径
使用线上程序的好处
- 不会采用控制台霸屏的形式运行程序而是将程序在后台运行
- 不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息
nohup(no hang up不挂起) Command[Arg ...][&]
: 用于不挂断地运行指定命令,退出终端不会影响程序的运行
- Command: 要执行的命令
- Arg:一些参数如可以指定输出的日志文件(相对路径和绝对路径都可以)
- &:让命令在后台运行
# 后台运行java -jar命令,并将日志输出到hello.log文件
nohup java -jar [打包好的jar包名] &> hello.log &
nohup java -jar MyRobot-0.0.1-SNAPSHOT.jar &> MyRobot.log &# 通过杀进程的方式停止SpringBoot程序
ps -ef | grep java -jar #查看进程号
kill -9 进程号
自动部署
部署步骤
编写Shell脚本(拉取代码,编译,打包,启动),为用户授予执行Shell脚本的权限,执行Shell脚本程序
- 在Linux中安装Git克隆远程仓库的项目代码到本地仓库:
git clone 仓库地址(自动生成目录)
,这样下次拉取最新代码的时候就不用指定仓库的位置了 - 安装Maven对项目编译,打包
- 使用
java -jar
命令启动项目
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================echo 停止原来运行中的工程
APP_NAME=工程名tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Stop Process...'kill -15 $tpid
fi
# 两秒后再次查询进程确保进程被杀死
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Kill Process!'kill -9 $tpid
elseecho 'Stop Success!'
fiecho 准备从Git仓库拉取最新代码
cd /usr/local/克隆到本地的项目所在的目录echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`cd targetecho 启动项目
nohup java -jar 工程名-1.0-SNAPSHOT.jar &> 工程名.log &
echo 项目启动完成
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================echo 停止原来运行中的工程
APP_NAME=hm-dianpingtpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Stop Process...'kill -15 $tpid
fi
# 两秒后再次查询进程确保进程被杀死
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Kill Process!'kill -9 $tpid
elseecho 'Stop Success!'
fiecho 准备从Git仓库拉取最新代码
cd /usr/local/dian_pingecho 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`cd targetecho 启动项目
nohup java -jar hm-dianping-1.0-SNAPSHOT.jar &> hm-dianping.log &
echo 项目启动完成
为用户授予执行Shell脚本的权限然后执行Shell脚本启动项目
# 7表示rwx三个权限都有
chmod 777 bootStart.sh
# 执行Shell脚本
./bootStart.sh
# 查看进程
ps -ef | grep hm-dianping
firewall-cmd --zone=public --add-port=12001/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports