使用 FTP/S 将应用部署到 Azure 应用服务

本文介绍如何使用文件传输协议(FTP)或文件传输协议安全(FTPS)将 Web 应用、移动应用后端或 API 应用部署到 Azure 应用服务。 无需配置才能启用 FTP 或 FTPS 应用部署。 应用的 FTP/S 终结点已处于活动状态。

注释

必须启用 SCM 基本身份验证发布凭据FTP 基本身份验证发布凭据 ,才能使 FTP/S 部署正常工作。 禁用 基本身份验证后,FTP/S 部署不起作用,无法在应用的 部署中心查看或配置 FTP/S 凭据。

获取部署凭据

若要获取部署凭据,请按照配置 Azure 应用服务的部署凭据中的说明作。 复制应用的应用程序范围凭据,或设置和复制用户范围凭据。 可以使用任一凭据集连接到应用的 FTP/S 终结点。

对于应用程序范围凭据,FTP/S 用户名格式为 <app-name>\$<app-name>。 对于用户范围凭据,FTP/S 用户名格式为 <app-name>\<username>. 应用服务 FTP/S 终结点在应用之间共享,并且由于用户范围凭据未链接到特定资源,因此必须将用户名前面加上应用名称。

获取 FTP/S 终结点

要获取 FTP/S 终结点,请执行以下操作:

在应用的 Azure 门户页上,在左侧导航菜单中的“部署”下选择“部署中心”。 在 “FTPS 凭据 ”选项卡上,复制 FTPS 终结点 URL。

将文件部署到 Azure

使用 FTP/S 将文件部署到 Azure:

  1. 从 FTP/S 客户端(如 Visual StudioCyberduckWinSCP)使用连接信息连接到应用。
  2. 将文件及其目录结构复制到 Azure 中的 /site/wwwroot 目录或 WebJobs 的 /site/wwwroot/App_Data/Jobs/ 目录。
  3. 浏览到应用的 URL,以验证该应用是否正在正常运行。

注释

本地 Git 部署ZIP 部署不同,FTP/S 部署不支持生成自动化,例如:

  • 还原 NuGet、NPM、PIP 和 Composer 自动化等依赖项。
  • 编译 .NET 二进制文件。
  • 生成 web.config 文件。

必须在本地计算机上手动生成这些必要的文件,然后使用应用部署这些文件。 有关 Node.js web.config 的示例,请参阅 用于 Node 应用程序的自定义 web.config

强制实施 FTPS

FTPS 是一种更安全的 FTP 形式,它使用传输层安全性(TLS)和安全套接字层(SSL)。 为了增强安全性,应通过 TLS/SSL 强制实施 FTPS。 如果不使用 FTP 部署,还可以禁用 FTP 和 FTPS。

禁用未加密的 FTP:

  1. 在应用的 Azure 门户页上,在左侧导航菜单中的“设置”下选择“配置”。

  2. “配置”页的“常规设置”选项卡上,在“平台设置”下,仅针对 FTP 状态选择 FTPS 或者要完全禁用 FTP 和 FTPS,请选择 “已禁用”。

    显示仅将 FTP 状态设置为 FTPS 的屏幕截图。

  3. 如果仅选择 FTPS,请确保对 最低入站 TLS 设置强制实施 TLS 1.2 或更高版本。 仅 FTPS 不支持 TLS 1.0 和 1.1。

  4. 在页面顶部选择“保存”。

排查 FTP/S 部署问题

部署期间我的应用会发生什么情况?

所有官方支持的部署方法均会更改应用的 /home/site/wwwroot 文件夹中的文件。 这些文件用于运行你的应用。 因此,部署可能会因为锁定的文件而失败。 应用可能会在部署期间发生不可预测的行为,因为这些文件并非同时更新。 这种行为对于面向客户的应用来说是需要避免的。 可以通过几种方法避免这些问题:

FTP/S 部署故障排除的第一步是什么?

FTP/S 部署故障排除的第一步是区分部署问题和运行时应用程序问题。

  • 部署问题通常会导致没有文件或错误文件被部署到应用程序。 可以通过调查 FTP/S 部署或选择备用部署路径(例如源代码管理)进行故障排除。

  • 运行时应用程序问题通常会导致将正确的文件部署到应用,但应用行为不正确。 可以通过专注于运行时的代码行为和调查特定故障路径来进行故障排除。

有关详细信息,请参阅 部署与运行时问题

为什么我无法 FTP/S 并发布我的代码?

检查是否输入了正确的 主机名凭据。 此外,请确保防火墙未阻止计算机上的以下 FTP/S 端口:

  • FTP/S 控制连接端口: 21990
  • FTP/S 数据连接端口: 98910001-10300

如何通过被动模式连接到 Azure 应用服务中的 FTP/S?

Azure 应用服务支持通过主动模式和被动模式进行连接。 被动模式是首选,因为部署计算机通常位于作系统中的防火墙后面,或者作为家庭或业务网络的一部分。 有关被动模式连接的示例,请参阅“连接页”(“高级站点设置”对话框)。

尝试使用显式加密通过 FTPS 进行连接时,为何我的连接失败?

FTPS 允许建立显式或隐式 TLS 安全连接。

  • 如果使用显式加密进行连接,则通过端口 21建立连接。
  • 如果使用隐式加密进行连接,则通过端口 990建立连接。

使用的 URL 格式可能会影响连接成功,具体取决于客户端应用程序。 门户会显示URL为ftps://,但如果您连接的URL是以ftp://开头的,则意味着该连接是在21端口上进行的。 如果 URL 以 ftps://开头,则连接是隐式的且默认通过端口 990进行。

确保不要混淆设置,例如尝试使用端口 ftps:// 连接到 21。 此设置即便在使用显式加密时也无法连接,因为显式连接在采用 AUTH 方法之前,初始以普通FTP连接形式启动。

如何确定用于部署应用的方法?

可以通过在其 Azure 门户页上检查应用程序设置来了解如何部署应用。 在左侧导航菜单中的“设置”下选择环境变量。 在 “应用设置 ”选项卡上:

  • 如果应用是使用外部包 URL 部署的,则 WEBSITE_RUN_FROM_PACKAGE 设置会显示在具有 URL 值的应用程序设置中。
  • 如果应用是使用 ZIP 部署部署的,则 WEBSITE_RUN_FROM_PACKAGE 设置将显示为值 1

如果使用 Azure DevOps 部署了应用,可以在 Azure DevOps 门户中查看部署历史记录。 如果使用了 Azure Functions Core Tools,可以在 Azure 门户中查看部署历史记录。