linux发布程序常用脚本

1,前言

在github上添加ssh-key,

本地生成公私钥: ssh-keygen -t rsa -b 4096 -C "my remark test"

路径:https://github.com/settings/keys , 点击【New SSH key】,把 /root/.ssh 目录下的id_rsa.pub中的内容,  复制后,粘贴到 【Key】中即可。

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

2,从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/

3,在目标机器上发布新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

4,从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

5,拉取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


 

6,ubuntu24必装命令

telnet, plocate, lrzsz, zip, unzip, gcc, g++, iputils-ping , net-tools , git , dos2unix

执行:

apt update && apt -y install telnet plocate lrzsz zip unzip gcc g++ iputils-ping net-tools git dos2unix

mysql8依赖: 

apt -y install needrestart

apt -y install mecab-ipadic mecab-utils mecab-ipadic-utf8 libnuma1 libmecab2 psmisc 

7,关于minio部署 

参考文档:

Deploy MinIO: Single-Node Single-Drive — MinIO Object Storage for Linux

 下载:  

wget https://dl.min.io/server/minio/release/linux-amd64/minio

添加【公开读,私有写】:

{
    "Version": "2012-10-17",
    "Statement": [{
            "Effect": "Allow",
            "Principal": {
                "AWS": ["*"]
            },
            "Action": ["s3:GetObject"],
            "Resource": ["arn:aws:s3:::pubread/*"]
        }, {
            "Effect": "Deny",
            "Principal": {
                "AWS": ["*"]
            },
            "Action": ["s3:PutObject"],
            "Resource": ["arn:aws:s3:::pubread/*"]
        }
    ]
}

访问:  域名+bucket名称+路径名+文件名

minio启动脚本

#!/bin/bash

# 文件名: runminio.sh
# minio启动文件。

# 数据目录
dataPath=/home/mydata/appdata/minio
currDir=$(pwd)
ct=$(date '+%m%d%H%M')
appName=minio


if [ ! -d $dataPath ]; then
    mkdir -p $dataPath
    cd $dataPath
    mkdir data conf log
    cd $currDir
    sleep 1
fi


export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=MyPassword123


# 如果旧进程存在,则先kill
#ps -ef | grep -i $appName | grep -v grep | awk '{print $2}'|xargs -i  kill -9 {}
sleep 2
nohup ./minio server $dataPath/data  --config-dir $dataPath/conf --console-address ":13127" --address ":13128" > out-minio.log 2>&1 &

printf "finish start $appName"
ps -ef | grep -i $appName | grep -v grep
 

minio端口通过caddy开放出来 


https://myminio.my-domain:13131 {
	handle_path /* {
		reverse_proxy * http://127.0.0.1:13127  {
			header_down -'proxy-connection'
			flush_interval 300ms
			transport http {
				dial_timeout 10s
				keepalive 10m
			}
		}
	}
}

https://myminio.my-domain:13132 {
	handle_path /* {
		reverse_proxy * http://127.0.0.1:13128  {
			header_down -'proxy-connection'
			flush_interval 300ms
			transport http {
				dial_timeout 10s
				keepalive 10m
			}
		}
	}
}

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值