欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Alibaba Cloud Toolkit一键上云神器

程序员文章站 2022-07-12 08:12:11
...

在中小公司中,有一个痛点,项目开发完毕需要部署到服务器上,传统的做法比较麻烦,而且修改完代码后又要重新打包上传,做这些重复性的工作需要消耗大量的时间,而部署自动化的CI工具,则成本具大,需要很高的服务器配置,会让老板多花钱,而且,本来公司就小,人员紧张,再专门抽人手去做CI的部署,那更是不划算了。有没有一种便捷的方式能省钱、省时、省力地区完成上述部署操作呢,今天给大家介绍一款神器,编写完代码后,只需要点一个按钮,就会自动帮你完成后续的应用部署所有动作,这就是-Alibaba Cloud Toolkit一键上云神器。

一、产品功能

Alibaba Cloud Toolkit (后文简称 Cloud Toolkit)可以帮助开发者更高效地部署、测试、开发和诊断应用。Cloud Toolkit 与主流 IDE 及阿里云其他产品无缝集成,帮助您大大简化应用部署到服务器,尤其是阿里云服务器中的操作。您还可以通过其内嵌的 Arthas 程序诊断、 Terminal Shell 终端和 MySQL 执行器等工具,简化应用开发、测试和诊断的过程。

二、传统应用部署方式

在传统部署方式中,需要 7 个以上的步骤才能完成部署,并且在本地 IDE、云产品控制台、Git/SVN、Maven/Gradle、镜像仓库、ECS、容器等多个产品间来回切换。

Alibaba Cloud Toolkit一键上云神器

三、Cloud Toolkit 部署方式

在使用 Cloud Toolkit 的部署方式中,插件自动化了项目构建、SCP 上传部署包、制作 Docker Image、登录机器、推送至镜像仓库等多个步骤。您只需要在第一次使用时在本地 IDE 上安装 Cloud Toolkit,即可快速部署。

Alibaba Cloud Toolkit一键上云神器

Alibaba Cloud Toolkit一键上云神器

四、Alibaba Cloud Toolkit实操

官方网址:https://www.aliyun.com/product/cloudtoolkit

 1.插件安装

Alibaba Cloud Toolkit对eclipse和IDEA的支持都非常好,安装方式可参考上面的官方文档。我以IDEA为例为大家演示。

在IDEA中搜索安装,该插件更新非常快,说明项目是很活跃的:

Alibaba Cloud Toolkit一键上云神器

2.IDEA中的配置

该神器支持部署应用到任意位置,比如你的本地服务器,云服务器,EDAS等,我以部署到ECS为例进行讲解。

在idea中找到Tools-》Alibaba Cloud-》Deploy to ECS

Alibaba Cloud Toolkit一键上云神器
打开配置界面进行配置:

Alibaba Cloud Toolkit一键上云神器

这个配置界面比较复杂,大家注意看我的注释。我分步骤介绍下:

  1. Deployment File:选择maven的方式进行构建
  2. Target Deployment ECS:设置服务器的实例名和ip地址,这两个值需要登录阿里云的管理后台获取
  3. Deploy Location:一个要填写程序在服务器上的部署位置,可以提前登录服务器把目录建好
  4. Command:sh /usr/local/src/ig/restart.sh,这是服务器上要执行的脚本文件,这个脚本特别重要,代表你要在服务器上执行哪个脚本,下面会带大家写这些脚本。
  5. 最下面的就是本地需要运行的安装打包maven命令,通常就是clean install  -DskipTests,会自动帮你填好,你也可以添加、删除或编辑,参数-DskipTests表示忽略测试直接打包,可以避免程序因为测试失败而无法打包

有了上面的配置,我们就可以把jar包上传到服务器对应的目录了,但想让应用成功跑起来,还需要编写脚本。

3.脚本编写

重头戏来了,应用能不能在服务器上成功跑起来,基本上要取决于shell脚本的编写。需要注意的是,脚本中的地址一定要使用绝对路径,否则无法上云成功。这里我写了三个脚本,分别是启动startup.sh、停止stop.sh和重启restart.sh,仿造了tomcat的脚本写法。三个脚本如下:

startup.sh:很简单,就是让SpringBoot应用在后台启动,并输出日志

startup.sh错误脚本如下,我开始被坑了很久都无法成功

#!/bin/bash --login
echo Starting application
nohup java -jar /usr/local/src/ig/XXXX.jar &

startup.sh正确脚本:

#!/bin/bash 
source /etc/profile
echo Starting application
nohup java -jar  /usr/local/src/ig/XXXX.jar  > nohup.log 2>&1 &

stop.sh:停止应用,逻辑就是先找到启动应用对应的pid并kill掉

#!/bin/bash
PID=$(ps -ef | grep XXXX.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill $PID
fi

restart.sh:重启应用,先调用停止脚本,再调用开始脚本

#!/bin/bash
echo Stopping application
source /usr/local/src/ig/stop.sh
echo Starting application
source /usr/local/src/ig/startup.sh

大家可以直接使用我提供的脚本,但需要自己做一些改造,如下:

  1. 修改脚本的路径为你自己的路径
  2. 将XXXX.jar改成你自己的jar包名称
  3. 给三个脚本授予可执行权限,使用命令chmod +x stop.sh进行授权

五、上云中出现的问题及解决方案

上云中要注意几个问题,再次强调,脚本编写用绝对路径;注意JDK的配置要规范,下面我把遇到的问题给大家总结一下。

JDK安装不正规导致unable to find java的问题

上云时,如果提示 unable to find java ,而且 java -version 显示正确的话,可能的原因是 jdk 安装方式不规范,需要建立 java 命令的软链接到 /usr/bin。找不到java,需要将java设置软连接到/sbin/java,代码如下:

[aaa@qq.com /]# ln -s /usr/java/jdk1.8.0_191/bin/java /usr/bin/java
[aaa@qq.com /]# ln -s /usr/java/jdk1.8.0_191/bin/jar /usr/bin/jar
[aaa@qq.com /]# ln -s /usr/java/jdk1.8.0_191/bin/javac /usr/bin/javac

接着报错:cannot access /sbin/java: No such file or directory,此时我将JDK的bin目录中 java这个文件拷贝到/usr/bin目录下。

继续报错:Error: Unable to access jarfile,回头看了下自己的startup.sh脚本,发现jar包没有写绝对路径,改成绝对路径后,restart的脚本直接超时。

看了官方文档的案例:https://yq.aliyun.com/articles/665693

source ~/.bash_profile
killall java
nohup java -jar /root/springbootdemo/springbootdemo-0.0.1-SNAPSHOT.jar > nohup.log 2>&1 &

发现脚本跟自己的区别有两个:一是用source引入了环境变量,二是nohup的启动方式跟我不同,故修改为这种脚本。

#!/bin/bash 
source /etc/profile
echo Starting application
nohup java -jar  /usr/local/src/ig/XXXX.jar  > nohup.log 2>&1 &

关键点:JDK的安装和jar包的路径必须要用绝对路径!!!非常重要!!!

最后,晒一张上云成功图:

Alibaba Cloud Toolkit一键上云神器

可以看到打包花费20秒,上云时间27秒即完成了应有的全部部署,是不是很给力。完全摆脱了改代码-》打包-》上传-》启动应用的魔咒,舒服!

over!

最后,这个是我的微信二维码,加我,我拉你进讨论群,一起探讨技术。让你的编程生涯不再焦虑。

Alibaba Cloud Toolkit一键上云神器

 

相关标签: 项目构建