By Peter Bell

Improving a Hosting Environment: 2. Choosing a Linux Distro

I'm certainly no Linux guru, but we need to choose a Linux distro for our web servers. Here were the considerations we made and the solution we chose . . .

Hearing Linux experts talk about their favorite distro's reminds me of the scene in "Life of Brian" when it becomes clear that to the resistance, the only thing worse than the Romans is the Judean Peoples Front (or is that the People's Front of Judea?!). If only they spent as much time evangelizing Linux compared to Windows I'm sure Microsoft would have something to worry about!

There are clearly many subtle and arcane benefits of various families and distributions of Linux, but our needs for a web server are fairly simple. We decided to focus on a server optimized distro (I'm sure Ubuntu does a great job of running a web server, but most data center experts have more experience in RHEL or Debian for running web apps). Security wasn't an overriding concern, so we didn't feel the slower release cycle of an option like SecureBSD was worth the extra security it tries to provide (for a firewall on the other hand, SecureBSD might be a great choice).

On the other hand, we weren't looking for a cutting edge distro - we want to be running the servers - not playing with them and we're likely to always be a bit behind the bleeding edge in the applications and versions we choose to run. We ruled out commercial distributions as w felt we could get the support we needed from our "server guy" and we wanted a distro that was ubiquitous so that it wouldn't be hard to find people capable of working on or advising on the servers over time.

We also wanted to have a decent package manager for simplifying updates to keep our lives easier, and did NOT want one of the minimalist "build your own" distro's. In theory they are great as you can customize each server, running only the code you need and you have a great deal of control over what you run. We saw them as a maintenance nightmare as it would take substantially more time to create a configuration and then the extra effort of training up each new person on our custom setup or trying to solve problems with a configuration that is basically unique to us just didn't seem worth the extra control and tighter security footprint. If we had a full time Linux server admin we might have made a different decision, but I doubt it.

So, our requirements were:

  • Server rather than desktop optimized
  • Security not the only concern
  • Goldilocks updates - not too many, not too few
  • Non-commercial (no licensing/support fees)
  • Ubiquitous
  • Decent package manager
  • Not "build your own"

In the end we chose CentOS. It is an unbadged version of Red Hat Enterprise Linux meaning that anyone familiar with RHEL will be able to use CentOS, making it an extremely popular distro (if you add up RHEL plus CentOS penetration) while still meeting all of our other requirements. I'm sure that there would have been plenty of other equally good or possibly better choices, but this didn't seem to be a bad selection and we wanted to move on to focus on decisions that would have a greater impact on our business success.

Any thoughts?

Comments
Debian rulez! :)

As an old network guy who had managed server farms and a CF developer who uses CF on Linux since version 4.5 (Yes!), I would suggest to go with Debian.

http://wiki.debian.org/WhyDebian

The only concern would be not having official CF support and Verity issues. But if you have some expertise on Linux it must also not be a big issue.
# Posted By O?uz Demirkap? | 8/30/07 10:58 AM
No official support and verity issues would be a big deal for me. I read the document, but nothing stood out suggesting Debian would have a compelling business benefit over Cent. I know Cent isn't officially supported, but as a rebadged RHEL (which is), I could live with that. It'd be interesting to hear some Cent people who've used Debian to get their perspectives . . .
# Posted By Peter Bell | 8/30/07 11:11 AM
I have CentOS experience, but I've nothing to say on Debian since I don't know anything about it. I recently installed a VMWare of Unbutu just to peek around. I think that's your best bet Peter, with the virtual server tools now being free, then I suggest taking advantage of it and installing it virtually and checking it out.
# Posted By Todd Rafferty | 8/30/07 11:16 AM
I'm now a Debian (Ubuntu) fan myself after using RH and RH based distros for several years. But honestly I don't think it matters much anymore. If it works on your hardware, and you are comfortable working with it - then you made the right choice. :)

I do prefer Debian's apt vs dealing with RPMs.
# Posted By Jim Priest | 8/30/07 11:23 AM
@Todd, I have a CentOS VM under Parallels on my Mac, but to be honest, the stuff that'd make me choose one distro over another is probably more subtle than I'd notice in 20 minutes of pottering around with a couple of installs. Also, I'll probably hate BOTH as I don't know how to configure either - my need is for something that someone smarter than me will be able to get the most out of - not whatever I'm most productive with as a n00b as I don't plan to be doing much of the work!
# Posted By Peter Bell | 8/30/07 11:34 AM
There's plenty of nubie install guides.

CentOS5 is sooooo simple, as is Ubuntu server. I found CentOS 5 the easiest.

Google "centos coldfusion"
http://www.google.com.au/search?q=centos+coldfusio...

Google "ubuntu coldfusion"
http://www.google.com.au/search?q=ubuntu +coldfusion

lots there to guide you...

I suggest you download the free vmware server and build the os, copy the file, change the uuid in the config file and start playing with the install to get all your stuff setup. Of course if you're not willing to get your hands dirty, there's always programs that install all that for you.
# Posted By Chris Dawes | 8/31/07 3:55 AM
Go with RHEL. RHEL is the industry standard Linux and it keeps up with the latest Linux technology.

Don't go with CentOS. Red Hat does great work maintaining both RHEL and the free Fedora distribution. Red Hat contributes code to the Linux kernel and to other open source projects. They hire developers -- this costs money. People who run CentOS save a little money, but they shortchange the Linux community. If you want Linux to stay competitive with Windows and Mac OS X, you've got to send some money in the Linux direction.
# Posted By Paul Houle | 8/31/07 1:16 PM
Peter, very interesting series of posts you have here. At my company, I've been asked to design an entirely new network architecture (hardware, os, web server, etc....) for upgrading all of our CF6/7 applications to CF8. The company wants me to consolidate 20+ pizza boxes onto 8-10 'mid-tier' servers.

We've decided to stick with 'officially' supported platforms. We've also decided to move away from Windows 2003/Solaris OS's to RHEL. In addition, with the announcement of JRun EOD, we've decided to move from JRun to JBoss. I would have preferred Glassfish, but that's not 'supported'.

Our decision to move to Linux was based on CPU architecture. While Sparc offers more cores, Intel/AMD offer much faster processor speeds. We found that with dynamic web applications (CF, Servlet/JSP, PHP, Ruby, etc...), response time is more important than total throughput. Once we decided on Intel/AMD, we then wanted a 'nix based system and Solaris x86 is not officially supported. At my company, RHEL is the only 'supported' linux distro.

Note: We're buying our RHEL boxes from Sun Microsystems with AMD64 processors. This way, we can continue our datacenter support contract with Sun, yet get the benefits of the AMD CPU.
# Posted By Damon Gentry | 9/1/07 10:11 AM
Is there any optimization in ColdFusion to take advantage of 64 bit hardware? It's been ages since I've done any kind of benchmarks with CF.
# Posted By Jim Priest | 9/1/07 11:31 AM
Steven Erat has posted some good information on CF/64-bit over on his blog:

http://www.talkingtree.com/blog/index.cfm/2007/8/2...
# Posted By Damon Gentry | 9/5/07 9:06 AM
BlogCFC was created by Raymond Camden. This blog is running version 5.005.