SUMMARY
This article describes how to determine site requirements for a UNIX-to-Windows migration. Before you start the migration process, you must identify the elements to be transferred to the new Web server. There are many different elements to consider, and a number of different ways to determine these elements before you make the move.
back to the top
Identifying Individual Sites
To identify the individual sites that are configured on a server, examine the Httpd.conf file and look for <ServerName> directives. There will be at least one directive for the main Web site, and one for each additional virtual host. Use
grep to extract this information:
$ grep <ServerName> conf/httpd.conf
<ServerName> www.<sitename>.com
<ServerName> www.<addsitename>.com
back to the top
Identifying Static Components
To identify the static components and the location of the files that make up your Web site, examine the Httpd.conf file for Apache, and identify <DocumentRoot> directives:
$ grep <DocumentRoot> conf/httpd.conf
<DocumentRoot> /export/http/webs/<sitename>
<DocumentRoot> /export/http/webs/<addsitename>
The argument that follows each directive is the folder in which the files are stored.
back to the top
Identifying Scriptable Elements
Determine whether there are any scriptable or dynamic elements in your Web site. To look for CGI-based programs, look for the following directives in your Apache configuration file:
- ScriptAlias gives the location of the real CGI script files for a specific Web site.
- AddHandler {cgi-script|server-parsed} adds CGI or Server Side Includes against a particular file name extension.
- Options {ExecCGI|Includes} adds CGI or SSI features to a particular folder.
Look for the Options directive in .htaccess files in a Web site's directory tree.
Look for the following files, or for files in the following places in the Web site's folder:
- Perl scripts that end in .pl, .plx.
- Python scripts (.py).
- Any file ending with .cgi.
- PHP Scripts that end in .php.
- Any file with executable permissions (but not folders) particularly in folders with names like cgi and cgi-bin.
Any CGI element must be ported to Windows/IIS accordingly. Perl, Python, PHP and other scripting languages typically need only minor changes to work under Windows. Native binaries require recompilation under Windows for them to work, which may involve more significant changes to the code and a correct porting process.
back to the top
Identifying Security Requirements
Security in Apache is determined in two places; in the .htaccess files and the main Httpd.conf file. Look for the following directives to determine the sort of security that is required:
- Order, Allow, Deny uses IP address security to restrict access to a folder.
- AuthType determines the type of authorization that is required.
- AuthUserFile defines the location of a single file that contains user names and passwords. You must migrate this file to Active Directory.
- Require defines whether a valid user, valid group or a combination of both is required to provide access. You must translate these requires to the security permissions of a specific folder.
back to the top
Identifying Virtual Host Requirements
Look for VirtualHost statements in the Httpd.conf file. Each VirtualHost directive describes an individual Web server that is hosted by the main Apache server. Use the following rules to translate these settings to Windows/IIS:
- If VirtualHost directives are used without a corresponding Listen directive, there are name-based virtual hosts. You must use the HTTP Headers configuration in IIS to identify the Web site under IIS.
- If VirtualHost directives are used with a Listen directive, the sites are using virtual IP addresses. You must configure each virtual host with its own IP address.
back to the top
Identifying Logging Requirements
Apache can only specify the location and format of the log files for a specific Web site. The location of the error log is handled by the ErrorLog directive. Access logs are generated by creating a custom log format (using the LogFormat directive) and then writing a custom log that contains this information by using the CustomLog directive.
Logs are created on a Web site-by-Web site basis, so you must examine both the main Httpd.conf section and the individual VirtualHost directive sections in the configuration file.
back to the top