Linux for Developers: Administering Your Application's Server
Linux for Developers is a beginner-level course of 5 lessons (about 1 h 36 min), with 15 exercises and 15 quiz questions. Prerequisites: Terminal and Command Line. The course needs a full project environment, planned for a later phase of the platform.
- Cloud and DevOps
- Beginner
- 5 lessons
- 1 h 36 min
- 15 exercises
- Full project environment (phase 2)
The course in brief
This course gives developers the Linux administration basics needed to run an application on a server. You will manage users, groups and permissions, turn your application into a systemd service, diagnose the network and secure SSH access, read logs and deal with a full disk, then automate backups and scheduled tasks. The exercises are done in a real Linux terminal.
What you will be able to do
- Manage users, groups, owners, umask and shared folders
- Observe processes, send them signals and write a systemd unit
- Diagnose ports, DNS and HTTP connections, configure a firewall and key-based SSH access
- Read logs with journalctl, configure logrotate and fix a full disk
- Write an idempotent backup script and schedule it with cron or a systemd timer
Syllabus: 5 lessons
- Create users and groups and understand sudo
- Assign owner and group with chown and master umask
- Set up a shared folder and install software with apt
Users and groupssudo and rootOwner, group, umask, setgidapt package management
- 02
Processes, Signals and systemd Services
- Observe processes and stop a program cleanly
- Manage a service with systemctl
- Write a systemd unit to run an application
- 03
Networking, Ports, Firewall and SSH
- Diagnose addresses, ports and DNS resolution
- Open only the necessary ports with a firewall
- Connect to a server with an SSH key and a ~/.ssh/config file
Interfaces and routesPorts and listeningName resolutionufw firewallKey-based SSH
- 04
Logs and Disk Space
- Read a service's logs with journalctl and in /var/log
- Set up log file rotation with logrotate
- Diagnose a full disk with df and du
- 05
Administration Scripts and Scheduled Tasks
- Write a robust, idempotent backup script
- Schedule a task with cron or a systemd timer
- Archive and synchronize files with tar and rsync
Backup and retentioncron schedulingsystemd timersIdempotence
Final project
Putting an Application into Service on a Linux Server
On a Linux VM (Debian or Ubuntu), install a small web application from your learning path and make it production-ready: dedicated service account, systemd unit with automatic restart, listening on 127.0.0.1 behind a web server, firewall limited to ports 22, 80 and 443, SSH access by key only, log rotation and a scheduled daily backup with a restoration test.
Deliverables
- The unit files (.service and .timer), the logrotate configuration and the backup script
- The output of `sudo ss -tlnp`, `sudo ufw status verbose` and the application's `systemctl status`
- A README runbook: start, stop, read the logs, restore a backup
- Proof of a successful restoration (command and diff output)
Assessment criteria
- The application runs under a service account with no shell and restarts by itself after an abrupt stop
- Only ports 22, 80 and 443 are open; the application and the database listen on 127.0.0.1
- Password SSH login and direct root login are disabled
- Logs are rotated and the backup is scheduled, idempotent and locked
- The restoration is documented and has been tested
Frequently asked questions
Do I already need to know the terminal?
Yes: this course builds on the Terminal and Command Line course (F2). Navigation, grep, pipes and basic bash scripts are assumed to be known.
Which Linux distribution is used?
The examples are based on Debian and Ubuntu, which are very common on servers. The concepts (systemd, journalctl, SSH, cron) are the same elsewhere; only the package manager changes, for example dnf on Fedora.
Do all the exercises work in the online terminal?
Most of them, yes. Exercises that require systemd (services, timers) must be done on a machine where systemd is active: a VM, a test server or WSL with systemd enabled. The instructions say so.
Does this course replace system administrator training?
No. It covers what a developer needs to know to deploy and maintain their application. High availability, advanced monitoring and in-depth security are covered in other courses.
This course, told for your job
Say what you want to be able to do: “Linux for Developers” takes its place in your path, with examples from your field. The concepts stay those of the course.