Dennis Forbes on Pragmatic Software Development
Subscribe to RSS
 
Friday, February 10 2006

The Odd OS Out

In the world of the wiki, being in the Windows camp sometimes makes you feel like a second-class citizen.

Much of the information for wikis on the Windows platform is either out of date, or just plain wrong. Many of the tools encourage users to simply accept Linux into their lives, giving vague warnings about the dire consequences that await if they dare to host the product on Windows.

While Linux is undoubtedly the optimal solution in some cases -- such as when you can requisition or reconfigure existing hardware to act as a new Linux server, or when you're using some of the superlative virtual machine solutions -- many shops lack UNIX/Linux skills, or they simply want a homogenous platform, and thus would prefer to stick to the Windows platform even if it wasn't the native-environment originally envisioned.

Sometimes the team is skillful and adept with Linux, but the corporate IT department brutally seeks out and destroys rogue PCs running the unauthorized OS, storming the department in a flurry of flying pocket protectors.

All is not lost, however.

Wikis To The Rescue

MediaWiki Logo

Not only are there numerous wiki or wiki-like products (yafla provides Sharepoint consulting in addition to wiki solutions, however Sharepoint fulfills a subtly different niche than wikis) available for the Windows platform, you can even host the trendsetter in the wiki world - MediaWiki - on Windows.

MediaWiki, as you likely know, is the rapidly evolving software platform on which Wikipedia is based. It's free to download and use, even for big, soul-less corporations.

So without further ado, the following is a no-nonsense guide to getting MediaWiki installed on Windows XP, Windows 2000, or Windows 2003. This is intended to get you up and running, and if you find that you like the platform and the package then you can start looking into advanced customization and locking down (for instance you can configure a Wiki to only allow authorized users to make changes, with authorized users only being created by users with appropriate privileges. This eliminates the primary fear of most wiki-holdouts -- a fear that a wiki is a crazy free for all).

IMG_1949

My primary goal is simply to get people looking at wikis, seeing how simple it is to configure them. In Optimal Software Development Processes and Practices, I wrote about the need for formulating written standards. The reason many teams shirk from such a task is because it's one that appears to have a lot of upfront, contentious work involved, generating the first version of the definitive Corporate Standards guide. Using a wiki, though, and you can organically grow team information like standards, adding small additional pieces of information as they come up, with extraordinarily easy editing, organized centralization (which I covered in Organize Your Information), and full history and revision control.

A wiki can be a tremendous information tool for modern teams. It works in the way that information is often accumulated, and not in the spastic, all-or-nothing manner usually pursued.

Common Steps

  1. Download and install the feature-rich 7-zip. This will facilitate unzipping/untarring files further in the process. Log out and back in to enable the GUI extensions. 
  2. Download and install the GNU diff utilities. You can get by with the "complete package, except sources". Note where you installed it, as you'll require the location in a later step (this will likely be C:\\Program Files\\GnuWin32).

Option 1 - The WAMP Platform

You've probably heard the acronym LAMP (Linux + Apache + MySQL + PHP/Perl/Python). It's the description of an important and somewhat standard technology stack on which a tremendous number of very successful solutions are built. It's extraordinarily feature rich and capable, not to mention that it comes at a very good price.

AMP is all of the stack on a platform other than Linux, WAMP being Windows + Apache + MySQL + PHP/Perl/Python.

One of the easiest and most-up-to-date options to configure WAMP on Windows is the DeveloperSide.NET Web-Server Suite. Offering a free, pre-packaged configuration of the fundamentals, this option can get you up and running in little time, even on the "non-server" Windows XP.

  1. Download and install the self-installing DeveloperSide.NET Web-Server Suite at http://www.devside.net/web/server/free/download. Note the install location (by default C:\\www). Restart when prompted.
  2. If you already have the IIS World Wide Web Publishing running, there will be a conflict over port 80. You can move your wiki to a different port by modifying C:\\www\\Apache2\\conf\\httpd.conf. You can then run C:\\www\\Apache2\\bin\\ApacheMonitor.exe to stop and restart the service. If you opt to do this you'll have to append the port when you access your wiki (e.g. http://localhost:85 if you chose port 85) in later steps, and this could cause problems for machines with software or hardware firewalls between them and the wiki, which usually only expect HTTP traffic on port 80.
  3. Delete index.html from C:\\www\\webroot (altering the path if you have a different install location from step 1).
  4. Download MediaWiki. For this setup I grabbed 1.5.6, which is a stable release from January 19th, 2006. When you read this something newer may be available.
  5. Right click on the downloaded file (mediawiki-x.x.x.tar.gz, where the x's represent the version number - e.g. mediawiki-1.5.6.tar.gz) and pick "7-Zip -> Extract Here".
  6. Right click on the newly ungzipped file, mediawiki-x.x.x.tar (where of course the x's refer to the version number. e.g. mediawiki-1.5.6.tar), and choose "7-Zip -> Extract Here".
  7. Copy the contents of the newly extracted folder - e.g. mediawiki-1.5.6, to C:\\www\\webroot, altering if you have a different base directory in step 1. For instance navigate into the folder, choose Edit/Select All, Edit/Cut, navigate to C:\\www\\webroot and choose Edit/Paste).  You should now have files such as wiki.phtml in the folder C:\\www\\webroot.
  8. Open a web browser pointing to http://localhost/ (or the IP or DNS name of whatever server you've installed this on), and you should be presented with a page telling you to setup the wiki first.
  9. Everything should be fairly self-evident. After setting passwords for the sysop (which is the account used to administer through the wiki web app), as well as for the new MySQL account, be sure to clear the password at the very bottom, as by default MySQL was installed with no password on the root account, albeit limited to local access.
  10. Copy LocalSettings.php from C:\\www\\webroot\\config\\ to C:\\www\\webroot\\.
  11. Configure the email server appropriately - if you're running the IIS SMTP server locally you're good, otherwise you need to make a configuration change so the wiki is capable of sending email.
  12. Access your wiki! Start editing and creating pages (search for a new topic, and then click on this exact title in the resulting search failure page -- you're now editing the new page!), organically growing your information base! Select Edit on complex Wikipedia entries to see how features like categorization, sections, sidebars, and images are achieved.
  13. Read the User's Guide to see how to customize things like images, templates, allowing uploads and images, and so on, and how to edit pages. Login as WikiSysop (or whatever else you named it) and play around with preferences, special pages, skins, and so on. Create accounts for members on your team.
  14. If you find that you like the platform, remember to make a backup strategy for your MySQL wiki database.

Option 2- The WIMP Platform

IIS 5.1, and moreso IIS 6.0, really is a superlative web server, and in security metrics it's actually been beating out Apache. It's fast, capable, and you probably have other applications running on it (e.g. .NET apps), and perhaps you don't want the heft of a second set of webserver services running on your machine simply to host a new web app.

Well you don't need to run Apache for MediaWiki if you don't want to.

This configuration is a little bit more involved as I've chosen to recommend the individual constituents, but in the end you'll have what could be considered a more granular, controlled configuration than using one of the all-in-one stack solutions.

This presumes that you've already installed IIS. If you haven't, used Add or Remove Programs and add IIS in Add/Remove Windows Components.

  1. Download and install MySQL (in this case I downloaded and installed the 34.9MB v5.0.18 "Windows (x86)" variant), using the "Typical" install options. In the detailed configuration choose appropriate settings (for instance Developer Machine if you're just doing a trial run), noting the new root password for the database server (you'll need this later, as by default this stand-alone install is more secure than the packaged bundles).
  2. Download the "PHP 5.x.x zip package" (not the installer), for instance PHP 5.1.2 zip package.
  3. Right click on the downloaded file and pick 7-Zip->Extract Files. Enter C:\\PHP as the path.
  4. Copy libmySQL.dll from C:\\program files\\mysql\\MySQL Server 5.0\\bin to C:\\PHP.
  5. In C:\\PHP, rename php.ini-recommended to php.ini.
  6. Open php.ini in notepad.
  7. Find the line (Edit/Find) extension_dir = "./" and change it to extension_dir = "C:\PHP\ext"
  8. Find the line ;extension=php_gd2.dll and remove the leading semicolon, leaving extension=php_gd2.dll
  9. Find the line ;extension=php_mysql.dll and remove the leading semicolon, leaving extension=php_mysql.dll
  10. Save the file and exit notepad.
  11. Add C:\\PHP to the path (Start/Control Panel/System/Advanced/Environment Variables. Under System Variables, double click Path and append ;C:\\PHP on the end (note the semicolon).
  12. Add a new system environment variable (Start/Control Panel/System/Advanced/Environment Variables) called PHPRC, with the value C:\\php
  13. If you're running Windows 2003, run Start/Administrative Tools/Internet Information Services (IIS) Manager. Expand the local computer, and choose "Web Service Extensions". Select "Add a new Web service extension". Give it the name PHP, and then Add  the required file C:\\PHP\\php5isapi.dll. Set the checkbox "Set Extension status to allowed". This will allow the extension to run.
  14. In IIS Manager, expand websites and right click on Default Web Site. Choose the Home Directory tab, and select the Configuration button in the Application settings section. Click on the Add button in the Mappings page. For the executable, enter C:\\PHP\\php5isapi.dll, and for the extension enter .php. Ok all of the dialogs.
  15. In IIS Manager, expand websites and right click on Default Web Site. In the Documents tab select Add and configure the new default content page to index.php. Ok out, and choose Move Up until index.php is at the top of the list.
  16. Complete steps 4 to 12 from the WAMP configuration, replacing all references to C:\\www\\webroot with C:\\Inetpub\\wwwroot. Also be sure to enter the root MySQL password that you set in step 1 into the Wiki setup page. As one last hiccup, you will likely have to provide the account IUSR_LOCALMACHINE, where local machine is the hostname of the machine in question (e.g. IUSR_MyServerA1) with full control of the C:\\inetpub\\wwwroot\\config directory during Wiki setup, allowing it to emit the generated setup file. You can remove it right after generating and copying the LocalSettings.php file. Alternately you can customize the account under which the web site is running.
  17. If you wish to enable uploads, you will also have to configure directory access on C:\\inetpub\\wwwroot\\images, allowing the account under which the web application is running to have access to modify files in that directory. For instance add IUSR_LOCALMACHINE (again where localmachine is the hostname of the machine in question, such as IUSR_MyServerA1), or whatever other account you have the application pool running under, to have full control of the directory, or simply give it Add File permission and add full control to the CREATOR OWNER virtual account.

Voila, a high performance wiki hosted with IIS on Windows. Now if only there were a ASP.NET 2.0 fork with all of superlative MediaWiki functionality and usability, coupled with a SQL Server back-end...

Once you have the platform configured to demonstrate the concept to yourself and your team, you can begin altering the look and feel, and enabling huge performance speed-ups such as the PHP compiled caching extensions and memory caches. This is just a powerful starting point.

Reader Comments

This is beautiful. I've been meaning to do this, and finally followed your WIMP instructions in a virtual machine. Works beautifully.

Something is screwed up with the file paths though, almost like it's filtering the backspaces out.
John Horn @ 2/12/2006 6:29:49 PM
Thanks for the great instructions
after 33 hours of continous struggle with 4 different apps, i found your blog and was done in less than two hours.

i am using the wiki for research work, and have many projects. I was wondering how i would set up more than one wiki (all seperate) on my box?
is there a possibilty of interlinking between the two even if they are seperate?
thanks for any help you can give.
Bradford @ 2/15/2006 11:35:05 AM
Nice complete/detailed article.
I am trying to convince management to start using a Wiki but they seem to be scrared about the fact that Mediawiki uses MySql. Any ports to sqlserver 2000? Or any good arguments supporting mysql?

Thank you for the article.
Chris
Chris @ 2/22/2006 10:28:13 AM

Add Comment

Name *:

Email Address:

(your email address is not displayed)
Website:

Comment *:


Dennis Forbes - Dennis Forbes is a Toronto-based software architect and technology writer