本文主要是安利一款Alibaba的开发小插件给大家,合理使用能提高日常工作效率。
说明
插件名称:Alibaba Cloud Toolkit
作用:集成到开发工具IDEA和Eclipse中,一键发布项目到云服务器或者本地远程私有服务器上。
下面说一下实际操作步骤:
安装插件
1、在线安装:
https://yq.aliyun.com/articles/674021?spm=a2c4e.11153940.blogcont673560.10.70722708luDt3T
2、离线下载:
http://plugins.jetbrains.com/plugin/11386-alibaba-cloud-toolkit
注意版本的兼容性,不然会安装失败:
demo项目准备
我的操作过程是自己建了一个名为demo的spring boot工程。
也可以下载阿里的教程中的demo项目,然后导入到IDEA中
项目部署
1、配置Alibaba Cloud Toolkit
在idea中的tools中选择Deloy to Host进行配置
在这里插入图片描述
说明:
1、Deloy to Host部署是通过ssh连接,发布项目到远程服务器上
2、Deloyment File
选择文件部署方式:Maven Build和Upload File,如果选择Maven Build则每次都会重新打包,Upload File方式则将指定路径下打的包上传。
3、Target deployment host:选择发布项目的目标服务器
4、Deloy location:发布到服务器上的什么记录下,其实只是配置文件上传到服务器上的什么目录下。
5、Command:文件上传完毕后,执行什么命令。这一步是项目发布的核心,通过执行自定义的shell命令,优雅的发布项目。
这是阿里官网对Command的一些说明:
https://help.aliyun.com/knowledge_detail/102300.html#notes
#! /bin/shell source /etc/profile pkill -f test.jar rm -rf /home/test.log nohup java -jar /home/test.jar > /home/test.log &
使用须知
当您使用 Alibaba Cloud Toolkit 部署应用时,使用 Command 命令需注意以下几点:
1、操作系统不会自动执行 source /ect/profile 等命令来应用环境变量,需用户手动执行。
2、不管应用程序部署在什么位置,Command 会固定在 /root 目录下执行。
3、Command 命令会在固定 root 账户下执行,若需更换用户,请在脚本内切换。
4、所有路径必须为绝对路径。若为相对路径,您将无法找到标准输出的日志文件。
5、脚本中不能使用 tail -f 等不中断的命令。
通过上面的命令基本能满足日常开发,但是感觉还不够优雅。
下面是我实现的发布脚本,主要是添加了按照发布时间自动备份的功能:
cd /usr/local/project/ ##进入工作目录 mkdir bin ##创建脚本保存目录 vi start.sh ##创建脚本 ##########脚本内容如下: #!/bin/bash source /etc/profile #最新部署文件上传目录 deploy_path="/usr/local/project/" upload_path="/usr/local/project/upload/" history_path="/usr/local/project/history/" #文件备份 back(){ #判断目录是否存在,不存在就创建 if [ ! -d "$deploy_path" ]; then mkdir $deploy_path fi if [ ! -d "$upload_path" ]; then mkdir $upload_path fi if [ ! -d "$history_path" ]; then mkdir $history_path fi #判断文件是否存在,存在就开始备份 if [ -f "$upload_path$1" ];then #备份deploy_path下文件到history_path,根据日期时间命名 echo "开始备份" datetime=`date +%Y%m%d-%H%M%S` if [ -f "$deploy_path$1" ];then mv "$deploy_path$1" "$history_path$1-$datetime" fi mv $upload_path$1 $deploy_path echo "完成文件备份" fi } #启动方法 start(){ #判断${APP_NAME}文件是否存在 APP_NAME="$1"; back $APP_NAME if [ ! -f "$deploy_path$APP_NAME" ];then echo "没有找到$APP_NAME启动文件!" return fi #进程是否启动,没启动直接启动,启动了就先关闭再重启, pid=$(ps -ef | grep -v 'grep' | egrep $APP_NAME| awk '{printf $2 " "}') #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then #不存在,直接启动 nohup java $2 -jar $deploy_path$APP_NAME >>/dev/null 2>&1 & else echo "项目$1已经启动,进程pid是${pid}!" echo "现在开始关闭进程,重启$APP_NAME!" kill -9 $pid nohup java $2 -jar $deploy_path$APP_NAME >>/dev/null 2>&1 & fi } start demo-0.0.1-SNAPSHOT.jar "-Xms500m -Xmx500m"
本人也是刚学习shell脚本没多久,实现过程中可能有些不足,欢迎指点交流。
2、点击指定按钮,开始打包发布
分析过程:
1、maven打包
2、Upload:上传文件到服务器指定路径
3、Command:执行指定脚本,如果要不是不配置的话,那么仅仅只能实现文件上传功能。
4、result里面返回的执行脚本过程的echo提示信息。目前插件版本的bug,阿里的客服小哥哥说,下个版本修复。
在服务器上查看发布结果:
1、项目是否正常启动
2、多次部署项目,历史部署文件是否成功备份到/usr/local/project/history/目录下
大功告成,希望对大家所有帮助。
参考:
在 Intellij IDEA 中部署 Spring Boot / Spring Cloud 应用到阿里云
阿里官方说明文档
阿里官方产品首页
更新:
1、进行Add host操作时,出现报错,提示是需要安装OpenSSH。
可以安装提示中的页面进行处理。我直接采用了在线安装方式,脚本如下:
# Install the OpenSSH Client Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 # Install the OpenSSH Server Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # Both of these should return the following output: Path : Online : True RestartNeeded : False
– 也就是在window系统里面的PowerShell里面执行以下语句就可以了。
Add-WindowsCapability -Online -Name OpenSSH.Client0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server0.0.1.0