WordPress on IIS7

Published on Friday, July 3, 2009

I had long planned the move from the .NET-based DasBlog blogging engine to WordPress but just couldn’t seem to make the time to complete the move. I finally pulled the trigger and cutover to WordPress a couple of weeks ago. The process was not nearly as painful as I imagined and I’m now beginning to reap the rewards of working on a blogging platform that’s more broadly integrated into the Web ecosystem. This blog entry is a collection of the key technical takeaways from my migration. Hopefully they will be helpful for other people looking to migrate to WordPress, especially on the Microsoft IIS platform.

Wordpress on IIS 7

  • Getting WordPress Up and Running on IIS is Very Easy – I was surprised how easy it was to get WordPress running on IIS 7. The entire process took me no longer than 30 minutes to complete once I had the correct guidance in place. The items that were of the utmost help to me here were as follows:

    • Webpage – Using FastCGI to Host PHP Applications on IIS 7.0 – A great introductory background and overview document on FastCGI on IIS 7. A good first read but shouldn’t be used as an installation guide.
    • Screencast – Installing PHP on Windows Server 2008 – First in a three part series that will get you up and running with WordPress on IIS7.
    • Screencast – Installing MySQL on Windows Server 2008 – Second in a three part series of screencasts covering the installation and initial database creation under MySQL.
    • Screencast – Installing WordPress on IIS 7 – The third and final screencast should bring you home with the installation. If you install the newest version of PHP / WP, several of the IIS settings covered at the end of this screen cast will have already been made for you. Just ignore them.
  • There’s Help Porting Content Into WordPress From Other Blog Engines – This was very welcome news as porting everything by hand would have been intolerably tedious. Porting blog content is a two step process:

    • Das Blog to BlogML Converter – Converts DasBlog source XML into standard BlogML file that can be imported into WordPress.
    • WordPress Import Module – The import module covered at the bottom of this post allows you to import BlogML into WordPress.
  • Don’t Forget About Mapping the URLs of Your Entries so That All Your Links Don’t Break – Maintaining external consistency is critical to followers of your blog. They care little that you migrated onto new software. Google cares even less. Don’t make people think about this. Do the work for them and map your legacy URLs to the new URLs in WordPress so that the change is transparent to everyone but you. Most of the guidance I could find on the web around mapping WordPress URLs dealt with Apache mod_rewrite. Fortunately IIS 7 provides an extension called “URL Rewrite” that can rewrite incoming URL requests. This article and the links within provide you everything that you need to understand URL Rewrite and get the job done.

  • Take The Opportunity To Leverage the Cloud – Although the text ports fairly well using BlogML as a bridge, the other binary content (images, document, etc.) need to be moved over manually. You can just copy the DasBlog contents folder over to maintain URL continuity or you can get a bit more ambitious. I chose to leverage Amazon’s S3 file storage service to store all of my binary content so that I don’t have to worry about backing it up or moving it ever again. I took the opportunity to set up S3 virtual hosting so that, with a bit of DNS trickery, my blog binary contents are all served from http://s3.beckshome.com.

  • Identify and Engage the Necessary WordPress Widgets – One of the key features of the WordPress blogging engine is its extensibility and the vast array of freely available themes and plugins that you can use to add valuable functionality to your blog. A top 10 or 20 list of plugins would warrant another post entirely and there are a multitude of these lists already out there. Instead, I’ll recommend a series of plugins that I found to be absolutely necessary to replace content or functions I had available under DasBlog and which I considered “table stakes” for the move over to WordPress.

    • Flickr Badge Widget – I replaced separate DasBlog pages for my photos and videos with a single Flickr Flash Badge that links to my Flickr account.
    • Kimli Flash Embed – I have a screencast I did on Microsoft Virtual Earth a while back. This was the only way to embed it into the main WordPress page.
    • SyntaxHighlighter Evolved – I have a bunch of source code snippets embedded in my blog entries, mostly C# and Ruby. This plugin made them look better than they ever did on my older blog with zero fuss.
    • WP Google Analytics – Despite the avialbility of WordPress stats, I’m sticking with Google analytics. This plugin made the transition seamless.