使用 FTP/S 將您的應用程式部署至 Azure App Service
這篇文章說明如何使用 FTP 或 FTPS 將您的 Web 應用程式、行動裝置應用程式後端或 API 應用程式部署到 Azure App Service (英文)。
您應用程式的 FTP/S 端點已經啟動。 啟用 FTP/S 部署不需要任何組態。
注意
停用基本驗證時,FTP/S 部署無法運作,而且您無法在應用程式的部署中心檢視或設定 FTP 認證。
取得部署認證
遵循設定 Azure App Service 的部署認證 (部分機器翻譯) 中的指示,以複製應用程式範圍認證或設定使用者範圍認證。 您可以使用任一認證連線到您應用程式的 FTP/S 端點。
根據您選擇的認證範圍,以下列格式製作 FTP 使用者名稱:
應用程式範圍 使用者範圍 <app-name>\$<app-name>
<app-name>\<deployment-user>
在 App Service 中,FTP/S 端點會在應用程式之間共用。 由於使用者範圍認證未連結至特定資源,因此您必須在使用者範圍使用者名稱前面加上應用程式名稱,如上所示。
取得 FTP/S 端點
在您複製部署認證的相同應用程式管理頁面 ([部署中心]>[FTP 認證]) 中,複製 [FTPS 端點]。
將檔案部署至 Azure
- 從您的 FTP 用戶端 (例如 Visual Studio、Cyberduck 或 WinSCP),使用您所蒐集的連線資訊來連線到您的應用程式。
- 將您的檔案和其個別的目錄結構複製到 Azure 中的 /site/wwwroot 目錄 (或 WebJobs 的 /site/wwwroot/App_Data/Jobs/ 目錄)。
- 瀏覽至您的應用程式 URL,以確認應用程式運作正常。
注意
不同於 Git 型部署和 Zip 部署,FTP 部署不支援建置自動化,例如:
- 相依性還原 (例如 NuGet、NPM、PIP 和編輯器自動化)
- .NET 二進位檔的編譯
- web.config 的產生 (此處是 Node.js 範例)
請在本機電腦上手動產生這些必要檔案,然後與您的應用程式一起部署這些檔案。
強制使用 FTPS
為了增強安全性,您應該只允許透過 TLS/SSL 的 FTP。 如果您不使用 FTP 部署,您也可以停用 FTP 和 FTPS。
在 Azure 入口網站中您應用程式的資源頁面中,選取左瀏覽區中的 [設定]>[一般設定]。
若要停用未加密的 FTP,請在 [FTP 狀態] 中選取 [僅限 FTPS]。 若要完全停用 FTP 和 FTPS,請選取 [停用]。 完成後,請選取儲存。 如果使用 [僅限 FTPS],您必須瀏覽至 Web 應用程式的 [TLS/SSL 設定] 頁面,來強制使用 TLS 1.2 或更高版本。 TLS 1.0 和 1.1 不支援 [僅限 FTPS] 功能。
在部署期間我的應用程式會發生什麼事?
所有官方支援的部署方法都會對應用程式 /home/site/wwwroot 資料夾中的檔案進行變更。 這些檔案用來執行您的應用程式。 因此,部署可能會由於鎖定的檔案而失敗。 應用程式也可能在部署期間發生無法預期的行為,因為檔案不會全部同時更新。 這不是客戶面向應用程式所想要的行為。 有幾種方式可以避免這些問題:
- 直接從 ZIP 套件執行您的應用程式,而不將其解壓縮。
- 停止您的應用程式,或在部署期間針對其啟用離線模式。 如需詳細資訊,請參閱在部署期間處理鎖定的檔案。
- 在開啟自動交換的情況下,部署到預備位置。
疑難排解 FTP 部署
- 如何疑難排解 FTP 部署?
- 我無法連線到 FTP 及發佈我的程式碼。 如何解決此問題?
- 如何透過被動模式連線到 Azure App Service 中的 FTP?
- 為什麼在嘗試使用明確加密透過 FTPS 連線時連線失敗?
- 如何判斷用來部署 Azure App Service 的方法?
如何疑難排解 FTP 部署?
疑難排解 FTP 部署的第一個步驟是隔離部署問題與執行階段應用程式問題。
部署問題通常會導致沒有任何檔案或錯誤檔案部署到您的應用程式。 您可以調查 FTP 部署或選取替代部署路徑 (例如原始檔控制),即可進行疑難排解。
執行階段應用程式問題通常會導致正確的檔案集部署到您的應用程式,但是應用程式行為不正確。 您可以將焦點放在執行階段程式碼行為,並且調查特定失敗路徑,即可進行疑難排解。
若要判斷部署或執行階段問題,請參閱部署與執行階段問題。
我無法連線到 FTP 及發佈我的程式碼。 如何解決此問題?
檢查您輸入正確的主機名稱和認證。 此外,檢查防火牆並未封鎖您電腦上的下列 FTP 連接埠:
- FTP 控制連線連接埠︰21、990
- FTP 資料連線連接埠︰989、10001-10300
如何透過被動模式連線到 Azure App Service 中的 FTP?
Azure App Service 支援透過主動與被動模式進行連線。 建議使用被動模式,因為部署電腦通常位於防火牆背後 (或在作業系統中或是家用或公司網路的一部分)。 請參閱 WinSCP 文件中的範例。
為什麼在嘗試使用明確加密透過 FTPS 連線時連線失敗?
FTPS 允許以明確或隱含方式建立 TLS 安全連線。
- 如果您使用 [隱含] 加密連線,則連線會透過連接埠 990 建立。
- 如果您使用 [明確] 加密連線,則連線會透過連接埠 21 建立。
您使用的 URL 格式可能會影響連線成功,也取決於您使用的用戶端應用程式。 入口網站會將 URL 顯示為 ftps://
,但請注意:
- 如果您連線的 URL 開頭為
ftp://
,則表示連線會隱含在連接埠 21 上。 - 如果開頭為
ftps://
,則連線會隱含為 [隱含],且在連接埠 990 上。
請務必不要混合這兩者,例如嘗試連線 ftps://
並使用連接埠 21,因為它將無法連線,即使您想要進行明確加密也一樣。 這是因為在 AUTH 方法之前,以一般 FTP 連線開始 [明確] 連線。
如何判斷用來部署 Azure App Service 的方法?
您可以藉由檢查應用程式設定來了解部署應用程式的方式。 如果是使用外部套件 URL 部署應用程式,您應該會在應用程式設定中看到 WEBSITE_RUN_FROM_PACKAGE
設定具有 URL 值。 或者,如果是使用 zip deploy 部署,您應該會看到 WEBSITE_RUN_FROM_PACKAGE
設定具有值 1
。 如果是使用 Azure DevOps 部署應用程式,您應該會在 Azure DevOps 入口網站中看到部署歷程記錄。 如果是使用 Azure Functions Core Tools,您應該會在 Azure 入口網站中看到部署歷程記錄。