本教學課程會逐步引導您完成建立簡單 Node.js 應用程式並將其發佈至 Azure 的工作。
將 Node.js 應用程式發佈至 Azure 時,有數個選項。 其中包括 Azure App Service、執行您選擇的作業系統的 VM、用於使用 Kubernetes 進行管理的 Azure 容器服務 (AKS)、使用 Docker 的容器執行個體等等。 如需每個選項的詳細資訊,請參閱 計算。
在本教學課程中,您會將應用程式部署至 Linux App Service。 Linux App Service 會部署 Linux Docker 容器來執行 Node.js 應用程式 (,而不是 Windows App Service,後者會在 Windows 上執行 IIS 後方的 Node.js 應用程式)。
本教學課程示範如何從隨 Visual Studio 的 Node.js Tools 安裝的範本開始建立 Node.js 應用程式、將程式碼推送至 GitHub 上的存放庫,然後透過 Azure 入口網站佈建 Azure App Service,以便您可以從 GitHub 存放庫進行部署。 若要使用命令列來佈建 Azure App Service 並從本機 Git 存放庫推送程式碼,請參閱 建立 Node.js 應用程式。
這很重要
本文中的資訊僅適用於 Node.js 專案類型 (.njsproj)。 本文中使用的範本從 Visual Studio 2022 17.8 預覽版 2 開始不再可用。
在本教學課程中,您將瞭解如何:
- 建立 Node.js 專案
- 建立程式碼的 GitHub 存放庫
- 在 Azure 上建立 Linux App Service
- 部署至 Linux
先決條件
您必須安裝 Visual Studio 和 Node.js 開發工作負載。
如果您尚未安裝 Visual Studio 2019,請移至 Visual Studio 下載 頁面以免費安裝。
如果您需要安裝工作負載,但已經有 Visual Studio,請移至 [工具>] [取得工具和功能...],這會開啟 Visual Studio 安裝程式。 選擇 Node.js 開發 工作負載,然後選擇 Modify(修改)。
您必須安裝 Node.js 執行階段。
如果您尚未安裝,請從 Node.js 網站安裝 LTS 版本。 一般而言,Visual Studio 會自動偵測已安裝的 Node.js 執行階段。 如果未偵測到已安裝的執行階段,您可以將專案配置為在內容頁面中參照已安裝的執行階段 (建立專案之後,用滑鼠右鍵按一下專案節點,然後選擇 內容)。
建立要在 Azure 中執行的 Node.js 專案
開啟 Visual Studio。
建立新的 TypeScript Express 應用程式。
按 Esc 關閉開始視窗。 輸入 Ctrl + Q 以開啟搜尋方塊,輸入 Node.js,然後選擇 [ 建立新的基本 Azure Node.js Express 4 應用程式 (TypeScript)]。 在出現的對話框中,選擇 建立。
如果您沒有看到 基本 Azure Node.js Express 4 應用程式 專案範本,則必須新增 Node.js 開發 工作負載。 如需詳細指示,請參閱先 決條件。
Visual Studio 會建立專案,並在 [方案總管] (右窗格) 中開啟它。
按 F5 建置並執行應用程式,並確定一切如預期般執行。
選取 [ 檔案>新增至原始檔控制 ] ,以建立專案的本機 Git 存放庫。
此時,使用 Express 架構並以 TypeScript 撰寫的 Node.js 應用程式正在運作,並簽入本機原始檔控制。
在繼續後續步驟之前,請視需要編輯專案。
將程式碼從 Visual Studio 推送至 GitHub
設定 GitHub 用於 Visual Studio:
請確定已使用功能表項目 [工具>] 來安裝並啟用 Visual Studio 的 GitHub 延伸模組。
從功能表中選取 檢視>其他視窗>GitHub。
GitHub 視窗隨即開啟。
如果您在 GitHub 視窗中沒有看到 [開始使用 ] 按鈕,請按一下 [ 檔案>新增至原始檔控制 ],然後等待 UI 更新。
按一下 開始使用。
如果您已連線至 GitHub,工具箱會顯示如下圖所示。
完成要發佈的新儲存庫的欄位,然後按一下 [發佈]。
片刻之後,會出現一個橫幅,指出「儲存庫已成功建立」。
在下一節中,您將瞭解如何從此存放庫發佈至 Linux 上的 Azure App Service。
在 Azure 中建立 Linux App Service
登入 Azure 入口網站。
從左側的服務清單中選取 [App Services ],然後按一下 [新增]。
如有需要,請建立新的資源群組和 App Service 方案來裝載新的應用程式。
請務必將 作業系統 設定為 Linux,並將 執行階段堆疊 設定為所需的 Node.js 版本,如圖所示。
按一下 [建立] 以建立 App Service。
部署可能需要幾分鐘的時間。
部署之後,請移至 [應用程式設定 ] 區段,然後新增名稱為 且
SCM_SCRIPT_GENERATOR_ARGS值--node為 的設定。
警告
App Service 部署程式會使用一組啟發學習法來判斷要嘗試和執行的應用程式類型。 如果 .在已部署的內容中偵測到 sln 檔案,它會假設正在部署 MSBuild 型專案。 上面新增的設定會覆寫此邏輯,並明確指定這是 Node.js 應用程式。 如果沒有此設定,Node.js 應用程式將無法部署,而這個 .sln 檔案是被部署至應用服務的存放庫的一部分。
在 應用程式設定下,新增另一個名稱為 且
WEBSITE_NODE_DEFAULT_VERSION值8.9.0為 的設定。部署之後,請開啟 App Service,然後選取 [部署選項]。
按一下 [選擇來源],然後選擇 [GitHub],然後設定任何必要的許可。
選取要發佈的存放庫和分支,然後選取 [ 確定]。
同步時會出現 部署選項 頁面。
同步完成後,將出現一個複選標記。
網站現在會從 GitHub 存放庫執行 Node.js 應用程式,而且可從針對 Azure App Service 建立的 URL 存取 (預設為 Azure App Service 提供的名稱,後面接
.azurewebsites.net著 )。
修改您的應用程式並推送變更
請在
app.use('/users', users);的那一行之後,在app.ts中新增此處顯示的程式碼。 這會在 URL /api 新增 REST API。app.use('/api', (req, res, next) => { res.json({"result": "success"}); });建置程式碼並在本機進行測試,然後簽入並推送至 GitHub。
在 Azure 入口網站中,需要一些時間才能偵測 GitHub 存放庫中的變更,然後開始部署的新同步處理。 這看起來類似下圖。
部署完成後,請導覽至公用網站,並將 /api 附加至 URL。 會傳回 JSON 回應。
故障排除
- 如果 node.exe 處理程序停止 (亦即發生未處理的例外狀況) ,則容器會重新啟動。
- 當容器啟動時,它會執行各種啟發式方法,以找出如何啟動 Node.js 程序。 實施的詳細信息可以在 generateStartupCommand.js查看。
- 您可以透過 SSH 連線到執行中的容器進行調查。 這很容易使用 Azure 入口網站完成。 選取 [App Service],然後向下捲動工具清單,直到到達 [開發工具] 區段下的 SSH。
- 若要協助進行疑難排解,請移至 App Service 的 [診斷記錄 ] 設定,並將 [Docker 容器記錄 ] 設定從 [關閉 ] 變更為 [ 檔案系統]。 日誌在容器中的 /home/LogFiles/_docker.log* 下創建,並且可以使用 SSH 或 FTP(S) 在盒子上訪問。
- 自訂網域名稱可能會指派給網站,而不是預設指派的 *.azurewebsites.net URL。 如需詳細資訊,請參閱映射自訂網域的主題。
- 在進入生產環境之前,部署至預備站台以進行進一步測試是最佳實務。 如需如何設定此專案的詳細資訊,請參閱 建立暫置環境主題。
- 如需更多常見問題,請參閱 Linux 上的 App Service 常見問題 集。
後續步驟
在本教學課程中,您已瞭解如何建立 Linux App Service 並將 Node.js 應用程式部署至服務。 您可能想要深入瞭解 Linux App Service。