IIS6网站迁移到IIS7/iis7.5 windows2003转到windows2008

IIS6迁移到IIS7/iis7.5  windows2003转到windows2008

IIS6网站权限,通常配置IUSR_计算机名和NETWORK SERVICE两个用户权限即可:

IIS6网站迁移到IIS7/iis7.5  windows2003转到windows2008的照片 - 1

其中IUSR_计算机名是网站匿名访问帐户,NETWORK SERVICE是网站应用程序池安全帐户:

\ - 2

然而,同样的权限配置,测试发现IIS7.5网站动态页面打开会出错。比较发现IIS7.5应用程序池安全帐户除了本地系统、网络服务和本地服务外,比IIS6多了一个ApplicationPoolIdentity,并且它是默认安全帐户:

\ - 3

这就解释了为什么网站动态页面打开会出错,然而,在Windows 2008用户或组中并没有ApplicationPoolIdentity这么一个用户,这权限要怎么配置?百度后有网友说它对应的用户为”IIS AppPool\应用程序池名”,加入后网站访问正常:

\ - 4

看下任务管理器中的变化:

\ - 5

这样相当于是有了多个NETWORK SERVICE用户,能大大降低网站被旁注的风险。当然了,也可以将IIS7.5应用程序池安全帐户设置为网络服务,这样和IIS6.0一样配置即可,但不推荐这么做。此外,若想简单配置,只赋于网站Authenticated Users组权限也是可以的(代替匿名帐户+安全帐户,但比Everyone安全)。

最近开始着手逐步将所有的Web站点由Win2003+IIS6迁移至64位Win2008+IIS7,基本还算顺利。这里就把相关内容整理总结一下。
首先自然是要安装基本运行环境,包括iis,.net framework 1.1,3.5,4.0。这里都没有啥大问题,就是安装.net frame1.1时会报一个兼容性问题的提示,这里不需要理会,继续安装即可,但装完后别忘了再安装.net framework1.1 sp1。安装完后还需要在machine.config里加上以下节点:
<section name=”system.webServer” type=”System.Configuration.IgnoreSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ />
其次就要将站点由IIS6迁移到IIS7了,如果服务器上应用系统少,部署简单,那倒是可以考虑拷贝部署目录到新服务器,然后从头进行配置的方式。但如果系统多,配置复杂,那这种方式显然不可取,这时就要使用微软的Web Deployment Tools实现迁移。Web Deployment Tools是一个比较好的工具,平时就在利用它实现多台Web服务器的同步,但它没法实现IIS6到IIS7的同步,那只好采用折中方式。
1.执行msdeploy -verb:getDependencies -source:webserver60命令,检查源服务器的依赖关系,并确保这些依赖关系在目的服务器上已正确安装配置。

 

IIS6网站迁移到IIS7/iis7.5  windows2003转到windows2008的照片 - 6

2.先后执行msdeploy -verb:sync -source:webserver60 -dest:archivedir=d:\iis,encryptPassword=password -whatif和-verb:sync -source:webserver60 -dest:archivedir=d:\iis,encryptPassword=password
其中前一条命令多了个-whatif选项,这是用于显示该命令的预计执行结果,但不进行实际操作,这条命令执行无误后可以执行后一条命令,将整个站点导出到d盘iis目录下。
3.将d盘iis目录里的所有内容拷贝到目的服务器,并在目的服务器上先后执行msdeploy -verb:sync -source:archivedir=d:\iis,encryptPassword=password -dest:webserver -whatif和msdeploy -verb:sync -source:archivedir=d:\iis,encryptPassword=password -dest:webserver将站点部署到IIS7上。这样就完成了整个站点的迁移。
然后还要检查一下各应用在新的环境下是否正常。这时候很可能就会发现.net framework1.1下的程序有问题,对应的应用程序池会显示对应的.net framework版本为2.0,且无法选择到1.1版本。

IIS6网站迁移到IIS7/iis7.5  windows2003转到windows2008的照片 - 7

这时可以通过执行appcmd命令来实现.net framework版本切换,执行
appcmd set apppool “DefaultAppPool” /managedruntimeversion:v1.1命令,之后你就会发现.net framework版本已经改成了1.1。
最后还要参照IIS6服务器的设置更改一下上传文件的允许大小。.net的程序跟原来一样修改machine.config即可,这里就不多说了。asp程序的修改方法有所不同,Win2003+IIS6下是修改C:\WINDOWS\system32\inetsrv下的metabase.xml文件,但在Win2008+IIS7下就不需要那么麻烦了,只要IIS里配置ASP应用程序属性即可。

IIS6网站迁移到IIS7/iis7.5  windows2003转到windows2008的照片 - 8

当然,如果是通过Web Deployment Tools进行迁移的,那这些设置就已经自动迁移过来了。