Some days ago, I decided to upgrade my server’s operating system, Fedora. Starting from Fedora Core 3, I have used yum
to perform all the distribution upgrades, but for the seventh version of the OS I decided to go all the way re-installing it from scratch. I’ve been improving the server’s configuration files and automation scripts for the last 18 months, so it would be easy to have it up and running in no time. Actually, it turned out that the server configuration required less time than I had initially estimated. The time-consuming task was the transformation of Fedora to an operating system – almost – suitable for servers.
But, what makes a Linux distribution suitable for a server?
- A minimum number of packages that are installed by default for a usable system. This is the so called “base system“. The smaller the base system is, the more secure the initial server installation is. This is the rule. Installing unnecessary packages is not an option when it comes to a server.
- A minimum number of initially running system services (this typically depends on the amount of the installed software).
- A non-bloated kernel.
- The availability of binaries optimized for different architectures, eg binaries optimized for Pentium III. This is extremely rare, unless the operating system has been designed for software re-compilation like it happens in Gentoo.
Which of these conditions does Fedora meet? I guess none. This is not a bad thing though. It is just not meant to be a server OS. Judging by the list of packages that are installed by default during a clean installation, it is quite clear that Fedora targets desktops. Even an old anaconda option for a “server installation” is not included any more. Actually, it is impossible to achieve a minimum installation with the standard approach of selecting the package groups in the anaconda graphical interface during the standard installation process. The smallest possible usable Fedora installation requires the use of a kickstart file with only the core and base package groups pre-defined in it. This, of course, will not override the dependencies that are hardcoded into the RPM packages, but it will give you a system with a small footprint (~350 packages !!) to get started with.
Furthermore, a thorough examination of the running services and the removal of some of them from the 3rd runlevel will make the system less bloated.
The kernel or other software re-compilation is out of the question, at least for now, as they require a significant amount of time in order to set things up in distributions like Fedora.
I might write a guide about how to actually perform this minimal Fedora installation step-by-step, if I have the time in the following days.
In the meanwhile, I seriously consider switching to a more suitable-for-a-server linux distribution. After much thought, my current list of choices includes (in priority order): CentOS, Ubuntu Server Edition, Debian, Gentoo.
Gentoo would not be in that list due to the big amount of time it requires in order to configure and test it as a production server. Aggelos Orfanakos gave me the idea of trying Gentoo, so I decided to set it up for a ride in QEMU.
CentOS on the other hand is a Red Hat based operating system, which makes the migration from Fedora a piece of cake (this is why it’s first on the list above). Apart from that, it is a robust system with a dedicated community of users and I like it.
Debian is Debian. A robust system suitable for any use, including servers.
I left Ubuntu Server Edition for last. I’ve been using it on a QEMU virtual machine for a very long time. I have to admit that it is an exceptional server distribution and, if CentOS didn’t have the advantage of the easy migration, this distro would be first in my list.
Linux Distribution for Servers by George Notaras is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Copyright © 2007 - Some Rights Reserved