Running Joomla on a Windows server

Yeah, you may say that nothing coming out from that Redmond-based factory does not qualify as LAMP environment, and Joomla is built yo be used on LAMP servers, am I right? Yes... and no. Why not let them to play with the best CMS around Yell.

So, what a Windows aficionado should know if wants to run Joomla on his favorite server?

First of all, a seemingly dumb remark which can save you from hours of debugging: Joomla has born on Linux, so, unlike Windows, makes difference between uppercase and lowercase characters in file/folder names! So, even for a Windows user Readme.txt, readme.txt and README.TXT are the same, for Joomla (and linux) these are 3 distinct filenames. Pay attention to it!

Now some prerequisites: on top of each Windows server you can run Apache, but then what's the fun part? Let's see what we need to running it using different flawors of IIS.

To work correctly, you need to install on the server of your choice, along with IIS at least PHP 5.2.8 and MySQL 5.0 or newer - if available. Run the latest software allways!

Joomla does not require many modifications beyond the default configuration provided by PHP. From the base configuration file provided by PHP, you only need to modify the following lines in your php.ini configuration file to get Joomla working:

  • Define 'extension_dir' as 'c:\php\ext' (i.e., the location of your php extensions directory)
  • Uncomment 'extension=php_mysql.dll' in the extensions list to enable MySQL support

In order for Joomla to work correctly with IIS 7.0 it is necessary to install an update for IIS FastCGI module for IIS 7.0.

After you upload and unpack the Joomla install kit to your server you need to grant access to it's configuration file. For the newbies a note: Joomla uses configuration file called configuration.php in order to store key configuration settings. Before running the installeryou need to create this file to give the web server write privileges to the new file. Joomla's installer will modify the configuration.php file as needed with the details you provide during the installation process.

After creating the new file you can assign write permissions to it with the command (from the installation directory, assuming that you installed the whole thing using the defaults, and you have the Joomla installer located in the Joomla subdirectory of your server's root):

C:\inetpub\wwwroot\Joomla>icacls configuration.php /grant BUILTIN\IIS_IUSRS:(M) 

Next you need to grant write permissions to tmp folder. Joomla uses the tmp folder to store temporary files. Because of that it needs to be able to write and modify files in this folder. To enable that, grant modify permissions to this folder:

C:\inetpub\wwwroot\Joomla>icacls tmp /grant BUILTIN\IIS_IUSRS:(OI)(CI)(M)

Next you need a database. Before starting the installation procedure for Joomla, create a database on your server. Also create a user and grant this user db ownership permission to the database. Follow the instructions in the Setting Up a Database for a PHP Application on IIS article for a MySQL database.

From now on you can - theoretically - set up your Joomla site as on any other server.

But wait, what about the possible problems? Yes, they are - and are a plenty of them. Most of these are related with file and folder permissioning, which is discussed in another tip.

But hopefully you will not need to read that tip.