July 17, 2016 centos infrastructure

'(CentOS vs the Rest)

I’ve been hooked on CentOS for servers for a couple years now. We used to use Ubuntu, but I see several advantages to choosing CentOS over Ubuntu and others. Here’s why:

UPDATE 2017:

Smooth updates. Since starting all our servers out on CentOS 7.0, they’ve all been cleanly upgraded to 7.3 without any fuss or ceremony. Looked like any other daily update.

Our Consultancies use CentOS. We’ve been in a couple data centers that encourage using their supported platforms based on CentOS. We also work with a MySQL team that knows and prefers CentOS to any other.

CentOS (and Fedora) have had Systemd in production releases for over a year. This is probably the biggest reason. Ubuntu is getting it eventually, but CentOS has had it and it’s working well. You’ll have to adopt it with Linux anyway, so why not now?

CentOS is a first-class member of a strong Red Hat family. They were recently acquired by Red Hat and now benefit from lots of company resources.

Vendors will install CentOS for you. It was EC2’s default OS for a while (still?), and is found widely available on other VPSs.

More hardware is certified for Red Hat.

CentOS releases are good for 10 years. If you were totally stuck with not being able to upgrade a system, this makes for a pretty good life span. Ubuntu LTSs are only 5 years. :) So, minor win.

Fedora is a well-tested cutting edge distro and CentOS get the best of its learnings. It’s solid as a desktop, so you can use it for development and have a pretty consistent environment across your desk and servers.

Red Hat/CentOS have a well-defined focus. They embrace the fact that they are a server OS. Compare this to Ubuntu’s focus on touch interfaces, display managers, phones.

There are certifications for becoming a (so-called) Red Hat expert.

There is an upgrade path to RHEL if someone insists upon it. Some PHBs will want to know that they can throw money around to buy “guarantees” about stability/support.

CentOS is ubiquitous. Most cloud VPSs will offer it as an option.

Docker is in production. I don’t think Docker is a panacea, but it’s good to see it’s being well tested in RHEL and CentOS.

Firewalld is new and in. It’s not terribly well documented, but it’s really just a front end to iptables.

EPEL provides many extra packages.

Docker is a major focus of Red Hat.

SELinux is more powerful than AppArmor. Though there is a bigger learning curve. See this comparison.

Arch is very similar. Arch is a popular and powerful development Linux OS. It’s cutting edge, and the AUR is the easiest way to quickly install the widest variety of tools. Hopping onto a CentOS server from the comforts of your Arch setup is not much of a leap. Generally, you’ll find the same standard tools on both.


Not everything is perfect with CentOS, though. It does not always have the newest versions of packages you might desire. I end up building my own versions of Nginx, Redis, Ruby, and others.

The security update story is also a bit lacking. The simplest way I have found to stay up-to-date on vulnerability patching is to watch the daily mail list, and email myself every time a server sees available updates (yum-cron). Then I can use Ansible to update the fleet, and check if any updates will require reboots, though they’re rarely needed: a few per year, when kernels or glibc updates.

Yum is the package manager and it is in flux, and essentially pronounced dead. Fortunately, dnf appears to have some backward compatibility with yum and should provide a clean transition.

If you’re looking for a broader spectrum of OSs to choose from, particularly for your desktop, read my article on choosing an OS.