Youre a developer.
A server broke, and youre the only one around to fix it.
You have a special-needs application that requires specific software.
You need to setup a development server, and will spend half of your day trying to get some simple configuration to work.
These are symptoms of Accidental Sysadmin Syndrome.
This book is for developers who find themselves needing or wanting to be a SysAdmin.
This book assumes at least a passing familiarity with the command line. Those who have logged into the shell and poked around a server before will benefit the most.
If you are new to the command line, concentrate on getting comfortable with Vagrant. This will help familiarize you with using the command line and servers.
Linux Distributions
There are many distributions of Linux. Some popular ones are Arch, Debian, Ubuntu, Redhat, CentOS, Fedora and CoreOS.
Many of these distributions are related to each other in some way. For example, some of these distributions are downstream from others.
A downstream Linux distribution includes the upstreams distributions changes, and may add their own.
For example, Ubuntu is based on Debian and is considered downstream of Debian. CentOS is based on RedHat and is therefore downstream from RedHat. RedHat sponsors Fedora and so Fedora is very similar to RedHat and CentOS (although it has a much more rapid release cycle).
Each distribution has opinions about Linux and its use. It would be too cumbersome to cover all topics for each distribution and so Ive chosen to concentrate on Ubuntu.
This book concentrates on Debian/Ubuntu, however, the serversforhackers.com video site covers multiple distributions!
Ubuntu is one of the most popular server and desktop distributions. It has a great set of configurations that come out of the box, allowing us to worry less about configuration until we need to. This makes it easy to use.
Ubuntu updates software packages quickly relative to some other distributions. However, updating to the latest software makes it easier to introduce new bugs and version conflicts.
Luckily, Ubuntus LTS releases are a good solution to this potential issue.
LTS stands for Long Term Support
LTS versions are released every 2 years but support for them last 5 years. This makes them ideal for longer-term use.
As major versions are released yearly, only every other major release of Ubuntu is an LTS. The current LTS is 18.04 - the following LTS release will be 20.04.
Xenial, the codename for Ubuntu 16.04, was released in April of 2016. Support officially ends 5 years later (April of 2021).
Bionic, the codename for Ubuntu 18.04, was released in April of 2018. This will be a relevant server for at least 2 years, but likely beyond that with support officially ending 5 years later (April of 2023).
Ubuntu LTS releases offer more stability and security, but generally do not prevent us from installing the latest software when we need to. This makes them ideal candidates for every-day server usage.
Popularity is Relative
RedHat Enterprise (RHEL) is a popular distribution in the enterprise world. Many hosting companies use CentOS along with cPanel/WHM or Plesk control panels. In the open source/startup worlds, Ubuntu is one of the most popular distributions of Linux.
Because Ubuntu is closely tied to Debian, most, but certainly not all, topics included here will be exactly the same for Debian.
For RedHat/CentOS distributions, most topics will have small-to-large differences from what you read here.
In any case, much of what you learn here will be applicable to all distributions.
I recommend this Rackspace knowledge-base article for more information on the various Linux distributions: https://community.rackspace.com/products/f/25/t/6677.
The Sandbox
If you want a sandbox - a place to safely play with a server - this chapter is for you.
The topics of the Sandbox section is not necessary to follow along in this book, but it will be helpful.
Youll learn how to setup a local server on which you can develop an application or experiment with new technology. As a bonus, youll avoid mucking up your computer with development software!
Well briefly cover using Vagrant to setup a local server.
The benefit of Vagrant is that it will let us use a real server to test on. You can create a server also used in production. Virtual servers are also safe - we can thoroughly mess them up, throw them away and recreate them as much as we need.