Paypal Donate

It's a while since I've done this, and as I fell into a couple of (probably common) pitfalls that took me a while to figure out, I thought I'd put the details here.

Basically, I needed to install a development server for Joomla on my local server - having decided that FTP to my webhost while developing components was unnecessary, especially as I had a perfectly good machine doing not a lot!

For Joomla I use built-in SEF URLs using mod_rewrite, so this also needed to be enabled.

I installed everything manually, which means that I had the latest version of every component available at the time.  I don't like these all-in-one installers - though I guess they add convenience.  Being a programmer, I like to have full control over what is installed where - anything that promises to install everything for you means it will do what it wants, and not what I want!

My installation procedure was:

1. Install Apache

2. Install MySQL

3. Install PHP

4. Configure everything to work together!

5. Install phpMyAdmin

Note that I have changed paths in this guide so as not to give away my actual system config - not that my dev server is public anyway!

Install Apache

Version: 2.2.14

This was very straightforward.  It really is a case of download the latest version and run the msi.  The only caveats on Win2k3 are that IIS needs to use different ports.  As I wanted Apache on port 80, I change IIS to port 81.  I downloaded the OpenSSL version of Apache, but I didn't configure or enable SSL - this is something I may or may not do in the future.

Once Apache was installed, I made a couple of minor edits of httpd.conf:

DocumentRoot = "z:/web"
Include conf/extra/httpd-vhosts.conf

The first is where I keep my website, and the second (which is originally commented out) enabled the virtual hosts conf file.  As this was now enabled, I then modified extra/httpd-vhosts.conf:

<virtualhost *:80>
    ServerAdmin website@test.cedit.local
    DocumentRoot "z:/web/dev.test.local"
    ErrorLog "logs/dev.test.local-error.log"
    CustomLog "logs/dev.test.local-access.log" common

No doubt I would be adding more virtual hosts later, but for now I just needed the above to redirect all requests to their proper location.

Install MySQL

Version: 5.1.44

I downloaded the smaller installation file (essential) as I didn't need the documentation.  This install was also very straight-forward.  Run the file, then run the MySQL Instance Configuration Wizard.  I won't go through the steps of the wizard, they are very clear.  I put my databases on my data drive not my system drive (as with Apache, I don't want any data on my system drive).

Install PHP

Version: 5.3.1

I downloaded the zip file for the thread-safe VC6 compilation (actually, I downloaded three different versions, but that was the one I finally got working and is one recommended).

Installation is actually just extracting the files for PHP - I extracted everything to c:\php.  Once done, I renamed php.ini-development to php.ini (note that this is a development server I am installing, otherwise it would have been php.ini-production I needed to rename), and then made the following changes to the php.ini file:

extension_dir = "c:/php/ext"
date.timezone = Europe/London

This enables a couple of required extensions (MySQL and MBString) and sets my server timezone (which is required to prevent warnings when using PHP's date function).

Configuring Apache/PHP/MySQL to work

With most of the changes done, all I needed to do now was revisit the configuration files for a few final changes.  I started with httpd.conf  to enable PHP and also mod_rewrite (required for my Joomla configuration).  The changes were:

LoadModule rewrite_module modules/
# Add PHP support
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php"
<directory "z:/web">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all

Then back to php.ini to make these changes (enabling MySQL and mbstring - the latter is needed for PHPMyAdmin):


Once all the above is done, Apache needs to be restarted (either from the Apache service monitor, or from the Services MMC).

The system is now basically set up and working.  To test this, I created a phpinfo file and checked that both PHP and MySQL were working.  The next sections are to ensure that I can manage the server easily (i.e. modify MySQL from my browser).

Install phpMyAdmin

Version: 3.2.5

This is simply a case of downloading the latest version from the website and extracting the files to a folder within the website (in my case z:/web/phpMyAdmin).  Once done, I copied then renamed (in the root folder for phpMyAdmin) to  This file needed to be edited as follows:

$cfg['blowfish_secret'] = 'random sequence of characters!';

That is it - and that is to enable cookie authentication.

Final Notes

The server was now fully installed, and I could use phpMyAdmin to create the required users and databases for my Joomla development site (logging on with the root password as chosen during the MySQL installation wizard).

Copyright © 2009 All rights reserved.