Unlike most other desktop and server operating systems, Linux comes in a wide variety of flavors, each based on a common core of the Linux kernel and various GNU user space utilities. If you're running Linux servers -- or Linux desktops, for that matter -- you should understand the important differences and be discerning about which flavor of Linux is best suited to any given situation. This article will help you do just that.
Because Linux is open source software, the number of discrete Linux distributions is hard to know for sure. But a short list of major distributions account for the lion’s share of commercial Linux deployments: Red Hat Enterprise Linux (RHEL), CentOS, Fedora, Ubuntu, Debian, and OpenSuse.
Style and substance
Most of the differences among these distributions are cosmetic. They concern details of their configuration and implementation rather than core functionality. File system layouts, configuration settings, update mechanisms, and bundled configuration tools may vary, but the similarities far outweigh the differences.
Even so, there are clear delineations among them, mostly in the area of system design. When it comes to managing Linux in a production environment, you will find important differences in everything from stability to support for popular open source packages. Failing to appreciate these nuances can mean the difference between smooth sailing and choppy waters when it comes to deploying and running your application.
Take the Web server, for example. All Linux distributions bundle the Apache Web server, but each implements Apache using slightly different file system layouts and configuration conventions.
For instance, Ubuntu calls Apache version 2 "apache2", while CentOS and RHEL call it "httpd". That affects where configuration files for Apache are located within each distribution. You can find them in …/etc/httpd on CentOS and Red Hat, but …/etc/apache2 in Ubuntu. Furthermore, Ubuntu and similar distributions might place the Apache document root in …/var/www, while CentOS and RHEL opt to put it in …/var/www/html.
Further, Ubuntu offers a homegrown Apache configuration management scheme that allows an admin to place Apache configuration snippets in /etc/apache2/sites-available and /etc/apache2/sites-enabled, and manage them with custom commands such as
a2dissite that move those snippets around and reload Apache. This means you can enable and disable virtual websites from the command line. CentOS/RHEL don’t have anything like this, requiring manual management of the configuration files.
Ubuntu’s approach isn’t necessarily better or worse -- it’s a matter of personal preference. On one hand, it does make operations like setting up a website easier. On the other hand, you need to prepare your configurations in such a way to work with customized configuration commands. Purist Apache admins would probably simply work with the files directly. Newer users may find Ubuntu’s approach helpful. Ultimately, it’s up to you to decide which is preferable.
There are other differences. By default, Ubuntu locks down the root user, instead requiring that a local user be created during installation; that user is then granted
sudo privileges in order to perform tasks as the root user. CentOS/RHEL have no such restriction and allow for general access by the root user.