如何将IIS6服务器的网站批量迁移到IIS7中

16 篇文章 0 订阅

如何将IIS6服务器的网站批量迁移到IIS7中

技术文档 2010-12-02 16:21:44 阅读7 评论0   字号: 订阅



实验环境

源IIS7服务器

OS:Windows server 2003 Enterprise (英文版)

机器名称:web1
IP:192.168.1.20/24
安装了IIS、ASP.net,如下图所示

目标IIS7服务器

OS:Windows server 2008 Datacenter
机器名称:web2
IP:192.168.1.30/24
安装的IIS Role Services如下图所示,网站文件和日志的路径与IIS6服务器的路径一样。

笔者的环境中共有里面有三个测试网站,同时请注意网站的ID,下面的实验会用到这些网站ID。

网站目录放在E:/web,里面共有3个网站。日志目录放在E:/IISlog,如下图所示

其中web目录给iusr_Web1和IWAM_Web1分配了只读权限,Administrator和system分配了完全控制权限,如下图所示
Iusr和IIS_iusrs的权限。

Administrators和system的权限

介绍完我的实验环境后,接下介绍迁移的工具,在迁移IIS6的网站到IIS7中,要使用一个微软出的免费的一个基于命令行的迁移工具Microsoft Web Deployment Tool,目前这个工具还是Tech Preview 1版,并只支持英文版的IIS6。换言之,如果您的IIS6服务器是Windows server 2003中文版的话,很遗憾,您还不能用这个版本的工具来迁移您的IIS6网站到IIS7中。这个工具可以在这个网址下载http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1602
接下来介绍Microsoft Web Deployment Tool的用法,安装这个工具之前必须先安装Microsoft .NET Framework 2.0 Service Pack 1,从iis.net下载Microsoft Web Deployment Tool后,双击,打开安装界面

Next ->接受协议

选择典型安装

单击Install开始安装

安装后,可以在C:/Program Files/Microsoft Web Deploy目录找到msdeploy.exe
接下来简单简单介绍msploy的命令参数:
MSDEPLOY <-verb:<name>> <-source:<object>> [-dest:<object>] [args ...]
-verb:表示要执行动作,比如GetDependencies参数检查被迁移网站所依赖的iis组件,migrate参数将网站迁移到IIS7中。
-source:要进行操作源对象,比如IIS6服务器上的某个网站,或整个 IIS6服务器
-dest:要进行操作的目标对象,比如将IIS6服务器的某个网站备份为某地文件,以便IIS7导入。
更详细的参数说明请运行msdeploy /?来查看

介绍完实验环境和相关的工具后,开始进行迁移操作迁移IIS6上的单个网站到IIS7中1.
在IIS6的命令行界面中,运行以下命令,检查被迁移网站需要的IIS组件,这次我要迁移hello网站,请注意上面截图关于hello网站的ID
msdeploy -verb:getDependencies -source:metakey=lm/w3svc/1121771730 (Hello的网站ID)
系统返回以下信息
<dependencyInfo>

<dependencies>

<dependency name="Metabase" />

<dependency name="AnonymousAuthentication" />

<dependency name="WindowsAuthentication" />

</dependencies>

<apppoolsInUse />

<cgis />

<isapis />

<drives totalSpace="11">

<drive name="E:" size="11" isUnc="False" sizeWindir="0" sizeInetpub="0" />

</drives>
</dependencyInfo>

2.请注意上面的dependency name=,这里表示这个网站要依赖这些组件才能运行,然后检查IIS7中是否已经安装了相应的Role Services,比如WindowsAuthentication。因为实验关系,我已在IIS7中提前安装好所需要的Role services

3.在IIS6的命令行界面中,运行以下命令,将hello网站连同配置信息和网站导到c:/site1archive,然后copy到IIS7的c:/site1archive
msdeploy -verb:sync -source:metakey=lm/w3svc/1121771730 -dest:archivedir=c:/site1archive

4.在IIS7中运行以下命令,检查从iis6导出的文件是否能导入到IIS7服务器中,请注意这里面使用了一个whatif参数,表示仅仅是做测试,而不是正式的导入。其中w3svc/2中的2表示导入到IIS7后,使用网站ID 2,请注意不要和已有的网站ID重复。值得注意是,如果您的网站文件从中文版的IIS6服务器导出来的话,那么在做检测的时候您遇到这样一个提示信息:Fatal: Dependency Check: 'Migrate6to7' Level: 'Fatal' Passed: 'False' Fail Operation: 'True',然后无法导入。
msdeploy -verb:migrate -source:archivedir=c:/site1archive -dest:metakey=lm/w3svc/2 –whatif

系统返回
Action: Adding metaKey (/lm/w3svc/2)
Action: Adding child metaProperty (/lm/w3svc/2/ServerComment)
Action: Adding child rootWebConfig (metaKey/metaProperty[@name='ServerComment']/rootWebConfig[@path='hello'])
Action: Adding child machineConfig (metaKey/metaProperty[@name='ServerComment']/machineConfig[@path='hello'])
Action: Adding child metaProperty (/lm/w3svc/2/ServerAutoStart)
Action: Adding child metaProperty (/lm/w3svc/2/ServerBindings)
Action: Adding child metaKey (/lm/w3svc/2/filters)
Action: Adding child metaKey (/lm/w3svc/2/root)
Action: Adding child metaProperty (/lm/w3svc/2/root/Path)
Action: Adding child dirPath (c:/site1archive/E_C_SWeb_Shello)
Action: Adding child filePath (c:/site1archive/E_C_SWeb_Shello/Default.htm)
Action: Adding child metaProperty (/lm/w3svc/2/root/AuthFlags)
Action: Adding child metaProperty (/lm/w3svc/2/root/AccessFlags)
Action: Adding child metaProperty (/lm/w3svc/2/root/DirBrowseFlags)
Action: Adding child metaProperty (/lm/w3svc/2/root/AppRoot)
Change count: 15

5.检查没有发现错误,然后去掉-whatif参数,继续运行上面的命令,将网站正式导入到IIS7中。

6.检查是否已导入到IIS7中

检查网站网录,hello网站已被copy到IIS7中IIS6相同的位置e:/web/hello。请注意:需要对迁移后的网站文件重设NTFS权限,否则迁移后的网站可能因为权限问题而导致无法访问。

打开IIS7的IIS管理器,发现hello网站已被添加到管理器中。

在IIS7上通过修改本机hosts文件解释域名,然后测试访问hello网站,成功!

在IIS6的命令行界面中,运行以下命令,检查IIS6上所有网站共需要的IIS组件。请注意,这里不再使用网站ID,而使用了另外一个参数webserver60,这个参数表示操作对像是整个IIS6服务器。msdeploy -verb:getDependencies -source:webserver60

系统返回
<dependencyInfo>

<dependencies>

<dependency name="Metabase" />

<dependency name="AnonymousAuthentication" />

<dependency name="WindowsAuthentication" />

<dependency name="ISAPIFilter" />

<dependency name="ServerSideIncludeDisabled" />

<dependency name="AspNet1.1" />

</dependencies>

<apppoolsInUse>

<apppoolInUse name="DefaultAppPool" definiti />

</apppoolsInUse>

<cgis />

<isapis>

<isapi dll="C:/WINDOWS/system32/inetsrv/httpodbc.dll" enabled="False" />

</isapis>

<drives totalSpace="135900184">

<drive name="c:" size="28163" isUnc="False" sizeWindir="0" sizeInetpub="28163" />

<drive name="E:" size="135872021" isUnc="False" sizeWindir="0" sizeInetpub="0" />

</drives>
</dependencyInfo>

请注意上面的dependency name=,这里表示IIS6里面的所有网站要依赖这些组件才能运行,然后检查IIS7中是否已经安装了相应的Role Services,比如WindowsAuthentication。因为实验关系,我已在IIS7中提前安装好所需要的Role services

在IIS6的命令行界面中,运行以下命令,将IIS6的所有网站连同配置信息和网站文件导到c:/iis6,然后copy到IIS7的c:/iis6
msdeploy -verb:sync -source:metakey=lm/w3svc/1121771730 -dest:archivedir= c:/iis6

在IIS7中运行以下命令,检查从iis6导出的文件是否能导入到IIS7服务器中,请注意这里面使用了一个whatif参数,表示仅仅是做测试,而不是正式的导入。值得注意是,如果您的网站文件从中文版的IIS6服务器导出来的话,那么您遇到这样一个提示信息:Fatal: Dependency Check: 'Migrate6to7' Level: 'Fatal' Passed: 'False' Fail Operation: 'True',然后无法导入。
msdeploy -verb:migrate -source:archivedir=c:/iis6 -dest:webserver60 –whatif

检查没有发现错误,然后去掉-whatif参数,继续运行上面的命令,将网站正式导入到IIS7中。检查是否已导入到IIS7中

检查网站网录,IIS6的所有网站文件已被copy到IIS7中与IIS6相同的位置e:/web,请注意:需要对迁移后的网站文件重设NTFS权限,否则迁移后的网站可能因为权限问题而导致无法访问。

打开IIS7的IIS管理器,发现里面的内容与IIS6管理器里内容一样!
在IIS7上通过修改本机hosts文件解释域名,然后访问迁移后的网站,成功!

总结:将网站从IIS6向IIS7迁移,微软提供了Microsoft Web Deployment Tool这么一个免费的命令行工具,由于该软件目前还是预览版,所以还不支持中文版的IIS6服务器。相信微软推出正式版的时候,会将这些问题解决,甚至还会提供图形界面,如果看过我另外一篇文章《将网站从一台iis7服务器中批量迁移到另外一台IIS7》的朋友会发现,IIS7之间的迁移比IIS6间迁移简单很许多了,除了IIS7比IIS6提供了更好的性能外,还会从IIS7中更容易管理的特性中受惠。


参考资料:
Microsoft Web Deployment Tool的下载地址
http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1602

Migrating from IIS 6.0 to IIS 7.0 using MS Deploy
http://learn.iis.net/page.aspx/427/migrating-from-iis-60-to-iis-70-using-ms-deploy/

Viewing Dependencies for a Web site
http://learn.iis.net/page.aspx/424/viewing-the-dependencies-for-a-web-site/

PS:在实际使用过程中遇到win2k3中因为有.net 1.1而win2k8中没有的情况,导致网站不能被导入。
在win2k8上安装.net 1.1即可。

另外也遇到有需加密参数的,确保源和目标两个参数后都有加密串。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值