Deployment from Scratch Don't sweat taking web applications to production servers.
Learn the core transferable skills of setting up Linux virtual servers and Docker containers. Provision web servers, application servers, workers, and databases.
- Improve as a web developer and a software engineer Follow your curiosity and get answers on what it takes to take a web application to production. Improve your understanding of networking and security to stand out.
- Self-host your startups and side-projects to save money You'll learn how to self-host anything from an application server to a database. Your first startup can start on a $5 a month virtual machine in the cloud.
- Start a career in Site Reliability Engineering and related fields The book goes through a wide range of topics and thus is ideal as a first step towards the hottest and highest paying careers today.
Tear the black box down
More than 20 years ago, deploying web applications was a black box for me. I had many questions.
It wasn't always clear to me whether running an application server with the rails s command is enough for production. And how to properly deploy a database. Or secure a server. Yet it was something I always wanted to understand and I never stopped asking.
Over the years, I found my answers. Now I want to share them with you so you can bring your applications to life.
I cover a lot of corners of system administration, server configuration and deployment of web applications. It's everything from network theory to encrypting database backups.
At the end, we'll take that black box and tear it down.
— Josef
Deploy Ruby, Python, PostgreSQL, Redis & others.
What readers say
I was fighting to deploy my Ruby on Rails application. Now, I deploy my application to a production server with 4 CPU cores, 16 GB of RAM, and automated backups for barely €15 a month. The same would be €500 on Heroku. I now deploy with a single command, too. For me, this is a real competitive advantage.
I cannot recommend the book enough!"
26 chapters
Take a look inside
Code examples
A static website
A static website with automatic Let's Encrypt certificates and system updates. A separate configuration and rootless deployment script.
Add server-side analytics and beat the pricing of hosted solutions.
A database-backed Ruby on Rails application with Action Cable
A single server running a full-featured web application with UNIX sockets, PostgreSQL ident system authentication, Web Sockets, and Let's Encrypt certificates. A git-push deployment with helpful administration scripts.
Adjust for your application based on the knowledge from the book. Deploy within the same day!
A standalone PostgreSQL server
A self-sufficient PostgreSQL cluster demo with automatic system upgrades, log rotation, and TLS. Scripts for cluster-wide backups and restores.
Run a standalone database when you need more power or to host all your projects' databases in one place.
All demonstrations are scripted in Bash for CentOS 8 and Rocky Linux 8 systems. You don't need any knowledge of typical configuration management tools. Learn how things work without abstractions.
Testimonials
Authors
Questions answered
Why self-hosting if there is Heroku?
There are few good reasons for being more independent on your hosting provider. If your account gets locked, you can easily move your virtual machines to other providers or on-premise. The others being cost, flexibility, or ability to provide a self-hosting option for enterprise customers.
Maybe staying with managed services like Heroku or Render is the right choice for you. This book is not about convincing you to self-host, but to show you how it's done.
Is this about on-premise?
The book's focus is on self-hosting on virtual machines within a cloud provider where people can conveniently combine self-hosting with hosted services.
While everything applies to on-premise self-hosting as well, I don't talk about provisioning the hardware for the virtual machines themselves.
What operating system is it for?
The book targets Fedora family of systems, mainly the stable CentOS 8 and Rocky Linux 8. If you are using other systemd-based operating systems such as Ubuntu, most of the book will still apply as only the package management is truly different (DNF vs APT).
I don't use Ruby or Python. Is this for me?
I wanted to write a general book, but writing in an abstract way wouldn't be that useful. I chose Ruby and Python as popular programming languages for my examples, but before diving into a specific application server setting, I go through everything in theory.
If you are using another programming language, you'll have to find these details yourself, but you'll know what to look for. And even then it's probably less than 10% of the book.
Why Bash?
While Bash doesn't seem like an ideal choice at first, it's surprisingly ubiquitous. Linux packages' specification files are in Bash, version managers like chruby and pyenv are in Bash, Dockerfiles and their entrypoints are practically Bash.
Above all, I chose Bash to show everything without deep abstractions, so you know what's going on every step of the way.
SE Radio
Code with Jason







