Book Chapters

The book Deployment from Scratch comes with 26 chapters that will take you from the basics to a deployment of a typical web application.

We'll learn from the ground up, from learning about networking and Bash, all the way to load balancers, handling secrets, and more.

26 chapters of awesome content

1. Bird’s Eye

A bird's eye view of high-level concepts when it comes to provisioning, configuration management, and application deployment.

2. Operating Systems

Before dispatching to clouds, we buckle up and get everyone familiar with standard streams, pipes, and other shell basics.

3. Little Bit of Network Theory

The theoretical foundation for understanding a multi-server setup, networking utilities, webserver configuration, and firewalls. A local and Internet addressing.

4. Secure Connections

Connecting to our first virtual private server. Getting familiar with the SSH protocol and its public key encryption. Configuring SSH on client and server.

5. Hands-On Networking

A hands-on exploration of a newly created virtual machine with a focus on networking. We'll learn about network interfaces, IP addresses, ports, and sockets in a more practical way.

6. Server Configuration 101

Installation and configuration of software from package repositories. Automating configuration management with Bash.

7. Filesystems

A brief look at what filesystems are and the filesystem layout in Linux. Where do files go, and where will our applications live?

8. User Roles

Priviledged and unprivileged access. Implementing user roles with Linux users and groups.

9. Permissions

Exploring the Linux discreet permission system and Access Control List to set ownership and limit access for services on the system.

10. Processes

A closer look at Linux processes. CPU and virtual memory, background processes, monitoring, debugging, systemd, system logging, and scheduled processes.

11. Web Servers

Kinds of web servers. Setting up NGINX as a web server and a reverse proxy. Automating log rotation.

12. Domain Names and Certificates

A closer look at DNS services and working with TLS certificates. Self-signed and Let's Encrypt.

13. Firewalls

Building imaginary walls with firewalld. Editing and defining zones to manage risk expectations.

14. Bashful Configuration Management

Building a simple convention over configuration Bash framework to configure servers.

15. Language Runtime

Exploring version managers of popular programming languages, isolating application dependencies.

16. Application Servers

Concurrency, threading, logging, and other considerations for a good application server configuration. Notes on Puma and Gunicorn configuration.

17. Building Services

Learning to write systemd unit files to run application services. Working with cgroups. System and user systemd services.

18. Databases and Key-Value Stores

Running PostgreSQL and Redis in production. Installation, configuration, client configuration. Backups and restores.

19. SELinux

A closer look at often overlooked Security-Enhanced Linux. Understanding the targeted policy and contexts. Fixing SELinux violations.

20. Storage Concerns

Discussing local, block, and object storage. Implementing network filesystems with NFS.

21. Backups and Restores

Data collection, compression, and encryption for frictionless data backups and restores.

22. Secrets Management

Secret management. Environment files and Rails Encrypted Credentials.

23. Application Deployment

Discussing deployment and post-deployment tasks. Making a Heroku-like git-push deployment.

24. Email Delivery

Sending and receiving email. Discussing email delivery and implementation.

25. Linux Containers

A primer on Linux containers. Building and running containers with Docker and Podman. Rootless and caching considerations.

26. Fortune Telling

What did you learn and where to go next from here?

A lot of resources are limited in scope, but this one has you covered on

500+ pages.