本文介绍如何使用 FTP 或 FTPS 将 Web 应用、移动应用后端或 API 应用部署到 Azure 应用服务。
应用的 FTP/S 终结点已处于活动状态。 无需配置才能启用 FTP/S 部署。
注释
禁用 FTP 基本身份验证后,FTP/S 部署不起作用,并且无法在应用的部署中心查看或配置 FTP 凭据。
按照 配置 Azure 应用服务的部署凭据 的说明复制应用程序范围凭据或设置用户范围凭据。 您可以使用任一凭据连接到您的应用程序的 FTP/S 终结点。
根据所选凭据范围,采用以下格式创建 FTP 用户名:
应用程序范围 用户范围 <app-name>\$<app-name>
<app-name>\<deployment-user>
在应用服务中,FTP/S 终结点在应用之间共享。 由于用户范围凭据未链接到特定资源,因此需要将用户范围用户名前面加上应用名称,如上所示。
- Azure 门户
- Azure CLI
- Azure PowerShell
还是在应用中复制部署凭据的同一管理页(“部署中心”>“FTP 凭据”)上,复制 FTPS 终结点。
- 从 FTP 客户端(例如 Visual Studio、 Cyberduck 或 WinSCP)使用收集的连接信息连接到应用。
- 将文件及其各自的目录结构复制到 Azure 中的 /site/wwwroot 目录 (或 WebJobs 的 /site/wwwroot/App_Data/Jobs/ directory)。
- 浏览到应用的 URL,以验证该应用是否正在正常运行。
注释
与 基于 Git 的部署 和 Zip 部署不同,FTP 部署不支持生成自动化,例如:
- 还原依赖项(如 NuGet、NPM、PIP 和 Composer 自动化)
- .NET 二进制文件的编译
- 生成 web.config(以下提供一个 Node.js 示例)
在本地计算机上手动生成这些必要的文件,然后将其与应用一起部署。
为了增强安全性,应仅允许通过 TLS/SSL 进行 FTP。 如果不使用 FTP 部署,还可以禁用 FTP 和 FTPS。
- Azure 门户
- Azure CLI
- Azure PowerShell
在 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 并发布代码。 如何解决此问题?
- 如何在 Azure 应用服务中通过被动模式连接到 FTP?
- 尝试使用显式加密通过 FTPS 进行连接时,为何我的连接失败?
- 如何确定用于部署 Azure 应用服务的方法?
排查 FTP 部署问题的第一步是将部署问题与运行时应用程序问题隔离开来。
部署问题通常会导致没有文件或错误文件被部署到应用程序。 可以通过调查 FTP 部署或选择备用部署路径(如源代码管理)进行故障排除。
运行时应用程序问题通常会导致将正确的文件集部署到应用,但应用行为不正确。 可以通过专注于运行时的代码行为和调查特定故障路径来进行故障排除。
若要确定部署或运行时问题,请参阅 部署与运行时问题。
检查是否输入了正确的 主机名 和 凭据。 另请检查计算机上的以下 FTP 端口是否不受防火墙阻止:
- FTP 控制连接端口:21、990
- FTP 数据连接端口:989、10001-10300
Azure 应用服务支持通过主动模式和被动模式进行连接。 被动模式是首选模式,因为部署计算机通常位于防火墙后面(在作系统中或作为家庭或业务网络的一部分)。 请参阅 WinSCP 文档中的示例。
FTPS 允许以显式或隐式方式建立 TLS 安全连接。
- 如果使用隐式加密进行连接,则通过端口 990 建立连接。
- 如果使用显式加密进行连接,则通过端口 21 建立连接。
使用的 URL 格式可能会影响连接成功,这也取决于使用的客户端应用程序。 门户显示的 URL 为 ftps://
,但请注意:
- 如果连接的 URL 以开头
ftp://
,则表示连接位于端口 21 上。 - 如果它以
ftps://
开头,则连接被视为隐含,并通过端口 990 进行。
请确保不要混合使用这两者,例如尝试连接到 ftps://
和使用端口 21,因为它将无法连接,即使你想要进行显式加密也是如此。 这是因为在 AUTH 方法之前,显式连接从普通 FTP 连接开始。
可以通过检查应用程序设置来了解如何部署应用。 如果应用是使用外部包 URL 部署的,你应该在应用程序设置中看到带有 URL 值的 WEBSITE_RUN_FROM_PACKAGE
设置。 或者,如果它是使用 zip deploy 部署的,则你应会看到 WEBSITE_RUN_FROM_PACKAGE
设置包含 1
值。 如果应用是使用 Azure DevOps 部署的,则应在 Azure DevOps 门户中看到部署历史记录。 如果使用 Azure Functions Core Tools,则应在 Azure 门户中看到部署历史记录。