Running Rails with FastCGI on IIS

With a little help from Mike Volo­dark­sy's tutorial I'm up and running with Ruby­On­Rails using a native FastCGI im­ple­men­ta­tion. This is a big deal because it'll mean that Microsoft will provide a supported way of running Rails ap­pli­ca­tions. In addition, PHP ap­pli­ca­tions will be able to run with greater per­for­mance and re­li­a­bil­i­ty thanks to the work that Zend and other PHP devs have put into improving their Windows story.

This is a good job since I'm doing more work with these open source tech­nolo­gies at the moment since Microsoft have done little to improve the ASP.NET platform. For .NET developers, MonoRail is the only usable framework for de­vel­op­ment. Additions such as ASP.NET AJAX do little to make the platform better for the ap­pli­ca­tions I am working on. The problem with AJAX is that it's not an end in itself. You need to have a reason to use it and a design to match, or you end up on the road to poor per­for­mance and usability.

Tagged with iis, rails, ruby and rubyonrails.

URL Rewriting with IIS 6.0

Unlike the Apache HTTP server, Mi­crosoft­'s IIS currently doesn't have a built-in extension offering support for URL rewriting and 'proxying' of server requests. This means that you have to hack up some code to manually process URLs with ASP.NET or implement a nasty 404 handler in classic ASP.

Recently, I needed to centralise a number of services under a single domain name on one of my machines. Normally, an Apache user would use mod­_rewrite to proxy requests through to another machine. I wanted to do this on IIS so I evaluated a number of ISAPI filters which purport to offer similar func­tion­al­i­ty. The candidates were ISAPI Rewrite, IISRewrite and OpUrl. After some spelunking in my Win2K3 virtual machine I decided to purchase an ISAPI Rewrite license. It fairly cheap and questions posted to the support forum are answered promptly.

I posted some setup in­struc­tions for proxying requests to a Kerio webmail server on their forums.

Tagged with iis and url-rewriting.