mac/linux下java项目使用本机自带ssh和scp命令,自动复制上传并部署的脚本
环境说明
开发机: mac 系统
开发服务器: ubuntu 20.4
开发服务器目录config
/www/websites/my: 服务器上
项目
目录
/www/websites/my/backup: 服务器上项目打包文件备份存储
目录
/www/websites/my/config: 服务器上项目配置
文件目录
/www/websites/my/logs: 服务器上项目日志
文件目录
/www/websites/my/static: 服务器上项目静态
文件目录
自动脚本
文件另存为deploy.dev.sh
,设置可执行权限chmod +x deploy.dev.sh
,使用时候执行./deploy.dev.sh
即可
需要你配置如下几个
编译后的文件名
远程服务器的部署目录
远程服务器的项目文件名(替换文件名称)
服务器ip
服务器账号
服务器密码
执行启动脚本 处,替换你需要的jar 参数
#!/usr/bin/env zsh
#自动打包上传到开发服务器脚本
# fox#部署环境
DEPLAY_ENV=dev
#当前脚本保存在项目/cicd目录下,所有要返回到项目根目录
DIR=$(cd $(dirname $0); pwd)/../
#进入项目根目录
cd $DIR
#项目
PROJECT=$(pwd)
#编译后文件名
BUILD_FILE=fox.jar
#编译目录
BUILD_PANTH=${PROJECT}/build/libs
#完整编辑绝对路径
BUILD_PANTH_FILE=${BUILD_PANTH}/${BUILD_FILE}
#远程服务器的部署目录
DEPLAY_PANTH=/www/websites/
#远程服务器的项目文件名(替换文件名称)
DEPLAY_FILE=fox.jar
#
VERSION=1.0.0
#服务器ip
SERVER_HOST=服务器ip
#服务器ssh端口
SERVER_PORT=22
#服务器账号
SERVER_USER=root
#服务器密码
SERVER_PASSWORD=123456
#时间戳
date=$(date +%Y%m%d%H%M%S)#版本号
if [ -z "$VERSION" ]; thenecho "版本号不能为空"exit 1fiif [ "$VERSION"x = "0.0.0"x ]; thenecho "版本号不能为 0.0.0"exit 1fi# 判断项目模块是否存在
if [ ! -d "${PROJECT}" ];thenecho ${PROJECT}echo "项目不存在"exit 1
fi#编译命令
./gradlew build -x test# 检测编译后文件
if [ ! -f "${BUILD_PANTH_FILE}" ]; thenecho "$BUILD_PANTH_FILE 编译后文件不存在"exit 1
fi#登陆服务器
echo "复制文件到远程服务器"
expect <<EOF#设置超时set timeout 200#复制spawn scp -r $BUILD_PANTH_FILE $SERVER_USER@$SERVER_HOST:$DEPLAY_PANTH/backup/$BUILD_FILE-$dateexpect {"yes/no" { send "yes\n";exp_continue }#密码"*assword*" { send "$SERVER_PASSWORD\n" }}expect "]#" { send "exit\n" } expect eof
EOF
echo "复制文件到远程服务器:成功"
echo "远程服务器,启动程序"
expect <<EOFset timeout 30#登陆spawn ssh $SERVER_USER@$SERVER_HOSTexpect {"yes/no" { send "yes\n";exp_continue }#密码"*assword*" { send "$SERVER_PASSWORD\n" }}#列表expect "]#" { send "/usr/bin/ls -l $DEPLAY_PANTH/backup/$BUILD_FILE-$date\n" }#替换原文件expect "]#" { send "/usr/bin/cp -rf $DEPLAY_PANTH/backup/$BUILD_FILE-$date $DEPLAY_PANTH/$DEPLAY_FILE\n" }#执行启动脚本#expect "]#" { send "/usr/bin/bash $DEPLAY_PANTH/run.sh restart \n" }expect "]#" { send "/usr/bin/cd $DEPLAY_PANTH && nohup java -Xms128M -Xmx1024m -jar $DEPLAY_FILE.jar & \n" }#推出expect "]#" { send "exit\n\n" } expect eof
EOF
echo "远程服务器,启动程序:启动成功"echo "操作成功"
自动打包上传部署脚本 可以配合 java jar 启动脚本 使用
mac/linux下java项目使用本机自带ssh和scp命令,自动复制上传并部署的脚本相关推荐
- Linux使用scp命令远程复制/上传文件
远程拷贝服务器文件使用scp命令 例如: A:1.1.1.1 B:2.2.2.2 现在我们身处B机器上,如果想把A的home/data 复制到B的 /home/newdata里,则: scp root ...
- Win10下SCP命令免密码上传、下载工程师服务器上的文件
[1]本地win10操作步骤 1)在本地win10系统打开命令行工具(win+r) 2)执行命令:ssh-keygen -t rsa 3)提示输入保存路径,直接回车,默认即可. 4)提示输入密码,因为 ...
- Win10下用SCP命令免密码上传、下载阿里云服务器上的文件
需求: 需要定时把阿里云服务器上的数据备份文件下载到本地备份,所以需要在本地win10系统上定时执行从阿里云服务器上下载备份文件的操作. 环境和工具 本地win10系统及自带的SCP工具,工具目录:C ...
- Linux java集成安装环境,Linux下Java环境安装
本节主要讲解Linux(Centos 6.5)下Java环境的安装 1. 卸载机器上默认安装的JDK 在Linux环境下一般会默认安装jdk,为了自己项目的开发部署,一般情况要重新装jdk,而且自己装 ...
- Linux下JAVA WEB服务器的搭建一(JDK\MYSQL\TOMCAT)
转自:Linux下JAVA WEB服务器的搭建一(JDK\MYSQL\TOMCAT),更优阅读体验http://www.kongzid.com/ 目录 1.JDK1.8的安装配置 1.1 环境检查 1 ...
- linux java 工具_Linux运维知识之linux下java版本管理工具jenv使用介绍
本文主要向大家介绍了Linux运维知识之linux下java版本管理工具jenv使用介绍,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 不同的项目使用的java版本不同,每次切 ...
- Linux下Tomcat项目启动报错
Linux下Tomcat项目启动报错 org.springframework.beans.factory.CannotLoadBeanClassException: Error loading cla ...
- linux 命令行 迅雷替代,Mac/Linux下迅雷替代方案
还记得我两年前写的<DIY了家用NAS>吗?现在又带来新的升级啦.当初的NAS最多能使用Transmission来进行BT下载,那时就在想,如果能下载普通的http资源就好了.再进一步,有 ...
- Linux下Java程序中文乱码问题研究
Linux下Java程序中文乱码问题研究 摘 要:在一个项目的开发中,我用linux内核源代码和busybox源代码自己编译打造的操作系统mylinux 1.0 ,服务器是我用java语言自己编写的 ...
- Linux下Java Font 中文字体不显示
为什么80%的码农都做不了架构师?>>> linux系统中jre不支持字体解决方法 Linux下Java中文字体不显示 https://blog.csdn.net/kenera ...
最新文章
- C# WinForm源码收集
- tensorflow源码编译教程_极简入门TensorFlow C++源码
- 快速恢复Word、Excel的默认初始设置
- 前端2018年12月9日 前端开发路上的小白心得--励志当个领路人
- 大白话5分钟带你走进人工智能-第十九节逻辑回归之优化点(4)
- python pip的配置
- 排列组合-生成集合的所有子集
- 魔百盒UNT403A UNT413A 卡刷精简固件-芯片S905L3
- 疯狂讲义java_《疯狂Java讲义》 1-概述
- pwm脉宽调制c语言程序,MCS-51系列单片机C语言编程PWM脉宽调制器程序模板
- android实现购物车效果,Android实现加入购物车动画
- PostgreSQL 生成随机数字、字符串、日期、验证码以及 UUID
- java共享充电宝管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
- 大数据破获网售假耐克案
- 有苦有乐的算法 --- 基数排序
- 2021年N1叉车司机证考试及N1叉车司机模拟考试题库
- 基于机器学习组合模型的个人信用评估
- 计算机cad比例尺1 150,cad比例尺1:100是什么意思-时间财富网
- 读《陪孩子终身成长》后记
- 独立级联(Independent Cascade)模型的原理及代码实现