同步 IIS
作者:Faith A
本快速入门指南将指导你完成使用 Web 部署工具将 IIS 源计算机上的网站同步到 IIS 目标计算机的过程。 为此,可以将数据“推送”到远程目标,或从远程源“拉取”数据。 本指南将介绍这两种方法以及使用包文件的选项,这样你就无需安装 Web 部署代理服务(MsDepSvc 或“远程代理服务”)。
使用 Web 部署工具同步的方法有哪些?
- 推送(从本地源同步到远程目标)
- 拉取(从远程源同步到本地目标)
- 独立同步(从目标和源都位于远程的计算机启动同步)
- 手动本地同步(创建源的包文件并将其复制到目标,然后在本地运行该文件)
先决条件
本指南要求满足以下先决条件:
- .NET Framework 2.0 SP1 或更高版本
- Web 部署工具 1.1
注意:如果尚未安装 Web 部署工具,请参阅安装并配置 Web 部署。
第 1 部分 - 查看站点的依赖项
通过运行以下命令来获取网站的依赖项:
msdeploy -verb:getDependencies -source:apphostconfig="Default Web Site"
查看依赖项的输出,并查找站点正在使用的任何脚本映射或已安装的组件。 例如,如果网站正在使用 Windows 身份验证,你将看到 <依赖项名称="WindowsAuthentication" />。
如果站点继承任何脚本映射,这些映射不会在依赖项中列出,你还应手动查看站点的脚本映射。
编译目标上所需的组件列表。
有关分析 getDependencies 输出的详细步骤,请参阅查看网站依赖项。
第 2 部分 - 配置目标(目标)
查看依赖项列表并将其安装在目标服务器上。 例如,假设你对网站使用了以下组件:
- ASP.NET
- Windows 身份验证
- 匿名身份验证
根据对依赖项的分析,在执行同步之前,你将在目标服务器上安装这些组件。
第 3 部分 - 将网站同步到目标
始终备份目标服务器和源服务器。 即使只是进行测试,这样做也可使你轻松还原服务器的状态。 运行以下命令以备份 IIS 7 或更高版本的服务器:
%windir%\system32\inetsrv\appcmd add backup "PreMsDeploy"
在源或目标上安装远程代理服务,具体取决于是要从远程源“拉取”数据还是将数据“推送”到远程目标。
在计算机上启动服务。
net start msdepsvc
运行以下命令,以验证在运行同步时会发生什么情况。 -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
验证输出后,再次运行不带 -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
{可选 - 使用包文件将站点同步到目标}
如果不想使用远程服务,可以改用包(压缩文件)。
在源服务器上运行以下命令,以创建用于同步的网站包:
msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:package=c:\site1.zip
将包文件复制到目标服务器。
在目标服务器上运行以下命令,以验证在运行同步时会发生什么情况:
msdeploy -verb:sync -source:package=c:\site1.zip -dest:apphostconfig="Default Web Site" -whatif > msdeploysync.log
验证输出后,再次运行不带 -whatif 标志的相同命令:
msdeploy -verb:sync -source:package=c:\site1.zip -dest:apphostconfig="Default Web Site" > msdeploysync.log
现已完成站点同步。 若要进行验证,请测试一下是否可以浏览到目标服务器上的网站。 有关故障排除帮助,请参阅对 Web 部署进行故障排除。
总结
现在,你已将网站从源 IIS 服务器同步到目标 IIS 服务器,包括查看依赖项、配置目标 IIS 服务器和执行同步。