I've been supporting Internet Information Services since IIS3 (that sure was a challenge!). Each time a new version came out, I would test extensively both the upgrade process and also a fresh install configuration - just to be familiar with issues in both cases. But whenever dealing with production systems, I always opted for a fresh install and then migrated the site(s) from the older version to the new version.
Because I always built fresh systems I had to then deal with the often complex issue of migrating the site to the new server. This required making sure that the IIS configurations were the same (sometimes not even possible when settings changed between versions!), making sure the content was migrated, migrating permissions, and sometimes dealing with issues related to configuration of FrontPage Server Extensions.
With the release of Internet Information Services on Windows Server 2003, Microsoft has made available a tool that automates this migration process for system administrators. This tool is named the "Internet Information Services 6.0 Migration Tool" and can be downloaded from http://www.microsoft.com. This tool can be used to migrate a site from IIS4, IIS5, or IIS6 over to a fresh installation of Windows Server 2003/IIS6.
Here is a very simple sample syntax that could be used to copy the site at W3SVC1 on server 192.168.1.200 over to the local server and adjust it's bindings to run on 192.168.1.201. I like this option because I can then test the old site on the original IP and the new site on the newly assigned IP - otherwise it would copy over and assign the same IP by default.
iismt.exe 192.168.1.200 W3SVC/1 /serverbindings 192.168.1.201:80:www.TestSite2.com
It does an amazingly thorough job of migrating all the settings - and content - required for a solid site relocation. I've run this in test scenarios using a variety of switches (it allows options like only copying the config - no content; shifting the web root path on the destination server; adjusting the server bindings on the destination server; and more) - each time it has performed as expected.
One thing to note (well, perhaps one of several, but one that stuck out to me) is that the destination server will have a new application pool created for all the medium isolation applications, and a unique application pool created for each site that is running in it's own process (high isolation on IIS5). All of these pools will have default security settings when migrating from IIS4/IIS5 - Network Service identity - since this is a new option in IIS6. If you want to further isolate and restrict these processes by Windows user permissions, you'll need to go in and manually make adjustments to them to accommodate this.
As with any tool like this, I strongly recommend double-checking the result and doing thorough testing. But, for large sites with a lot of complex settings this tool can save hours of time and tons of headaches trying to track down all the custom settings that would be required in a manual move procedure.
by Brad Kingsley is President and Founder of ORCS Web, Inc. - a company that provides managed hosting services for clients who develop and deploy their applications on Microsoft Windows platforms.