I've been discussing web development and hosting in increasing amounts of detail.
Most web servers use Linux as an operating system.
And we're going to be using Linux in this course as well.
With that said, before you start using any tool, having context about what it is and
why it is being recommended will deepen your
understanding of the system that you are using.
Blindly repeating actions without being able
to question or justify why isn't learning.
Therefore, let's explore what Linux is and why it's a good option for development.
Let's step back and answer a different question first.
What is an operating system?
In the purest sense, it's software needed to run programs on a computer.
Common examples of operating systems include Microsoft Windows and Mac OS.
An operating system manages the computer's hardware as an intermediary.
Meaning programs only need to know how to talk to the
operating system, not how to work with the CPU or other peripherals.
Additionally, an operating system provides common services, such as
user interactions through a graphical user interface or command line.
They also have the ability to manage programs by
performing tasks such as installing, running, stopping, and so forth.
With that context, Linux is a free and open source operating system.
That doesn't necessarily refer to the price of the software.
To quote the Free Software Foundation.
Then of free, as in free speech, not as in free beer.
Linux is available on most computer hardware platforms.
Young and old, off the shelf to hand-built.
In fact Linux is the leading server operating
system in the world, and that's no small feat.
I mentioned free, and open source software explicitly before, as that's a
core value that has lead to the development and spread of Linux.
Free and open source software is a movement by the GNU Project.
Yes, I'm pronouncing that correctly.
Free is an interesting term.
In this context, it means freedom to copy, edit
and distribute both the source and the program itself.
This empowers users to change the software
to fit their needs, the ultimate in flexibility.
Open source explicitly refers to the source
code that's is available to read and modify.
The advantage of open source software, is that it takes a
collaborative process of a group of people to develop and maintain software.
So that sounds good in concept, but why does it matter?
Well, coordinated collaboration results in a much stronger product than
the efforts of an individual or group with only one perspective.
Also, the free aspect can minimize or eliminate the
direct financial cost to the use of the core software.
As someone who works almost exclusively with open source technologies.
I can tell you that the true cost of free and open source software is time.
What is your time worth?
Free and open source software also offers
a wide variety of components to build upon.
If you have a problem, there's a strong probability that you're
not the only person who's ever tried to find a solution.
While you may not find a particular tool
that does everything that you need, there's a
wide variety of enterprise grade software for you
to use that is peer built, reviewed, and designed.
This allows you to focus on developing your
own core product rather than reinventing the wheel.
Finally, this freedom also has fostered a large community support base.
You can reach out to others in a variety of ways, both online and offline.
Search engines, wikis, forms, internet relay chat, meetups,
and conferences all help to share and increase knowledge.
Saying you use Linux is like saying you're using a car.
There isn't just one flavor of Linux.
The general term actually encompasses hundreds
of variations known as Linux distributions.
A distribution is a combination of software that adds functionality to Linux.
Distributions are typically packaged for specific purposes.
For example, a desktop distribution intended
for end users would typically include a
graphical user interface and user applications,
like an office suite and Internet browser.
In comparison, a server distribution typically
has no graphical user interface, comes with
a lot less software, and is easy to configure for a specific purpose.
There are many distributions available for both organizations and companies.
Some are completely community-based, while others have a commercial
component in the form of support or custom development.
There are hundreds of different Linux
distributions available that are in active development.
Each with their own specialization, focus, or advantages.
Let's take a brief look at some
of the most popular, and well supported distributions.
OpenSUSE, Fedora and Ubuntu, which we'll use as the basis of our server.
OpenSUSE is the fifth most popular distribution, according to DistroWatch.
Intended to be easily accessible, both in terms of acquisition and use.
Variants have been developed since 1994 when it was formally known as SUSE Linux.
OpenSUSE is a community program sponsored by Novell.
It drew criticism from principle Linux
architect, Linus Torvalds, for usability issues.
Especially around security policies requiring
root credentials to perform everyday operations.
Fedora is a general purpose Linux distribution, and
the third most popular Linux distribution according to DistroWatch.
Fedora has been developed since 1995, when it was known as
Red Hat Linux, and has been split into community and commercial additions.
Fedora has a very short life cycle of only 13 months per version which can
be very disruptive for those who are trying
to rely on support for a particular version.
In comparison Ubuntu does not suffer from the same sorts of problems.
Ubuntu is focused on features and support, making it very easy to use and build upon.
Ubuntu is a fork or derivation of the
Debian codebase which has a very long legacy.
It's the second most popular distribution only to
Mint, which is a desktop-only fork of Ubuntu.
Ubuntu is sponsored by Canonical, which
makes money selling support options for it.
Ubuntu has a very regular release cycle of every six months.
Sounds short, well Ubuntu also has long term
support versions with at least two years of support.
Ease of use, community and commercial
support, and popularity are along the major
factors that guide to the decision to use Ubuntu for our development server.
Given all this context, it should be a little bit clearer
about why Linux is well suited as a web development server.
Linux distributions are purpose-built with roles such
as desktop or servers including web development.
There are many tools already built-in or
readily available for installation to extend Linux.
Linux is easy to configure for specific purposes.
While in comparison, your existing operating system may feel like
a bit of a square peg in a round hole.
Not a good fit when you try to do something that it wasn't designed for.
Linux and Ubuntu specifically, have great support in
the forms of documentation, knowledge basis and communities.
Chances are that you weren't the only person with that problem.
So look around if you have a question.
And finally, best of all Linux is free for collaboration, building and sharing.
I can't think of a better foundation for building web applications.