Alibaba Cloud Toolkit on a key artifact cloud

In small companies, there is a sore point, completion of the development project needs to be deployed to the server, the traditional approach is too much trouble, but after you have to modify the code to re-package upload, do these repetitive work consumes a lot of time, and deployment automation the CI tool, the cost with large, require high server configuration, let the boss to spend more, and that would have been a small company, people nervous, and then pumping specialized manpower to do the deployment of CI, it is uneconomical. Is there a convenient way to save money, save time, effort completion of the regional deployment of operating it, today to introduce an artifact, finished writing code, simply point a button, it will automatically help you complete the follow-up application the deployment of all the action, this is the cloud artifact on a key -Alibaba cloud Toolkit.

First, the product features

Alibaba Cloud Toolkit (hereinafter referred to as Cloud Toolkit) can help developers to more efficiently deploy, test, development, and diagnostic applications. Cloud Toolkit IDE and other mainstream Ali cloud offering seamless integration to help you simplify application deployment to a server, in particular the operation Ali cloud server. You can also, through its built-in diagnostic procedures Arthas, Terminal Shell terminal and MySQL actuators and other tools that simplify the process of application development, testing and diagnosis.

Second, the traditional application deployment

In a conventional deployment, the more steps are required to complete the deployment of 7, and the IDE locally, cloud product console, switching between a plurality of products Git / SVN, Maven / Gradle, mirroring warehouse, the ECS, round container or the like.

Three, Cloud Toolkit deployment

In deployment using Cloud Toolkit, a plug-in automation project to build, SCP upload deployment package, making Docker Image, log on the machine, push a number of steps mirror warehouses. You only need to install on the local Cloud Toolkit IDE at first use, you can quickly deploy.

Four, Alibaba Cloud Toolkit practical operation

Official Website: https://www.aliyun.com/product/cloudtoolkit

 1. Plug Installation

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

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

2.IDEA中的配置

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

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


打开配置界面进行配置:

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

  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,代码如下:

[root@izwz9byv7m6dt3q2vnjq03z /]# ln -s /usr/java/jdk1.8.0_191/bin/java /usr/bin/java
[root@izwz9byv7m6dt3q2vnjq03z /]# ln -s /usr/java/jdk1.8.0_191/bin/jar /usr/bin/jar
[root@izwz9byv7m6dt3q2vnjq03z /]# 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包的路径必须要用绝对路径!!!非常重要!!!

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

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

over!

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

 

发布了236 篇原创文章 · 获赞 2724 · 访问量 55万+

Guess you like

Origin blog.csdn.net/m0_37609579/article/details/103898658