当前位置: 首页 > news >正文

linux发布程序常用脚本

0,前言

在github上添加ssh-key,路径:https://github.com/settings/keys , 点击【New SSH key】复制进去即可。

在github上添加好以后,在本地电脑上执行: ssh -T git@github.com 即可看到是否添加成功。这一步一定要执行,不然不能正常拉取代码。

1,从git拉取JAVA代码,并打包后移到对应的位置

#!/bin/bash

# 文件名: install.sh 

codePath=/home/myproject_code
jarPath=myproject-biz/myproject-biz-provider/target
targetPath=/home/rundir/jar
targetFile=myproject-biz-provider.jar
branchName=master


cd $codePath
git checkout $branchName
git pull

# 如果目标文件夹不存在,则创建

mkdir -p $targetPath


mvn clean install -DskipTests

# 如果旧文件存在,先删除旧文件

if [ -e $targetPath/$targetFile ]; then
    rm -rf $targetPath/$targetFile 
fi
cp $codePath/$jarPath/$targetFile $targetPath/

2,在目标机器上发布新jar并运行

#!/bin/bash
# 文件名: restart.sh 
# 说明: myproject-java的启动脚本,备份旧jar包,重命名目标文件并重启。

JVM_OPTS="-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Xms128m -Xmx128m -Xmn32m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC"

# 打包后的jar包的原文件名字
originJar=myproject-java-biz-provider.jar
# 重命名jar文件,以区分原文件与正式使用的文件
targetJar=myproject-java-prod.jar
activeEnv=prod
# 用于备份旧文件时,重命名时添加文件名后缀
ct=$(date '+%m%d%H%M')
currDir=$(pwd)
# jvm启动参数
JVM_OPTS="-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Xms128m -Xmx128m -Xmn32m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC"

# 杀死进程
ps -ef | grep -i $targetJar | grep -v grep | awk '{print $2}'|xargs -i  kill -9 {}
sleep 2
printf "Finish kill, sleep, start run\n"


# 重命名jar文件,并移到备份文件夹中
mkdir -p bakjar
if [ -e $originJar ]; then
    if [ -e $targetJar ]; then
        mv $targetJar bakjar/$targetJar$ct
    fi
    mv $originJar $targetJar
    sleep 1
fi


nohup java -server -jar $currDir/$targetJar --spring.profiles.active=$activeEnv -Dspring.config.location=application-$activeEnv.yaml 1> /data/logs/myproject-java/out.log  2> stderr.log &

printf "\n\n\n"
jps |grep -v Jps
printf "\n\n\n"
BUILD_ID=dontKillMe

3,从github拉取golang代码并打包成linux可执行文件,并拷到目标文件夹(拷之前,删除旧的文件夹)

#!/bin/bash

# 文件名: pack-code.sh 
# 说明: my-go-project 的编译打包脚本。打包后,拷到目标目录。

codePath=/home/datum/code/my-go-project
targetPath=/home/rundir/jar
targetFile=my-go-project.linux
branchName=master


cd $codePath
git checkout $branchName
git pull


go build -o $targetFile

if [ -e $targetPath/$targetFile ]; then
    rm -rf $targetPath/$targetFile 
fi
cp $codePath/$jarPath/$targetFile $targetPath/


pwd
printf "\nfinish pack $targetFile \n\ntarget dir files:\n"
ls -l $targetPath

4,拉取go编译好的程序,重命名并启动

#!/bin/bash

# 文件名: deploy.sh 
# 说明: mygoproject 的程序拉取,步骤:备份旧文件,重命名新文件,杀掉旧进程,启动新程序。


currDir=$(pwd)
orginalProgram=mygoproject.linux
targetFile=mygoproject-prod.linux
configFile=./application.yaml
programUrl=https://download.mydomain.com/file/mygoproject.linux
bakPath=bakfile
# 用于备份旧文件时,重命名时添加文件名后缀
ct=$(date '+%m%d%H%M%S')

# 重命名jar文件,并移到备份文件夹中
mkdir -p $bakPath

fileFullPath=$bakPath/$targetFile$ct 

printf "\nfileFullPath is $fileFullPath\n\n"

# 如果旧程序存在,移到备份文件夹并重命名
if [ -e $currDir/$targetFile ]; then
    printf "exist file: $targetFile\n\n"
    mv $targetFile $bakPath/$targetFile$ct
fi
printf "param is : mv $targetFile $bakPath/$targetFile$ct  \n\n"

wget $programUrl
sleep 1
mv $orginalProgram $targetFile
chmod +x $targetFile
ps -ef | grep $targetFile | grep -v grep | awk '{print $2}' | xargs -r kill -9

nohup ./$targetFile --config-file="$configFile" 1> out.log 2>err.log &


pwd
printf "\nfinish restart $targetFile \n\ntarget dir files:\n"
ls -l $targetPath


 

相关文章:

  • Skl-Videolingo-v2.0(VideoLingo):打破语言壁垒的下一代视频本地化工具
  • 云安全入门
  • spring-ai-alibaba第二章ollama集成EmbeddingModel
  • pyexcelerate在写入Excel时为何效率高?
  • Kotlin 协程官方文档知识汇总(二)
  • 详解隔离级别(4种),分别用表格展示问题出现的过程及解决办法
  • Geotools结合SLD实现矢量中文标注下的乱码和可用字体解析
  • 基于JavaWeb的二手图书交易系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 【云原生】Kubernetes CEL 速查表
  • 【Git “fetch“ 命令详解】
  • Spring Boot中事务状态(TransactionStatus)的核心信息及常见应用场景
  • Android Photo Picker 深入解析与实战指南
  • 【视觉与语言模型参数解耦】为什么?方案?
  • Qt之共享内存类QSharedMemory的使用及实现原理(全)
  • 3.第二阶段x64游戏实战-分析人物移动实现人物加速
  • 网络安全等级保护测评
  • LeetCode 解题思路 29(Hot 100)
  • Qt 信号量使用方法
  • trae.ai 编辑器:前端开发者的智能效率革命
  • MySQL的不同字符集的排序规则
  • 五一当天1372对新人在沪喜结连理,涉外婚姻登记全市铺开
  • 礼来一季度净利增近三成,明星GLP-1药物替尔泊肽贡献近半收入
  • 国际著名学者Charles M. Lieber全职受聘清华深圳国际研究生院
  • 中央网信办:重点整治违规AI产品、利用AI制作发布谣言等突出问题
  • 张炜琳已任三明市委常委、宣传部部长
  • “人工智能是年轻的事业,也是年轻人的事业”,沪上高校师生畅谈感想