I've been a web server administrator for many years, typically as a secondary task along side web development, and I'm reminded time after time how much I dislike using IIS, Microsofts web server. As a gift to the universe, here are my reasons for disliking IIS and preferring Apache:
- SSL management is a pain. When renewing certificates in IIS you have to create a dummy web site and do several side-steps and tangos. With Apache you simply renew the certificate at the certificate authority and replace the file on your server (or paste it into the control panel, if you have one).
- Clean URLs. Apache comes bundled with a plugin for turning ugly URLs like "http://www.mc-kenna.com/index.php?function=blog&id=5" into "http://www.mc-kenna.com/blog/5". IIS doesn't have one built-in and the addons I've tried have been a bit odd.
- Configuration files vs registry. Apache uses plain text files for all of the configuration and can load files from any directory you might have on the server, so that...
- you can keep your site's configuration nestled within your site's codebase (outside of the publicly accessible directory structure, of course) for revision management;
- it makes it easy to write scripts to create new sites as they're all very much the same;
- you can more easily find the setting you want to change.
With IIS 6 (and older) you use a GUI tool that updates registry settings - not very script or revision management friendly and at times difficult to get around.
It is worth noting at this point that the upcoming IIS 7, bundled as part of Windows Server 2007 aka "Longhorn", will use text files for configuration, I guess they finally saw the benefit of doing it this way.
The way I see it there's one reason to use IIS over Apache:
- You need to use ASP or .NET.
otherwise you should use Apache.