Choosing a method for actually deploying Your Apache to IIS migration is more difficult. The obvious steps to the migration are as follows:
Migrate the basic configuration.
Migrate the static Web files (HTML, graphics).
Migrate the applications and dynamic components.
Migrate authentication/security.
WEB RESOURCE
For a tutorial on how to migrate files from Unix to Windows and IIS, go to the Delta Guide series Web site at www.deltaguideseries.com and enter article ID# A020902
After the actual physical migration has completed, you then need to test your installation. Typically, I recommend a period of at least one month testing the new platform followed by a month testing the system in tandem with your existing installation to iron out bugs. For a major Web site, I'd increase those figures to three and three.
During the testing, test the existing site and then test the new site, checking both for missing links and bad components and performance. You should then be able to make suitable comparisons for the new system.
If you want to ease the migration process, two tools can help you. The first is the Apache Migration Tool that comes with the IIS 6 Resource Kit; the second is Services For Unix, which can help to migrate user and authentication information, as well as the data and files.
I've given a brief overview of the main components and facilities of the two systems here.
The IIS 6 Resource Kit comes with a migration tool, which can perform many of the main functions of a migration for you, including copying the source files, copying certain aspects of the configuration and security, and modifying source HTML to take into account location/server changes.
The migration tool will migrate Linux (Red Hat, Mandrake, and SuSE varieties are the only ones recommended) running Apache 1.3.x only. You can perform the migration either directly from a Windows Server 2003 host, from the Linux host, or through an intermediate host that marshals information from the source to the destination.
The migration should work relatively painlessly with most of the directives and information being transferred without intervention. However, it's not perfect. It doesn't transfer all the directives from Apache?mostly because of differences in the way the two systems operate?and it's translation of files is limited to any name or location changes. Issues with scripts or dynamic elements are not handled, and even if your site is entirely composed of static HTML and graphics, there is no guarantee the site will transfer without problems.
Table 8.2 contains a list of the Apache directives that are translated and migrated to IIS during the process.
Directive | Notes (where applicable) |
---|---|
AddEncoding/AddType | Migrates the settings to the MIME Types settings within IIS 6. |
Alias | Creates a virtual directory object. |
AuthGroupFile | Groups in the file are migrated to the local authentication system for the server (not AD). |
AuthName | Adjusts the Realm property for the corresponding directory in the authentication settings. |
AuthType | Applies the equivalent authorization type to the directory. |
AuthUserFile | Users in the file are migrated to the local authentication system for the server (not AD). |
BindAddress | |
DefaultType | |
<Directory>, <DirectoryMatch> | Migrated, but ExpiresDefault and IdentityCheck do not have equivalents in IIS. |
DirectoryIndex | |
DocumentRoot | |
ErrorDocument | |
ErrorLog | Not migrated, but errors in IIS are recorded in the main logs. |
ExpiresActive | Sets the Enable content expiration property. |
ExpiresDefault | There is no equivalent in IIS 6, so instead the Expire immediately property is enabled. |
<Files> | All tags except ExpiresDefault and IdentityCheck are migrated. |
<FilesMatch> | All tags except ExpiresDefault and IdentityCheck are migrated. |
Header | |
HostnameLookups | Only sets hostname lookups on or off?the double property in Apache is not migrated. |
IdentityCheck | Enables Extended logging properties for the log for a Web site. |
KeepAlive | Sets the Enable HTTP Keep Alives property. |
KeepAliveTimeout | Migrated to the Connection timeout property. |
Listen | |
ListenBacklog | |
MaxClients | Migrated to the Connections limited to property for the site. |
NameVirtualHost | |
Options | Only the ExecCGI and Indexes options are migrated. Other options to this directive are not supported or have no direct equivalent in IIS 6. |
Port | Only migrates ports with numbers less than 65,535. |
ResourceConfig | File referenced by this directive is parsed for context purposes. |
ScriptAlias | |
ServerAlias | Sets the host header information. |
ServerName | Sets the name as it appears within IIS manager. |
ServerRoot | |
SSLEngine | The information is not migrated, but the migration tool prompts for the information. |
TypesConfig | |
UserDir | User directories are migrated to corresponding virtual directories within the default Web space. |
<VirtualHost> |
If your site is in any way more complex than basic HTML, I'd recommend that you migrate the system using a more pragmatic step-by-step process that migrates individual components or areas of the sites and tests them thoroughly. See "Deployment Options," (p. 162) in this chapter for more information.
Services for Unix (SFU) is a suite of utilities that allow you to share information and resources between Unix and Windows computers. The main features of SFU of interest during a migration from Apache to IIS are summarized in Table 8.3.
Feature | Description |
---|---|
Unix environment | Enables you to execute Unix scripts and recompile and deploy Unix applications using standard Unix applications, including make, rcs, yacc, lex, cc, c89, nm, strip, gdb, as well as the gcc, g++, and g77 compilers. You also have access to Unix tools such as awk, grep, sed, tr, cut, tar, cpio. |
Script Environment | Executes Perl, Korn, and C shell scripts within Windows. |
Security Integration | Enables you to communicate and authenticate with NIS servers. |
NFS Client/Server | You can now share Windows directories through NFS and also access NFS resources. This makes exchanging files between Unix and Windows environments much easier. |