iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
AI & Data

我不太懂 AI,可是我會一點 Python 和 Azure系列 第 4

Day 04 Azure Web App- 方便部署服務

Azure Web App- 方便部署服務

Azure Web App 提供一個方便部署服務的做法,使用者可以透過git來部署。之後要製作的 chatbot ,會直接部署在 Azure Web App 。部署之後,Azure Web App 會將使用者的程式,打包成docker image,在虛擬機器中展開成container執行。

申請 Web App

  1. 進入https://portal.azure.com/#home
  2. 點選建立資源
  3. 搜尋並選擇Web App
  4. 設定基本資料
    • 選擇自己建立的資源群組
    • 為自己的Web APP取名
    • 點選代碼作為發布方式
    • 選取階段堆疊:選擇 Python3.7
    • 選擇區域
    • 變更 SKU和大小:改為 B1 (無法選擇 B1 時,則變更區域)
  5. 可以給予標籤,以便將來使用服務太多時,可以針對標籤搜尋
  6. 檢閱 + 建立

設定 Azure Web App 與 git

設定使用者層級認證

# 在終端機中輸入
az webapp deployment user set \
--user-name <使用者名稱> --password <密碼>

# 取得在Azure Web App內的git url
az webapp deployment source config-local-git \
--name <你的Web App名稱> --resource-group <你的資源群組>
  • 使用者名稱在 Azure 服務必須是唯一的,同一個名稱不能申請超過一次,且不能包含 ‘@’ 符號。
  • 密碼長度必須至少為 8 個字元,包含下列三個元素其中兩個:字母、數字及符號。
  • 請記得自己的帳號密碼,之後git push到 Azure Web App 就是以此帳號密碼登入。

Git部署到 Azure Web App

  • 取得 git url
# 在終端機中輸入
az webapp deployment source config-local-git \
--name <你的Web App名稱> --resource-group <你的資源群組>
# 得到 URL
{
  "url": "https://<username>@<webappname>.scm.azurewebsites.net/linecv.git"
}
  • 加入git remote
git remote add azure <your_git_url>

  • 部署服務
git push azure master

查看 Web App log

  • 部署之後,可以透過 log 觀察是否有 error,方便 debug
az webapp log tail \
--name <你的Web App名稱> --resource-group <你的資源群組>

  • 不過,log 的量是有限制的,可以從 Azure portal 首頁,進入 Auzre Web App ,來做調整:
    • 在 Auzre Web App 的頁面,從左邊的選單選擇App Service 紀錄進入設定頁面。
    • 選擇檔案系統,分別調整配額(MB)和保留期限(天)。

ssh連線進入 Web App

  • 執行以下指令,其效果會在你的電腦建立連結 Azure Web App 的tunnel,並提供某個 port 和固定的帳號密碼(root/Docker!),以便連線連線。
az webapp create-remote-connection \
-n <你的Web App名稱> --resource-group <你的資源群組> &

  • 連線時帳號都是root,密碼都是Docker!,只要依照上述 port 連線即可。
ssh root@127.0.0.1 -p 57281

  • 如果有部屬時需要用到的檔案,也可以利用scp上傳檔案,只是一定要放在/home裡。
scp -P 57281 config.json root@127.0.0.1:/home/config.json
  • 注意事項:如果推上去的程式碼有問題,無法啟動,那就無法建立連線,甚至已經建立的連線也會斷掉。這時,請重新上傳可以執行的程式碼,程式碼可以執行後,連線才會暢通。

環境變數

  • 設定環境變數
az webapp config appsettings set \
--name <你的Web App名稱> --resource-group <你的資源群組> --settings <變數名稱>=<變數值>

示範:

az webapp config appsettings set \
--name triathlontes --resource-group cv --settings TEST=123
  • 利用json檔設定環境變數
az webapp config appsettings set \
--name <你的Web App名稱> --resource-group <你的資源群組> --settings @你的json檔

假設有個檔案名為config.json,其內容如下

{
    "TEST": "123"
}

執行以下指令設定環境變數:

az webapp config appsettings set \
--name triathlontes --resource-group cv --settings @config.json
  • 列出環境變數
az webapp config appsettings list \
--name <你的Web App名稱> --resource-group <你的資源群組>

部署簡單的Flask網頁

建立好 Web App 之後,可以先部署簡單的Flask,來看看效果。

最簡單的Flask網頁

會需要兩個檔案,一個是要部署的python檔案,另一個是requirements.txt,讓系統在部屬的同時,可以安裝需要用到的python套件。

  • application.py
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    "hello world"
    return "Hello World!!!!!"
  • requirements.txt
Flask
  • 透過git將這兩個檔案上傳。
  • 部署完之後,可以直接進入自己的 Web App 所提供的 URL https://<your web app name>.azurewebsites.net,看會不會出現 "hello world"。
  • 上述的URL可在Web App頁面中的概觀看到。

如果部署成功,我們就可以開始下一個步驟~打造自己的 chatbot。


上一篇
Day 03 Azure Virtual Machine- Windows 使用者的救星
下一篇
Day 05 Line Massaging API- 打造自己的 Chatbot
系列文
我不太懂 AI,可是我會一點 Python 和 Azure30

尚未有邦友留言

立即登入留言