Linux Safe Maintenance Window Checklist
Production maintenance is where many outages begin. Updates, restarts, config changes, storage changes and firewall changes should happen inside a controlled window with backup, verification and rollback.
Core principle
A maintenance window is a risk-control system. It defines what will change, when it will change, how success is verified and how rollback happens.
Checklist
- Define the maintenance goal.
- List affected services.
- Pick a low-traffic time window.
- Create backup or snapshot.
- Save current config files.
- Prepare verification commands.
- Prepare rollback commands.
- Make one change at a time.
- Verify after each change.
- Write a short maintenance note after completion.
Reusable lesson
This applies to Linux updates, Nginx config changes, PHP-FPM tuning, MySQL maintenance, firewall rules, Docker deployment and backup restore drills.
When to Use This Checklist
Use this checklist before making risky changes to a production VPS, website, database, firewall or automation stack.
Required Tools
SSH access, backup or snapshot, config paths, monitoring, verification checklist, rollback commands
Before You Start
If you cannot explain the rollback, do not start the maintenance yet.
Structured Checklist Steps
- Define goal.
- List affected services.
- Choose safe window.
- Create backup.
- Copy configs.
- Prepare verification.
- Prepare rollback.
- Change one thing.
- Verify result.
- Write maintenance note.
Verification Steps
- Backup exists.
- Config copy exists.
- Services work after change.
- Logs show no new critical errors.
- Rollback path remains available.
Rollback Plan
If maintenance causes production failure, stop further changes, execute the rollback plan and document the failed assumption before trying again.
Common Mistakes
- No backup.
- No rollback.
- Changing many things at once.
- No verification commands.
- Doing risky changes during peak traffic.
Related Commands
date
cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/example.com.bak
sudo nginx -t
sudo systemctl reload nginx
curl -I https://example.com
systemctl --failed
sudo tail -n 100 /var/log/nginx/error.log