使用 VWD 部署 FTP 和发布的指南

作者:Walter Oliver

IIS 的 FTP 服务是 Windows Web 平台的关键组件。 它为 Windows 环境中的 FTP 提供安全可靠的解决方案。 共享托管环境管理员可以使用 FTP for IIS 来支持其客户上传和同步内容。 Microsoft 和 FTP 的新增功能一文介绍了新的 FTP 功能。 以下是一些亮点:

  • 与 IIS 集成:

    • 基于 .NET XML 的 *.config 格式的新配置存储
    • 新的管理工具
  • 安全性和对新 Internet 标准的支持:

    • FTP over SSL
    • 用于身份验证的非 Windows 帐户
    • UTF8 和 IPv6
  • 共享托管改进:

    • 通过将 FTP 绑定添加到现有网站来托管来自同一站点的 FTP 和 Web 内容
    • 支持虚拟主机名,使用户能够在同一 IP 地址上托管多个 FTP 站点
    • 通过每用户虚拟目录改进了用户隔离
  • 改进了日志记录和可支持性功能:

    • 增强的 FTP 日志记录包括所有 FTP 相关流量、FTP 会话的独特跟踪、FTP 子状态以及 FTP 日志中的其他详细信息字段
    • 本地登录到 FTP 服务器时的详细错误响应
    • 使用 Windows 事件跟踪 (ETW) 时的详细信息,提供用于故障排除的附加信息

以下视频概述并演示了 FTP 7.0 中的多项功能。

部署 FTP

FTP 是共享托管配置中的前端服务器之一。

Diagram of F T P service deployment involving the interactions between the front end and back end servers.

此图突出显示了共享托管环境中 FTP 部署的几个重要特征:

  1. FTP 服务可以共享用于远程管理(Web 管理 - WMSVC)和 MS Deploy 服务的同一台计算机。
  2. FTP 计算机是 Web 场服务器使用的共享配置的一部分,这意味着,安装在该计算机上的组件也应该位于 Web 场服务器上。 但是,由于 Web 场不用于处理 FTP 请求,因此可以停止 FTP、Web 管理 (WMSVC) 和 MS Deploy 服务。
  3. FTP 计算机不适合托管 Web 应用程序。
  4. 面向 Internet 的防火墙路由器执行 FTP 流量到 FTP 服务器的端口转发。

部署配置

FTP for IIS 服务器具有多项功能,使其成为共享托管方案的理想选择。 以下指导利用新的 FTP 用户隔离功能。 此功能允许:

  • 管理员将用户限制为只能访问针对用户定义的物理目录或虚拟目录。 这意味着实现单个 FTP 站点;该站点将为每个用户名包含一个特定的物理目录或虚拟目录。
  • 当用户明确提出要求时,管理员可以启用 SSL 并为所有连接使用单个证书。
  • 用户可以将 FTP 站点视为自己的站点。 当他们登录到 FTP 服务器时,他们将被限制在其特定目录中,并且无法在目录树中向上导航。

步骤

  1. 选择 FTP 计算机并安装新的 FTP for IIS 服务。 请按照安装 FTP 和对其进行故障排除中的说明操作。

  2. 创建用于 FTP 站点的根文件夹,例如:%*SystemDrive*%\inetpub\ftproot

  3. (可选)如果存在 FTP 高可用性和/或负载均衡要求,Microsoft 将提供网络负载均衡故障转移群集等解决方案,在此情况下,DNS 轮循机制可能就足够了。

  4. 创建允许 SSL 连接和基本身份验证的站点。 按照创建支持 SSL 的站点部分中所述的步骤操作。

  5. 启用用户隔离功能。 按照为所有目录配置用户隔离部分中所述的步骤操作。

  6. 按照下面相应部分中的说明配置 FTP 防火墙设置。

  7. 停止 Windows 进程激活服务 (WAS):

    • 在命令提示符下,键入 services.msc,这会显示“服务”控制台。
      Screenshot of the Services console with Windows Process Activation Service selected.
    • 双击“Windows 进程激活服务”
      Screenshot of the Windows Process Activation Service Properties with Startup type set to Disabled.
    • 在“Windows 进程激活服务属性”对话框中,确保该服务的“启动类型”设置为“已禁用”。 单击“停止”,然后单击“确定”

创建支持 SSL 的站点

在本部分,你将创建一个可以使用任何用户帐户打开的新 FTP 站点。

  1. 转到 IIS 管理器。 在“连接”窗格中,单击树中的“站点”节点。

  2. 右键单击树中的“站点”节点,单击“添加 FTP 站点”,或者单击“操作”窗格中的“添加 FTP 站点”
    Screenshot of an emphasized Add F T P Site option after right-clicking Sites in the Connections pane.

  3. 当“添加 FTP 站点向导”出现时:

    • 在“FTP 站点名称”文本框中输入“我的新 FTP 站点”,然后导航到为 FTP 站点创建的根文件夹(例如:%*SystemDrive*%\inetpub\ftproot)。

      注意

      如果选择键入内容文件夹的路径,可以在路径中使用环境变量。

    • 单击 “下一步”
      Screenshot of the Add F T P Site dialog with the specified Site Information.

  4. 在向导的下一页:

    • 在“IP 地址”文本框中选择 FTP 站点的 IP 地址,或者选择接受默认选择“所有未分配”。此示例使用本地环回 IP“127.0.0.1”。
    • 在“端口”文本框中输入 FTP 站点的 TCP/IP 端口。 此示例使用默认端口“21”。
    • 确保“虚拟主机”文本框为空。 请勿使用主机名。
    • 确保“证书”下拉列表设置为要使用的相应证书。 此示例使用名为“My FTP Certificate”的自签名证书。有关说明,请参阅创建自签名 SSL 证书
    • 确保选中“允许 SSL”选项
    • 单击 “下一步”
      Screenshot of the Add F T P Site dialog with the specified Binding and S S L Settings.
  5. 在向导的下一页:

    • 对于“身份验证”设置,选择“基本”

    • 对于“授权”设置

      • 在“允许以下对象访问”下拉列表中,选择“所有用户”
      • 对于“权限”选项,选择“读取”和“写入”
    • 完成这些项,然后单击“完成”
      Screenshot of the Add F T P Site dialog with the specified Authentication and Authorization Information.

总结

现已使用新的 FTP 服务新建了基于 SSL 的 FTP 站点。 回顾在此过程中完成的项:

  • 你新建了名为“我的新 FTP 站点”的新 FTP 站点,该站点的内容根目录位于 %*SystemDrive*%\inetpub\ftproot
  • 你将 FTP 站点绑定到了计算机的 IP 地址,端口为 21。
  • 你选择了允许为 FTP 站点使用安全套接字层 (SSL),并选择了你的证书。
  • 你启用了基本身份验证,并为所有用户帐户创建了授权规则,使其能够进行读取和写入访问。

要直接编辑 XML 配置文件,请参阅通过编辑 IIS 配置文件添加基于 SSL 的 FTP 发布

为所有目录配置用户隔离

隔离所有目录的用户时,所有 FTP 用户会话将限制为与 FTP 用户帐户同名的物理或虚拟目录。 此外,将忽略创建的所有全局虚拟目录。 在此步骤中,你将为所有目录配置用户隔离。

  1. %*SystemDrive*%\inetpub\ftproot\LocalUser\ 处创建一个文件夹。 此文件夹将包含所有本地用户帐户目录。 可以在文件共享服务器 (NAS) 上创建此文件夹。 预配用户帐户时,还必须分配对用户内容文件夹的读取和写入访问权限。
  2. 在 IIS 管理器中,单击刚刚创建的 FTP 站点的节点。 这会显示所有 FTP 功能的图标。
  3. 双击“FTP 用户隔离”图标打开 FTP 用户隔离功能。
    Screenshot of the My New F T P Site Home pane with F T P User Isolation selected.
  4. 显示“FTP 用户隔离”功能页后,选择“用户名目录(禁用全局虚拟目录)”,然后单击“操作”窗格中的“应用”
    Screenshot of the F T P User Isolation pane with restricting users to the User name directory.

总结

回顾在此过程中完成的项:你使用“用户名目录(禁用全局虚拟目录)”选项配置了 FTP 用户隔离。 使用此用户隔离模式时,所有 FTP 用户会话将限制为与 FTP 用户帐户同名的虚拟或物理目录,并且将忽略创建的所有全局虚拟目录。

若要为每个用户创建主目录,首先需要在 FTP 服务器的根文件夹下创建一个虚拟或物理目录,该目录与域同名,或者为本地用户帐户命名为 LocalUser。 接下来,需要为每个要访问 FTP 站点的用户帐户创建一个虚拟或物理目录。 下表列出了 FTP 服务随附的身份验证提供程序的主目录语法:

用户帐户类型 物理主目录语法
匿名用户 %FtpRoot%\LocalUser\Public
本地 Windows 用户帐户(需要基本身份验证) %FtpRoot%\LocalUser\%UserName%
Windows 域帐户(需要基本身份验证) %FtpRoot%\%UserDomain%\%UserName%
IIS 管理器或 ASP.NET 自定义身份验证用户帐户 %FtpRoot%\LocalUser\%UserName%

注意

在上表中,%FtpRoot% 是 FTP 站点的根目录;例如 C:\Inetpub\Ftproot

全局虚拟目录将被忽略;任何 FTP 用户都无法访问在 FTP 站点根级别配置的虚拟目录。 必须在用户的物理或虚拟主目录路径下显式定义所有虚拟目录。

配置 FTP 防火墙设置

为 FTP 服务配置被动端口范围

在本部分,你将配置与 FTP 服务建立的被动连接的服务器级端口范围。 请使用以下步骤:

  1. 转到 IIS 管理器。 在“连接”窗格中,单击树中的服务器级节点。
    Screenshot of MY SERVER selected in the Connections pane with the MY SERVER Home pane displayed.

  2. 在功能列表中双击“FTP 防火墙支持”图标
    Screenshot of F T P Firewall Support selected in the MY SERVER Home pane.

  3. 为“数据通道端口范围”输入值范围
    Screenshot of the Data Channel Port Range set to a value of 49152 dash 65535 in the F T P Firewall Support pane.

  4. 输入 FTP 服务的端口范围后,单击“操作”窗格中的“应用”以保存配置设置

    注意

    • 端口的有效范围为 1025-65535。 (端口 1-1024 保留供系统服务使用。)

    • 可以输入特殊端口范围“0-0”以将 FTP 服务器配置为使用 Windows TCP/IP 动态端口范围。

    • 有关更多信息,请参阅以下 Microsoft 知识库文章:

    • 需要将此端口范围添加到防火墙服务器允许的设置中。

  5. 在“防火墙的外部 IP 地址”设置中,输入防火墙服务器面向外部的 IPv4 地址
    Screenshot of the External I P Address of Firewall set to a value of 131 dot 107 dot 0 dot 100.

  6. 输入防火墙服务器的外部 IPv4 地址后,单击“操作”窗格中的“应用”以保存配置设置

总结

回顾在此过程中完成的项:

  1. 你为 FTP 服务配置了被动端口范围。
  2. 你为特定 FTP 站点配置了外部 IPv4 地址。

有关如何配置 Windows Server 2008 防火墙的信息,请参阅(可选)步骤 3:配置 Windows 防火墙设置。 另请参阅有关使用防火墙的详细信息

FTP 服务器名称示例

当托管商为其客户预配帐户时,通常会使用包含的 FTP 服务。 上面提供的说明将为客户启用 FTP for IIS 服务,但 FTP 服务器名称(如果仅基于托管公司名称)可能如下所示:

ftp.hostingcompany.com。此类名称对于所有用户而言可能足够清楚;当客户使用它连接到 FTP 目录时,他们将进入自己的目录,并且只能看到自己的文件夹。 但是,FTP 服务器名称可能不如基于保留域的 FTP 服务器名称对客户那样有吸引力,例如:

  • ftp.customerdomain.com
  • customerdomain.com

如果客户将其 FTP 服务器名称与其保留域名相关联,FTP 服务体验将更加个性化并有吸引力。 从功能上讲,它与以上示例相同,但此选项简化了客户的域命名。 若要为每个客户设置自定义 FTP 服务器名称,需要为客户域创建适当的 DNS 记录。 这需要执行额外的预配步骤。如果为每个客户提供自定义 FTP 服务器名称,还可能需要提供备用服务器名称,以防止更新域名时 FTP 服务中断。 与自定义名称一起提供的替代名称示例如下:ftp.username.hostingcompany.com。在这种情况下,客户将收到两个服务器名称,并且能够使用任一名称连接到同一目录;例如:

  • ftp.customerdomain.com(或 customerdomain.com)
  • ftp.username.hostingcompany.com

从 Visual Web Developer 进行连接

到目前为止,本文重点介绍了如何在共享托管环境中部署 FTP。 本部分介绍客户如何利用 Visual Web Developer 2008 (VWD) 通过托管商提供的 FTP 服务来发布其 Web 应用程序。 以下示例假定:

  • 托管公司已向名为“ftpuser1”的用户预配了一个帐户。
  • 托管公司已创建相应的虚拟文件夹“ftproot\LocalUser*ftpuser1*”。

若要使用 VWD 发布 Web 应用程序内容,ftpuser1 需执行以下步骤:

  1. Ftpuser1 在 Visual Web Developer 2008 (VWD) 中打开名为“WebSite1”的网站。
    Screenshot of the H T M L code for Default dot a s p x in Visual Web Developer.

  2. Ftpuser1 从“网站”菜单中选择“复制网站”。
    Screenshot of opening the Website option in the toolbar and selecting Copy Web Site.

  3. Ftpuser1 单击“连接”
    Screenshot before connecting the Web Site copy to the specified F T P server.

  4. Ftpuser1 输入以下值:

    • 托管公司提供的 FTP 服务器名称。 在以下示例中,环回 IP 地址为 127.0.0.1。
    • 端口。 在以下示例中,默认值为端口 21。
    • “被动模式”选项。
    • “基本身份验证”选项。 Ftpuser1 取消选择“匿名登录”。
    • 用户名:ftpuser1。
    • 密码。
  5. 然后,Ftpuser1 单击“打开”
    Screenshot of the Open Web Site dialog with the specified F T P Site information.

  6. Ftpuser1 的文件夹显示在“远程网站”窗格中。 在以下示例中,该窗格是空的,因为 ftpuser1 是首次发布网站。
    Screenshot of an empty Remote Web Site pane after opening the F T P Web Site.

  7. Ftpuser1 通过选择所有文件和文件夹,然后单击“同步”,在“源网站”窗格中发布所有内容项

    • Ftpuser1 单击左侧窗格。
    • Ftpuser1 按 Ctrl+A 以选择所有文件。
    • Ftpuser1 单击“同步”(位于两个窗格之间,从顶部算起的第三个按钮)
      Screenshot before synchronizing all selected files in the Source Web Site pane.
  8. 文件和文件夹将上传到 FTP 服务器,并存储在用户的虚拟目录 ftpuser1 中。 (由于用户隔离限制,用户将不知道同一服务器上其他用户的内容。)
    Screenshot after synchronization with copies of the synchronized files in the Remote Web site pane.

结束语

本指南提供在共享托管环境中安装和配置 FTP for IIS 服务所需的信息。 其中还介绍了客户如何利用 Visual Web Developer 将其内容发布到 FTP 站点目录。