Linux for Cloud Engineers
Learn how to set up, secure, deploy to, and maintain a modern Linux server.
This guide is for engineers who build applications and also need to manage the servers that run them. The examples use Ubuntu and Debian. Other distributions use many of the same tools, but package names and service configuration can differ.
What this guide covers
You will set up access, remove unsafe defaults, run an application as a service or container, add HTTPS, investigate failures, and restore data from a backup.
How a request reaches your application
Public traffic enters through the firewall and Nginx. Nginx handles HTTPS and sends the request to the application. The application runs without root access, and the database is not exposed to the public internet. Logs help you investigate problems; backups let you recover data.
Learning path
Before you begin
Use a disposable test server—not production—for the first pass. You need:
- a recent Ubuntu LTS or Debian server;
- its public IP and provider console access;
- a local terminal with OpenSSH;
- a domain name for the deployment section; and
- a Git repository containing a small web app.
How to work safely
- Observe before changing. Capture current state and the expected outcome.
- Prefer reversible changes. Back up config, validate it, then reload—not restart—when possible.
- Keep one recovery path open. Provider console access and a second SSH session prevent avoidable lockouts.
- Run applications without root. Grant only the access a service actually needs.
- Automate repeated work. First understand the task; then document and automate it.
Before using this in production Make sure you can explain every public port, identify the process behind it, find its logs, deploy a specific version, and restore its data on another server.