It is possible to have a Drupal multi-site setup on IIS 6.0, using the FastCGI extension to connect to PHP. In fact, it is necessary to use FastCGI rather than ISAPI to have a multi-site setup, as well as to be able to setup up Clean URLs. FastCGI also tends to be faster than ISAPI because it recycles processes for server requests.
Rather than just repeat the instructions that are provided elsewhere, I will provide the links to the resources I used to get my setup running and points to give extra consideration. Please feel free to post any questions, or your own experiences in the comments. This article was inspired by the discussion on Drupal Groups "Production Drupal sites on IIS (or windows in general) - Experiences?". I wanted to migrate to a multi-site setup to make core and module updates easier.
Start by reading the article "Using FastCGI to Host PHP Applications on IIS 6.0" on IIS.net. This is the primary guide for the entire setup process.
"Confirguring FastCGI Extension for IIS 6.0"is another good resource. It is specific to setting up sites in IIS manually to work with FastCGI, and advisable to review as well.
Some tips before proceeding:
- I had been running PHP 5.2.9 before deciding to upgrade to a multi-site install, but did not have success with that version and FastCGI. Therefore, I recommend completely scrubbing PHP 5.2.9, make a backup copy of php.ini but delete it from the install directory.
- I removed all other traces PHP that had accumulated through my testing, as I had tried to use the FastCGI-PHP combo installer from IIS-aid.net, without success, and it had installed PHP to a different directory than usual. Same case with random files from the PHP installer from Microsoft.
- I had also tried FastCGI 1.5 RC (beta), without success, and completely uninstalled this as well - by using the "Add/Remove Programs" Control Panel function in Windows, and then deleting the three FastCGI files from the system32 folder.
- I made sure to remove the old ISAPI script mappings from all sites in IIS before starting the setup process.
- I make no reference to installing MySQL here, I assume you already have it installed and running.
- I usually run a Google search when tackling a tech issue, and gather as much information as possible before diving into the endeavor
Once you have a clean slate to work with, follow the steps in "Using FastCGI to Host PHP Applications on IIS 6.0", which are summarized below with extra notes.
1. Install FastCGI extension
- the "Install Now" link on the right side of the page will install the Microsoft Web Platform Installer, which is recommended over the direct download links because it is possible to select the FastCGI 1.0 version rather than the 1.5 beta
2. Install PHP
- make sure you download the PHP 5.2.11 Non-thread-safe installer, which can be found at the link above, towards the bottom of the page
- select the following extensions when prompted during the process: BLENC, bzip2, Curl, EXIF, FDF, GD2, Gettext, IMAP, Multi-Byte String (mbstring), Mimetypec, MySQLi, OpenSSL, PDO, PDO_MYSQL, POP3, SMTP, SOAP, timezonedb, XML-RPC, zip, PEAR Install [thanks to Switchback for providing their list]
- select the FastCGI option when prompted to configure the server
3. Configure FastCGI, PHP, and IIS to work with each other
- follow the instructions in the article to manually set IIS up, and to change the fcgiext.ini and php.ini files by hand - the mappings and some of the settings in fcgiext.ini may be set automatically, but verify the settings and make sure to edit the CGI settings in php.ini (per the section "Setting FastCGI Configuration...")
4. Setup multi-site install of Drupal
- follow the Drupal tutorial "Multi-site on Windows-IIS" -if you have trouble connecting to your sites, try using full ".com" names for your folders -it can be helpful to restart IIS as well if you cannot connect to your sites