Linux半自动化发布

本文档详细介绍了如何使用Windows脚本upload.bat进行本地文件复制并上传到Linux服务器,涉及WinSCP工具的使用,以及如何通过PuTTY连接并执行远程操作,包括上传文件和重启服务。同时展示了run.sh脚本的执行流程和关键步骤。
摘要由CSDN通过智能技术生成

windows端脚本,使用到了winscp和putty

upload.bat

@ECHO off
SETLOCAL EnableDelayedExpansion

SET winscpPath="D:\Program Files (x86)\WinSCP\WinSCP"
SET dest=%cd%
SET src="E:\workspace\PlyTKBackend\target\subject-0.0.1-SNAPSHOT.jar"

SET srcName="subject-0.0.1-SNAPSHOT.jar"
SET destName="subject-0.0.1-SNAPSHOT.jar"

IF EXIST %destName% (
	ECHO "删除"%destName%
	DEL /f /s /q %destName%
)
IF NOT EXIST %src% (
	ECHO %src%"目标文件不存在"
	GOTO END
)

ECHO "复制"%src%"文件到"%dest%
COPY %src% %dest%

ECHO "修改文件名为"%destName%
REN %srcName% %destName%

FOR /r %cd% %%i IN (*.txt) do (
	ECHO %%i
	%winscpPath% /console /script=%%i
)

:END
PAUSE

每台linux服务器增加一个上传信息

echo "连接远程服务器"

OPEN sftp://root:密码@ip

echo "进入目录"
CD /root/subject/net

echo "上传文件"
PUT E:\workspace\faban\jdevapi\subject-0.0.1-SNAPSHOT.jar

CLOSE
EXIT

执行重启服务

@ECHO off
SET puttyPath="D:\Program Files\PuTTY\plink"

ECHO "重启49.233.252.61同步NET"
SET pw="密码"
%puttyPath% -l root -pw %pw% -P 22 -ssh -no-antispoof root@ip cd /root/subject/net;sh run.sh restart

PAUSE

服务端 run.sh脚本

单机

#!/bin/bash
#nohup java -jar subject-0.0.1-com.jar > /dev/null 2>&1 &
#!/bin/bash
#这里可替换为jar包名字
APP_NAME=ply-sports-backend-1.0.0-SNAPSHOT.jar
ARGS=--spring.config.location=/root/backend_com/conf/application.yml
#根据实际情况修改参数
JVM="-server -Xms2g -Xmx2g -Xmn512m -XX:PermSize=128M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -Xss256k  -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -Xloggc:/logs/xxx-server/GC/xxx-gc.log"
#APPFILE_PATH="-Dspring.config.location=/usr/local/config/application.properties"
#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status|log|backup]"
    exit 1
}
#检查程序是否在运行
is_exist(){
    pid=`ps -ef|grep "$APP_NAME $ARGS" |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
        nohup java -jar $APP_NAME $ARGS > /dev/null 2>&1 &
        # 后台启动jar包,且控制环境变量,根据实际情况修改吧。
        #nohup java -jar $APP_NAME --spring.profiles.active=net > /dev/null 2>&1 &
    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
}

#日志
log(){
        # 输出实时日志
    tail -n 100 -f /root/backend_com/logs/app.log
}

#备份
backup(){
        #根据需求自定义备份文件路径。
    BACKUP_PATH=/root/backend_com/backup/
        #获取当前时间作为备份文件名
    BACKUP_DATE=`date +"%Y%m%d(%H:%M:%S)"`
    echo 'backup file ->'$BACKUP_PATH$BACKUP_DATE'.jar'
        #备份当前jar包
    cp -r /root/backend_com/$APP_NAME  $BACKUP_PATH$BACKUP_DATE'.jar'
}

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

服务器run.sh docker

#!/bin/dash
#这里可替换
APP_NAME=org-sync-server
#使用说明,用来提示输入参数
usage(){
	echo "Usage: sh 执行脚本.sh [build|start|status|restart|stop]"
	exit 1
}
#停止方法
stop(){
	docker stop $APP_NAME || true
}
#重启动方法
restart(){
    stop
	start
}
#启动方法
start(){
	docker start $APP_NAME || true
}
delete(){
	docker rm $APP_NAME || true
	docker rmi $APP_NAME || true
}
run(){
	docker run -d --network=host -v /projects/prd/org-sync-server/logs:/logs --restart on-failure:5 --name $APP_NAME $APP_NAME:latest
}
#编译镜像并启动
build(){
	stop
	delete
	docker build -f jar/Dockerfile -t $APP_NAME:latest ./jar/
	run
}
#状态
status(){
	docker ps -q -f "name=${APP_NAME}"
}
#备份
backup(){
	#根据需求自定义备份文件路径。
	BACKUP_PATH=backup/
	mkdir -p $BACKUP_PATH
	#获取当前时间作为备份文件名
	BACKUP_DATE=`date +"%Y%m%d(%H:%M:%S)"`
	#备份当前jar包
	IDX=1
	for find_key in `find jar -type f -name "*.jar"`
	do
		echo 'backup file => '$find_key
		cp -r $find_key $BACKUP_PATH$BACKUP_DATE'_'$IDX'.jar'
		IDX=$(($IDX + 1))
	done
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值