编码技巧——在项目中使用Alibaba Cloud Toolkit远程部署

背景

在新公司项目开发,当前项目为自建项目,意思是从开发到运维都需要自己负责,远程的服务器也是自己搭建的win操作系统;

之前在大厂工作时,一般提交代码之后,CICD流水线会自动的执行最新代码的拉取、构建打包、启动;

搜了下发现阿里提供了IDEA下的插件,可用于轻量级的远程服务部署,准备自己搭建配置下试试;由于没有运维经验,也没搞过cmd脚本,过程比较曲折,最终也算是顺利完成配置和使用,这里记录下完整的过程;

关于这款插件的介绍,可参考:如何在IntelliJ IDEA中安装和配置Cloud Toolkit_云插件-阿里云帮助中心,诸如:"在IntelliJ IDEA中安装和配置Cloud Toolkit后,您可以将本地应用快速部署到阿里云ECS、EDAS、容器服务Kubernetes版和任意服务器中去,还可以使用Cloud Toolkit提供的Arthas诊断、文件或文件夹上传、内置Terminal等功能。"

步骤

(1)远程服务配置SSH Server

由于公司远程机器安装的系统是Windows Server 2016版,因此没有SSH Server扩展程序,因此需要自己离线安装OpenSSH;

Github上有下载地址,下载压缩包版本:Releases · PowerShell/Win32-OpenSSH · GitHub

把压缩包中的文件解压后复制到 C:\Program Files\OpenSSH目录(没有就新建);

然后管理员身份打开PowerShell,在当前目录中执行:

bash 复制代码
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

安装安成后,打开Powershell,启动SSH服务:

可以通过命令或win+R services.msc设置SSH Server为自动开启,保证一直开着SSH服务;

(2)远程服务器安装命令工具

因为Maven打包格式设置的是.tar格式,需要解压文件,而老旧的Windows Server 2016系统没有tar工具,所以也需要自己安装;

下载 tar-1.13-1-bin.exe 文件;下载地址:Tar for Windows

安装目录:

安装后配置环境变量,保证cmd窗口可以直接运行,类似配置JDK;

执行 tar --help 就能知道是否配置完成:

(3)远程部署脚本编写

端口号:19898

部署位置:C:/deploy

需要完成:解压、关闭正在运行的服务、启动服务的流程,脚本代码如下:

vbscript 复制代码
chcp 65001
dir
echo unzip
tar -xf yoaf-server-boot-1.1.2.tar
echo unzip success!

@echo off
SET port=19898
for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^| findstr %port%`) do (
	if [%%d] EQU [LISTENING] (
		set pid=%%e
	)
)
echo close server : %port%  %pid%
if not "%pid%" == "" taskkill /f /pid %pid%
 
echo restart : %port%
PING 127.1 -n 5 >nul
java -jar -Dfile.encoding=UTF-8 yoaf-server-boot-1.1.2.jar
 
exit

对应的vbs脚本:

vbscript 复制代码
set ws=WScript.CreateObject("WScript.Shell") 
ws.Run "C:\deploy\deploy.bat /start",0

独立的关闭服务的脚本:

vbscript 复制代码
@echo off
SET port=19898
for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^| findstr %port%`) do (
	if [%%d] EQU [LISTENING] (
		set pid=%%e
	)
)
echo close server: %port%  %pid%
if not "%pid%" == "" taskkill /f /pid %pid%

exit

(4)本地IDE安装和配置插件

添加远程服务器节点

配置输出文件地址

配置输出文件前的Maven打包命令

命令:clean package -Dmaven.test.skip

install命令仅更新到本地仓库

deploy命令会更新到远程仓库

然后,配置远程目标地址和部署脚本;

远程目录固定:C:\deploy

远程脚本已经写好,按照示例配置:

C:\deploy\win_deploy.bat

(5)执行示例

参考:

如何在IntelliJ IDEA中安装和配置Cloud Toolkit_云插件-阿里云帮助中心

Alibaba Cloud Toolkit一键上云神器

Windows下在线与离线安装OpenSSH - 知乎

Releases · PowerShell/Win32-OpenSSH · GitHub

Win10 cmd如何使用tar命令压缩和解压文件夹_windows压缩tar-CSDN博客

windows下bat脚本启动springboot项目jar包-华为云开发者联盟

相关推荐
w_31234544 小时前
自定义一个maven骨架 | 最佳实践
java·maven·intellij-idea
嗨小陈7 小时前
(免费源码)基于springboot的电影院订票系统设计与实现 计算机毕业设计 P10089
springboot·管理系统·计算机毕业设计·源代码·计算机大作业
哆啦 AI 梦10 小时前
【Maven】Maven的classpath
maven·classpath
CodeChampion10 小时前
61.基于SpringBoot + Vue实现的前后端分离-在线动漫信息平台(项目+论文)
java·vue.js·spring boot·后端·node.js·maven·idea
武子康11 小时前
Java-33 深入浅出 Spring - FactoryBean 和 BeanFactory BeanPostProcessor
java·开发语言·后端·spring·springboot·springcloud
新手小袁_J15 小时前
JDK11下载安装和配置超详细过程
java·spring cloud·jdk·maven·mybatis·jdk11
程序猿进阶16 小时前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
旭久18 小时前
SpringBoot的Thymeleaf做一个可自定义合并td的pdf表格
pdf·html·springboot
莫名其妙小饼干1 天前
网上球鞋竞拍系统|Java|SSM|VUE| 前后端分离
java·开发语言·maven·mssql
.生产的驴1 天前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven