spring boot 在linux服务器上实现一键打包发布

之前的打包发布方式都是自己电脑上打包好,然后上传linux服务器,再进行发布,比较麻烦,想着写一个一键发布脚本。
1 安装 subversion
使用yum install subversion 非常简单,若要离线安装,自己百度下离线安装svn,都是有详细教程的
2 检出自己需要的代码
下载代码同样非常简单,自己先建一个目录makdir 文件夹名字
然后svn checkout XXXXX (XXXX为你自己项目svn地址)
3 安装maven
先去官网下载一个最新的压缩包,我用的是apache-maven-3.8.1-bin.tar.gz下载后先建一个文件夹,然后将压缩包放到改文件夹下,进行解压

tar -zxvf apache-maven-3.8.1-bin.tar.gz

然后配置下本地仓库

cd conf #找到settings.xml 文件,修改地址
vim settings.xml


地址自己可以随便建一个。配置maven环境变量,编辑:vi /etc/profile 文件,翻到最后一行加上 export MAVEN_HOME=/usr/local/apache-maven-3.8.1 export PATH= P A T H : PATH: PATH:MAVEN_HOME/bin 保存退出

vi /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.8.1
export PATH=$PATH:$MAVEN_HOME/bin

重新加载一下,source /etc/profile 使新增配置生效,如下:

source /etc/profile

这样就安装好maven了,测试下

mvn -v

在这里插入图片描述
这样就说明安装好了
4 打包发布
由于maven比较大,我是将本地的直接上传到了服务器上面的仓库中,
打包命令 mvn clean install -Psit
将打好的包放到你要发布的目录下,启动即可
5 一键发布脚本
一键发布脚本是有两个脚本组成的,即打包脚本加发布脚本
打包脚本:

#!/bin/sh
#进入到你代码的目录
cd /usr/.maven/xxxxxxx/xxxxxx/
#svn更新开始
echo '=================SVN更新开始==============='
svn update
#svn更新结束
echo '=================SVN更新结束==============='
#删除旧包
rm -rf target
#开始打包
echo '=================开始打包==============='
mvn clean install -Psit
echo '=================开始结束==============='
#成功后,复制jar包到运行目录
cd target
mv xxxxxxx.jar /usr/credit

发布脚本:

#!/bin/bash
APP_NAME=xxxxxxx.jar
servicedir=/usr/credit
curtime=$(date "+%Y%m%d%H%M%S")
LOG_OPTS=/usr/credit/log/log.log
#使用说明,用来提示输入参数
usage() {
  echo "Usage: sh 脚本名.sh [start|stop|restart|status]"
  exit 1
}

#检查程序是否在运行
is_exist(){
	pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
	#如果不存在返回1,存在返回0
	if [ -z "${pid}" ]; then
		return 1
	else
		return 0
	fi
}

#启动方法
start(){
	is_exist
	if [ $? -eq "0" ]; then
		echo "${APP_NAME} is already running. pid=${pid} ."
	else
	cp $servicedir/$APP_NAME /usr/credit/bak/xxxxxxxxxx-$curtime.jar
	cp $servicedir/log/log.log $servicedir/log/log_$curtime.log
	echo > $servicedir/log/log.log
	nohup java -jar $JAVA_OPTS  $servicedir/$APP_NAME >$servicedir/log/log.log 10M 2>&1 &
	while [ -f $LOG_OPTS ]
   	 do	
        	result=`grep "Started" $LOG_OPTS`
		resultError=`grep "failed" $LOG_OPTS`
       		 if [[ "$result" != "" ]]
       		 then
            		echo "$(date "+%Y-%m-%d %H:%M:%S") 启动成功"
            		break
        	else 
			if [[ "$resultError" != "" ]]
			then
				echo "$(date "+%Y-%m-%d %H:%M:%S") 启动失败,错误信息请查看日志/usr/credit/log/log.log"
				break
			else
            			echo "$(date "+%Y-%m-%d %H:%M:%S") 启动中,请稍后...."
			fi
            	sleep 10s
        	fi
    	done
	#echo "${APP_NAME} start success"
	fi
}

#停止方法
stop(){
	is_exist
	if [ $? -eq "0" ]; then
		kill -9 $pid
	else
		echo "${APP_NAME} is not running"
	fi
}

#输出运行状态
status(){
	is_exist
	if [ $? -eq "0" ]; then
		echo "${APP_NAME} is running. Pid is ${pid}"
	else
		echo "${APP_NAME} is NOT running."
	fi
}

#重启
restart(){
	stop
	start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
	"start")
	start
;;
	"stop")
	stop
;;
	"status")
	status
;;
	"restart")
	restart
;;
*)
usage
;;
esac

将两个脚本整合成一个

#!/bin/bash
sh /usr/credit/.script/pkgCredit.sh
sh /usr/credit/.script/runCredit.sh restart

再自定义一个命令

vi /root/.bashrc

alias 你自定的命令=系统原来的命令

alias deployCredit='/usr/credit/relCredit.sh'

输入source .bashrc
命令就会启动,以后输入你自定义的命令就是执行系统本来的命令啦。

source .bashrc

这样就都配置完了,不管再啥目录直接敲命令deployCredit 就可以一键打包发布了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值