AWS Django deployment baseline
A small but carefully considered production setup for a personal website, focused on reliability and sane defaults rather than complexity.
Deploy a personal website with sensible production defaults (HTTPS, predictable restart behavior, correct static file handling) without overengineering or accumulating operational debt.
Configured Gunicorn as the application server behind Nginx, with correct static file handling and HTTPS via Let's Encrypt certificates (Certbot). Wired everything together using systemd for process supervision and sane restart behavior. Set up GitHub Actions to make deployments repeatable, reducing "it works on my machine" drift between environments.
Manually tested reverse proxy behavior, HTTPS routing, static file permissions, and service restart behavior after failures using curl and browser-based checks. Verified that deployments via the GitHub Actions pipeline produced identical results to manual deploys.
A stable and maintainable deployment baseline that served as the foundation for the personal site and established patterns reusable in future projects. The process also built familiarity with production Linux administration: systemd, Nginx configuration, certificate renewal, and debugging live services.