Alibaba Cloud Toolkit一鍵上雲神器

在中小公司中,有一個痛點,項目開發完畢需要部署到服務器上,傳統的做法比較麻煩,而且修改完代碼後又要重新打包上傳,做這些重複性的工作需要消耗大量的時間,而部署自動化的CI工具,則成本具大,需要很高的服務器配置,會讓老闆多花錢,而且,本來公司就小,人員緊張,再專門抽人手去做CI的部署,那更是不划算了。有沒有一種便捷的方式能省錢、省時、省力地區完成上述部署操作呢,今天給大家介紹一款神器,編寫完代碼後,只需要點一個按鈕,就會自動幫你完成後續的應用部署所有動作,這就是-Alibaba Cloud Toolkit一鍵上雲神器。

一、產品功能

Alibaba Cloud Toolkit (後文簡稱 Cloud Toolkit)可以幫助開發者更高效地部署、測試、開發和診斷應用。Cloud Toolkit 與主流 IDE 及阿里雲其他產品無縫集成,幫助您大大簡化應用部署到服務器,尤其是阿里雲服務器中的操作。您還可以通過其內嵌的 Arthas 程序診斷、 Terminal Shell 終端和 MySQL 執行器等工具,簡化應用開發、測試和診斷的過程。

二、傳統應用部署方式

在傳統部署方式中,需要 7 個以上的步驟才能完成部署,並且在本地 IDE、雲產品控制檯、Git/SVN、Maven/Gradle、鏡像倉庫、ECS、容器等多個產品間來回切換。

三、Cloud Toolkit 部署方式

在使用 Cloud Toolkit 的部署方式中,插件自動化了項目構建、SCP 上傳部署包、製作 Docker Image、登錄機器、推送至鏡像倉庫等多個步驟。您只需要在第一次使用時在本地 IDE 上安裝 Cloud Toolkit,即可快速部署。

四、Alibaba Cloud Toolkit實操

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

 1.插件安裝

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!

最後,這個是我的微信二維碼,加我,我拉你進討論羣,一起探討技術。讓你的編程生涯不再焦慮。

 

發佈了263 篇原創文章 · 獲贊 3167 · 訪問量 87萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章