同步 IIS

作者:Faith A

本快速入门指南将指导你完成使用 Web 部署工具将 IIS 源计算机上的网站同步到 IIS 目标计算机的过程。 为此,可以将数据“推送”到远程目标,或从远程源“拉取”数据。 本指南将介绍这两种方法以及使用包文件的选项,这样你就无需安装 Web 部署代理服务(MsDepSvc 或“远程代理服务”)。

使用 Web 部署工具进行同步的方法有哪些?

  • 推送(从本地源同步到远程目标)
  • 拉取(从远程源同步到本地目标)
  • 独立同步(从目标和源都位于远程的计算机启动同步)
  • 手动本地同步(创建源的包文件并将其复制到目标,然后在本地运行该文件)

先决条件

本指南需要满足以下前提条件:

  • .NET Framework 2.0 SP1 或更高版本
  • Web 部署工具 1.1

注意:如果尚未安装 Web 部署工具,请参阅安装并配置 Web 部署

第 1 部分 - 查看网站的依赖项

  1. 通过运行以下命令来获取网站的依赖项:

    msdeploy -verb:getDependencies -source:apphostconfig="Default Web Site"
    
  2. 查看依赖项的输出,并查找站点正在使用的任何脚本映射或已安装的组件。 例如,如果网站正在使用 Windows 身份验证,你将看到 <依赖项名称=“WindowsAuthentication” />。

  3. 如果站点继承任何脚本映射,这些映射将不会在依赖项中列出,还应手动查看站点的脚本映射。

  4. 编译目标上所需的组件列表。

有关分析 getDependencies 输出的详细步骤,请参阅查看网站依赖项

第 2 部分 - 配置目标(目标)

查看依赖项列表并将其安装在目标服务器上。 例如,假设你对网站使用了以下组件:

  • ASP.NET
  • Windows 身份验证
  • 匿名身份验证

根据对依赖项的分析,在执行同步之前,你将在目标服务器上安装这些组件。

第 3 部分 - 将网站同步到目标

  1. 始终备份目标服务器和源服务器。 即使只是进行测试,这样做也可使你轻松还原服务器的状态。 运行以下命令以备份 IIS 7 或更高版本的服务器:

    %windir%\system32\inetsrv\appcmd add backup "PreMsDeploy"
    
  2. 在源或目标上安装远程代理服务,具体取决于是要从远程源“拉取”数据还是将数据“推送”到远程目标。

  3. 在计算机上启动服务。

    net start msdepsvc
    
  4. 运行以下命令,以验证在运行同步时会发生什么情况。 -whatif 标志不会显示每个更改,仅显示开放式视图,即如果一切成功,可能会发生什么更改(例如,它不会捕获无法写入目标的错误。)

    • 推送到在源计算机上运行的远程目标(computerName 参数标识远程目标计算机)。

      msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:apphostconfig="Default Web Site",computername=Server1 -whatif > msdeploysync.log
      
    • 从在目标计算机上运行的远程源进行拉取(computerName 参数标识远程源计算机)。

      msdeploy -verb:sync -source:apphostconfig="Default Web Site",computername=Server1 -dest:apphostconfig="Default Web Site" -whatif > msdeploysync.log
      
  5. 验证输出后,再次运行不带 -whatif 标志的相同命令

    • 推送到在源计算机上运行的远程目标

      msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:apphostconfig="Default Web Site",computername=Server1 > msdeploysync.log
      
    • 从在目标计算机上运行的远程源拉取

      msdeploy -verb:sync -source:apphostconfig="Default Web Site",computername=Server1 -dest:apphostconfig="Default Web Site" > msdeploysync.log
      

{可选 - 使用包文件将站点同步到目标}

如果不想使用远程服务,可以改用包(压缩文件)。

  1. 在源服务器上运行以下命令,以创建用于同步的网站包:

    msdeploy -verb:sync  -source:apphostconfig="Default Web Site" -dest:package=c:\site1.zip
    
  2. 将包文件复制到目标服务器。

  3. 在目标服务器上运行以下命令,以验证在运行同步时会发生什么情况:

    msdeploy -verb:sync -source:package=c:\site1.zip -dest:apphostconfig="Default Web Site" -whatif > msdeploysync.log
    
  4. 验证输出后,再次运行不带 -whatif 标志的相同命令:

    msdeploy -verb:sync -source:package=c:\site1.zip -dest:apphostconfig="Default Web Site" > msdeploysync.log
    

现已完成站点同步。 若要验证,请测试浏览到目标服务器上的网站。 有关故障排除帮助,请参阅对 Web 部署进行故障排除

总结

现在,你已将网站从源 IIS 服务器同步到目标 IIS 服务器,包括查看依赖项、配置目标 IIS 服务器和执行同步。