共用方式為


在 Azure 中部署 Node.js Web 應用程式

在這份快速入門中,您將學習如何建立並部署第一個 Node.js(Express)網頁應用程式到 Azure App Service。 App Service 支援 Linux 和 Windows 上的各種 Node.js 版本。

本快速入門會在免費層中設定 App Service 應用程式,您的 Azure 訂用帳戶不會產生任何費用。

這段影片示範如何在 Azure 中部署 Node.js Web 應用程式。

下列章節也會說明影片中的步驟。

設定初始環境

  • 具有有效訂用帳戶的 Azure 帳戶。 如果您沒有帳戶,可以免費建立帳戶
  • 安裝 Node.js LTS。 執行命令 node --version,確認已安裝 Node.js。
  • 安裝 Azure CLI,你可以用它在 shell 裡執行指令,建立和設定 Azure 資源。
  • 具有有效訂用帳戶的 Azure 帳戶。 如果您沒有帳戶,可以免費建立帳戶
  • 安裝 Node.js LTS。 執行命令 node --version,確認已安裝 Node.js。
  • 有 FTP 用戶端,例如 FileZilla,可以把檔案傳到 App Service。

建立您的 Node.js 應用程式

在此步驟中,您會建立基礎 Node.js 應用程式,並確保其在您的電腦上執行。

秘訣

如果你已經完成 Node.js 教學,可以直接跳到 「部署到 Azure」。

  1. 使用預設安裝的 Node.js 和 NPM 的 Express 應用程式產生器來建立 Node.js 應用程式。

    npx express-generator myExpressApp --view ejs
    

    如果這是你第一次安裝發電機,NPX 會要求你同意安裝。

  2. 切換至應用程式的目錄,並安裝 npm 套件。

    cd myExpressApp && npm install
    
  3. 將相依性更新為最安全的版本。

    npm audit fix --force
    
  4. 使用偵錯資訊啟動開發伺服器。

    DEBUG=myexpressapp:* npm start
    
  5. 在瀏覽器中,瀏覽至 http://localhost:3000。 您應該會看到如下的結果:

    瀏覽器中執行的 Express 應用程式截圖。

部署至 Azure

在繼續之前,請確定您已安裝並設定所有必要條件。

附註

若要讓 Node.js 應用程式在 Azure 中執行,應用程式必須接聽 PORT 環境變數所提供的連接埠。 在您產生的 Express 應用程式中,此環境變數已用於啟動指令碼 bin/www。 (搜尋 process.env.PORT。)

登入 Azure

  1. 在終端機中,確保您位於 myExpressApp 目錄,然後使用下列命令啟動 Visual Studio Code:

    code .
    
  2. 在 Visual Studio Code 的活動列上,選取 Azure 標誌。

  3. 請確定您已使用 Azure 帳戶登入。

設定 App Service 應用程式和部署程式碼

  1. 以滑鼠右鍵按一下 App Service,並選取 [建立新的 Web 應用程式]。 預設會使用 Linux 容器。

  2. 輸入 Web 應用程式的全域唯一名稱,然後選取 Enter。 名稱必須在整個 Azure 中唯一,且僅使用字母數字(A-Za-z0-9)及連字號(-)。

  3. 在 [選取執行階段堆疊] 中,選取您想要的 Node.js 版本。 推薦使用 Node 24 LTS

  4. 在 [選取定價層] 中,選取 [免費 (F1)],並等候資源在 Azure 中建立。

  5. 在快顯 [一律將工作區 "myExpressApp" 部署至 <app-name>]中,選取 [是]。 這麼做可確保只要您位於相同的工作區,Visual Studio Code 就能每次都部署至相同的 App Service 應用程式。

    Visual Studio Code 建立 Azure 資源並部署程式碼時,會顯示進度通知

  6. 部署完成後,請在通知彈窗中選擇瀏覽 網站 。 瀏覽器應該會顯示 Express 預設頁面。

在終端機中,確定您位於 myExpressApp 目錄中,並使用 az webapp up 命令將程式碼部署在本機資料夾中 (myExpressApp):

az webapp up --sku F1 --name <app-name>
  • 如果無法辨識 az 命令,請確定您已安裝 Azure CLI,如設定初始環境所說明。
  • 以 Azure 中的唯一名稱取代 <app_name>。 ( 有效字元為 a-z0-9-。良好的模式是使用公司名稱和應用程式識別碼的組合。
  • --sku F1 引數會在免費定價層上建立 Web 應用程式,不會產生費用。
  • 您可以選擇性地加入引數 --location <location-name>,其中 <location_name> 是可用的 Azure 區域。 您可以執行 az account list-locations 命令,擷取 Azure 帳戶的允許區域清單。
  • 此命令預設會建立適用於 Node.js 的 Linux 應用程式。 若要改為建立 Windows 應用程式,請使用 --os-type 引數。
  • 如果您看到錯誤:「無法自動偵測應用程式的執行階段堆疊」,請確定您是在 myExpressApp 目錄中執行命令 (請參閱使用 az webapp up 針對自動偵測問題進行疑難排解。)

此命令可能需要幾分鐘才能完成。 此命令執行時會提供相關訊息,包括建立資源群組、App Service 方案和應用程式資源、設定記錄,以及執行 Zip 部署。 然後,它會傳回訊息,其中包含應用程式的URL,也就是 Azure 上的應用程式 URL。

The webapp '<app-name>' doesn't exist
Creating Resource group '<group-name>' ...
Resource group creation complete
Creating AppServicePlan '<app-service-plan-name>' ...
Creating webapp '<app-name>' ...
Configuring default logging for the app, if not already enabled
Creating zip with contents of dir /home/cephas/myExpressApp ...
Getting scm site credentials for zip deployment
Starting zip deployment. This operation can take a while to complete ...
Deployment endpoint responded with status code 202
You can launch the app at <URL>
{
  "URL": "<URL>",
  "appserviceplan": "<app-service-plan-name>",
  "location": "centralus",
  "name": "<app-name>",
  "os": "<os-type>",
  "resourcegroup": "<group-name>",
  "runtime_version": "node|24",
  "runtime_version_detected": "0.0",
  "sku": "FREE",
  "src_path": "/home/cephas/myExpressApp"
}

附註

az webapp up 命令會執行下列動作:

  • 建立預設資源群組

  • 建立預設 App Service 方案

  • 使用所指定的名稱建立應用程式

  • Zip 部署目前工作目錄的所有檔案,啟用建置自動化

  • 在 .azure/config 檔案中本機快取參數,這樣您就不需要在稍後使用 az webapp up 或其他來自專案資料夾的 az webapp 命令進行部署時再次加以指定。 預設會自動使用快取的值。

建立 Azure 資源

  1. 登入 Azure 入口網站

  2. 若要開始建立 Node.js 應用程式,請瀏覽至 https://portal.azure.com/#create/Microsoft.WebSite

  3. 在 [基本] 索引標籤的 [專案詳細資料] 下,確保已選取正確的訂用帳戶,然後選取 [新建] 以建立資源群組。 輸入 myResourceGroup 作為名稱。

    [專案詳細資料] 區段的螢幕擷取畫面,顯示您可以為 Web 應用程式選取 Azure 訂用帳戶和資源群組的位置。

  4. 在 [執行個體詳細資料] 下,輸入 Web 應用程式的全域唯一名稱,然後選取 [程式碼]。 在執行時堆疊中選擇 Node 24 LTS、作業系統,以及你想從哪個區域提供你的應用程式。

    [執行個體詳細資料] 區段的螢幕擷取畫面。

  5. [定價方案] 底下,選取 [ 新建] 以建立 App Service 方案。 輸入 myAppServicePlan 作為名稱。 若要變更為免費方案,請在 [定價方案] 清單中選取 [免費 F1]。

    App Service 方案區段的螢幕擷取畫面。

  6. 選取頁面底部的 [檢閱 + 建立] 按鈕。

    顯示頁面底部的 [檢閱] 和 [建立] 按鈕的螢幕擷取畫面

  7. 驗證執行之後,請選取頁面底部的 [建立] 按鈕。

  8. 部署完成後,選取 [前往資源]

    顯示 [移至資源] 按鈕的螢幕擷取畫面。

取得 FTPS 認證

Azure App Service 針對 FTP/S 部署支援兩種認證類型。 這些認證與您的 Azure 訂用帳戶認證不同。 在這個區段,你會取得可用於 FTP 用戶端的應用程式範圍憑證。

  1. 從 App Service 應用程式頁面,在側邊欄選單的部署選單中選擇部署中心,然後選擇 FTPS 憑證標籤。

    顯示 [FTPS 部署認證] 索引標籤的螢幕擷取畫面。

  2. 打開你的 FTP 用戶端,並進入 你的 myExpressApp 資料夾。

  3. FTPS 憑證 標籤頁,將 FTPS 端點使用者名稱密碼 複製到 FTP 用戶端。

    FTPS 連線詳細資料的螢幕擷取畫面。

  4. 在你的 FTP 用戶端選擇 Connect

使用 FTPS 部署檔案

  1. 將所有檔案和目錄檔案複製到 Azure 中的 /site/wwwroot directory 目錄。

    WWW 根目錄的截圖。

  2. 瀏覽至您的應用程式 URL,以確認應用程式運作正常。

重新部署更新

您可以在 Visual Studio Code 中進行編輯、儲存檔案,然後重新部署至 Azure 應用程式,以將變更部署此應用程式。 例如:

  1. 從範例專案中開啟 views/index.ejs 並變更

    <p>Welcome to <%= title %></p>
    

    to

    <p>Welcome to Azure</p>
    
  1. 在 [App Service] 總管中,再次選取 [部署至 Web 應用程式] 圖示,然後再次選取 [部署] 以確認。

  2. 等候部署完成,然後在通知快顯中選取 [瀏覽網站]。 你應該會看到 Welcome to Express 訊息被改成 Welcome to Azure了。

  1. 儲存您的變更,然後再次使用 az webapp up 命令 (不使用 Linux 的引數) 重新部署應用程式。 為 Windows 新增 --os-type Windows

    az webapp up
    

    此命令會使用在 .azure/config 檔案中本機快取的值,例如應用程式名稱、資源群組和 App Service 方案。

  2. 部署完成後,請重新整理網頁。 你應該會看到 Welcome to Express 訊息被改成 Welcome to Azure了。

  1. 儲存您的變更,然後使用 FTP 用戶端重新部署應用程式。

  2. 部署完成後,請重新整理網頁。 你應該會看到 Welcome to Express 訊息被改成 Welcome to Azure了。

串流記錄

您可以直接在 Visual Studio Code 輸出視窗中,從 Azure 應用程式中串流記錄輸出 (console.log() 的呼叫)。

  1. 在 Visual Studio Code 的 [資源] 中,以滑鼠右鍵按一下應用程式節點,然後選取 [開始串流記錄]。

    開始串流日誌的選項截圖。

  2. 如果系統要求您重新啟動應用程式,請選擇 [是]。 重新啟動應用程式之後,Visual Studio Code 的輸出視窗會隨即開啟,並且連線至記錄串流。

  3. 幾秒鐘之後,輸出視窗中會顯示您已連線至記錄串流服務的訊息。 您可以在瀏覽器中重新整理頁面,以產生更多的輸出活動。

    Connecting to log stream...
    2020-03-04T19:29:44  Welcome, you are now connected to log-streaming service. The default timeout is 2 hours.
    Change the timeout with the App Setting SCM_LOGSTREAM_TIMEOUT (in seconds).
    

您可以存取從應用程式及其執行所在的容器產生的主控台記錄。 記錄包含呼叫 console.log() 所產生的任何輸出。

若要串流記錄,請執行 az webapp log tail 命令:

az webapp log tail

此命令會使用 .azure/config 檔案中快取的資源群組名稱。

您也可以加入 --logs 參數,搭配 az webapp up 命令,在部署時自動開啟記錄資料流。

在瀏覽器中重新整理應用程式以產生主控台記錄,其中應包含描述應用程式 HTTP 要求的訊息。 如果沒有立即看到輸出,請在 30 秒後再試一次。

您可以隨時在終端機中選取 Ctrl+C,以停止記錄串流。

您可以存取從應用程式及其執行所在的容器產生的主控台記錄。 您可以直接在 Azure 入口網站中,從 Node.js 應用程式串流記錄輸出 (console.log() 的呼叫)。

  1. 在你應用程式的同一個 App Service 頁面,使用側邊欄選單捲動到 監控 區塊並選擇 日誌串流

    螢幕擷取畫面:Azure 應用程式服務中的記錄資料流。

  2. 幾秒鐘之後,輸出視窗中會顯示您已連線至記錄串流服務的訊息。 您可以在瀏覽器中重新整理頁面,以產生更多的輸出活動。

    Connecting...
    2021-10-26T21:04:14  Welcome, you are now connected to log-streaming service.
    Starting Log Tail -n 10 of existing logs ----
    /appsvctmp/volatile/logs/runtime/81b1b83b27ea1c3d598a1cdec28c71c4074ce66c735d0be57f15a8d07cb3178e.log
    2021-10-26T21:04:08.614384810Z: [INFO]
    2021-10-26T21:04:08.614393710Z: [INFO]  # Enter the source directory to make sure the script runs where the user expects
    2021-10-26T21:04:08.614399010Z: [INFO]  cd "/home/site/wwwroot"
    2021-10-26T21:04:08.614403210Z: [INFO]
    2021-10-26T21:04:08.614407110Z: [INFO]  export NODE_PATH=/usr/local/lib/node_modules:$NODE_PATH
    2021-10-26T21:04:08.614411210Z: [INFO]  if [ -z "$PORT" ]; then
    2021-10-26T21:04:08.614415310Z: [INFO]          export PORT=8080
    2021-10-26T21:04:08.614419610Z: [INFO]  fi
    2021-10-26T21:04:08.614423411Z: [INFO]
    2021-10-26T21:04:08.614427211Z: [INFO]  node /opt/startup/default-static-site.js
    Ending Log Tail of existing logs ---
    

清除資源

在前述步驟中,您在資源群組中建立了 Azure 資源。 本快速入門中的步驟會將所有資源放在此資源群組中。 若要清除,您只需要移除資源群組。

  1. 在 Visual Studio Code 的 Azure 擴充功能中,在 [群組方式] 清單中,選取 [依資源群組分類]。

  2. [資源] 清單中,展開訂用帳戶,以滑鼠右鍵按一下您稍早建立的資源群組,然後選取 [刪除資源群組]。

    螢幕擷取畫面:Visual Studio Code 瀏覽至刪除資源的選項,該資源中包含 App Service 資源。

  3. 出現提示時,輸入您要刪除的資源群組名稱來確認刪除。 確認後,資源群組會被刪除,完成後你會看到 通知

在前述步驟中,您在資源群組中建立了 Azure 資源。 資源團體名稱類似 appsvc_rg_Linux_CentralUS,視你所在地而定。

如果您在未來不需使用這些資源,請執行下列命令來刪除資源群組:

az group delete --no-wait

此命令會使用 .azure/config 檔案中快取的資源群組名稱。

--no-wait 引數可讓命令在作業完成之前傳回。

若不再需要,您可以刪除資源群組、App Service 及所有相關資源。

  1. 從您的 App Service [概觀] 頁面,選取您在建立 Azure 資源步驟中建立的 [資源群組]

    App Service 總覽頁面中資源群組的截圖。

  2. 資源群組頁面中,選取 [刪除資源群組]。 確認要完成資源刪除作業的資源群組名稱。

    刪除資源群組的截圖。

恭喜,您已成功完成本快速入門!

查看其他 Azure 擴充功能。

或藉由安裝適用於 Azure 的 Node Pack 擴充功能來取得這所有項目。