<metaname="description" content="Full Stack Python explains each layer of the web application stack, from the server up through the rendering in a user's browser.">
<ahref="http://www.virtualenv.org/en/latest/">virtualenvs</a> to isolate library
dependencies</p>
</li>
</ul>
<h3>Red Hat and CentOS</h3>
<p><ahref="http://www.redhat.com/products/enterprise-linux/">Red Hat Enterprise Linux</a>
(RHEL) and <ahref="http://www.centos.org/">Community ENTerprise Operating System</a>
(CentOS) are the same distribution. The primary difference between the two
is that CentOS is an open source, liberally licensed free derivative of RHEL.</p>
<p>RHEL and CentOS use a different package manager and command-line interface
from Debian-based Linux distributions: RPM Package Manager (RPM) and the
Yellowdog Updater, Modified (YUM). RPM has a specific .rpm file format
to handle the packaging and installation of libraries and applications. YUM
provides a command-line interface for interacting with the RPM system.</p>
<h2>Operating System Resources</h2>
<ul>
<li>
<p><ahref="http://www.linux.org/threads/selecting-a-linux-distribution.4087/">What is a Linux distribution and how do I choose the right one?</a></p>
</li>
<li>
<p>Lifehacker's <ahref="http://lifehacker.com/5889950/how-to-find-the-perfect-linux-distribution-for-you">guide to choosing a Linux distro</a>.</p>
</li>
<li>
<p><ahref="http://www.rackspace.com/knowledge_center/article/choosing-a-linux-distribution">Choosing a Linux Distribution</a></p>
</li>
<li>
<p><ahref="http://plusbryan.com/my-first-5-minutes-on-a-server-or-essential-security-for-linux-servers">First 5 Minutes on a Server</a></p>
</li>
<li>
<p>Digital Ocean has a detailed
<ahref="https://www.digitalocean.com/community/articles/how-to-set-up-ubuntu-cloud-servers-for-python-web-applications">walkthrough for setting up Python web applications on Ubuntu</a>.</p>
</li>
</ul>
<h2>Operating systems learning checklist</h2>
<p><iclass="fa fa-check-square-o"></i>
Choose either a Debian-based Linux distribution such as Ubuntu or a
Fedora-based distribution like CentOS.</p>
<p><iclass="fa fa-check-square-o"></i>
Harden the security through a few basic steps. Install basic security
packages such as <ahref="http://www.fail2ban.org/wiki/index.php/Main_Page">fail2ban</a>
or its equivalent. Create a new user account with sudo privileges and disable
root logins. Disable password-only logins and use a public-private keypair
instead. Read more about hardening systems in the resources listed below.</p>
<p><iclass="fa fa-check-square-o"></i>
Install Python-specific packages to prepare the environment for running a
Python application. Which packages you'll need to install depends on the
distribution you've selected.</p>
<p><iclass="fa fa-check-square-o"></i>
Read up on <ahref="/web-servers.html">web servers</a> as installing one will be the
next step in the deployment process.</p>
<h3>What topic do you need to learn to keep going?</h3>
<h4>Interested in a complete Full Stack Python book with detailed tutorials and example code? Sign up here and you'll get an alert email if a book is created. No other emails will be sent other than sign up confirmation.</h4>
$("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator