Deployment for Makers is a book about setting up your own virtual server for the purposes of running a web application. It teaches you the basic theory of system administration and goes through many practical tasks that all result in a deployed full-featured web application backed by a relational database on Linux.
The book is intended for beginners and false beginners in system administration, server provisioning and deployment. It's designed to be good first exposure and deliberately focusing on fundamentals.
Requirements for this book are basic knowledge of HTML, CSS, Internet, and computers. Recommended is some knowledge of building web applications and navigating a Linux command line.
And much more!
We will work with Fedora 29 and CentOS 8 operating systems, deploying Python and Ruby applications, PostgreSQL and Redis databases, configuring NGINX web server and proxy.
All of this wrapped with general theory and approach applicable to other technology choices too.
What is book is about and how to read it. Fedora, CentOS, VPS, virtualization, cloud and other terms explained to get everybody up to speed.
The theoretical foundation. TCP/IP, internet protocols and network services. Understanding IPv4 and IPv6 addresses.
What is a command line? Bash basics including filesystem navigation and files editing. SSH configuration.
Exploring networking setup, connecting VPS to the world Internet, private networking with our other servers.
Creating and understanding users and groups for finer and more secure management. Adding system administrator and application users.
Exploring the question on where to look for and put our files on Linux. Understanding the Filesystem Hierarchy Standard.
Detail look on Linux file and directory permissions.
Introduction to package management on Fedora and CentOS. Installing 3rd party software.
Looking into Bash capabilities for making a reusable provisioning and deployment scripts.
Starting and running processes. Using systemd and creating unit files. Monitoring and system logging.
Python and Ruby installation from packages, version managers and even from source. Libraries, application servers, monitoring and debugging.
Diving into NGINX web application server and proxy. Looking at using TCP and UNIX sockets, important directives for performance and more.
Taking care of user uploaded data. Making secure backups.
A close look on running PostgreSQL and Redis in production. Access, permissions, monitoring, backups.
Theory and practical application of oftentimes overlooked Security-Enhanced Linux. Building custom policy files and troubleshooting.
A comfortable "git push" deployment setup for delivering code to a remote server. Extending it with post deployment tasks to handle all the use-cases we need.
Setting up a custom domain name with auto-renewal Let's Encrypt certificates.
A complete walk-through example of scripted provisioning and "git push" deployment of a full-featured Rails application including secrets, storage, WebSockets, PostgreSQL, Redis, backups.
Regular chapters are intervened by PRACTICE chapters with practical tasks extending the knowledge of previous chapter/s. They come directly with a solution.