In this course you will learn:
- How to deploy applications on a Linux server on an IaaS platform (Microsoft Azure).
- How to deploy applications on a PaaS platform (Render).
In pursuit of this goal, you will learn:
- How to use the command line and version control.
- The basics of Unix system administration and cloud computing architectures.
- Good security practices related to system administration and web applications.
This course is a Media Engineering web development course taught at HEIG-VD.
- Legend
- What you will need
- Plan
- How to improve our basic deployment
- More Practice
- Extra
- Frequently Asked Questions
- References
Parts of this guide are annotated with the following icons:
- π Slides or written documents pertaining to the various topics discussed during this course.
- π¨ An exercise aimed at practicing a topic discussed in class.
- π₯ This exercise is graded.
- π Solution(s) for an exercise.
- π₯ A video related to a subject.
- ποΈ The deployment architecture put in place during an exercise.
For you to succeed in this course, it is highly recommended that you read and complete all the content that is not labeled "extra".
- A Unix CLI
- Linux/macOS users can use their standard Terminal
- Windows users should install Git for Windows which includes Git Bash (or the WSL for more advanced users)
- Git
- macOS users should install the command-line tools
- Windows users should install Git for Windows
- Linux users on Debian/Ubuntu-based systems can install Git with the
sudo apt install git
command, or with their other distributions' package managers.
- A free GitHub account
- Google Chrome (recommended, any browser with developer tools will do)
- A free Render account
-
Introduction
-
Version control
-
Security
-
Basic deployment
-
Advanced deployment
- π¨ Deploy a PHP application with Git
- π Twelve-factor app
- π Unix environment variables
- π¨ Configure a PHP application through environment variables
- π Linux process management
- π¨ Manage a PHP application with systemd as a Process Manager
- π Domain Name System (DNS)
- π¨ Configure a domain name
- π Reverse proxying
- π¨ Deploy a static site with nginx
- π¨ Deploy a PHP application with nginx and the FastCGI process manager
- π¨ Deploy a multi-component web application with nginx
- π¨ Horizontally scale a web application with nginx as a load balancer
- π TLS/SSL certificates
- π¨ Provision a Let's Encrypt TLS certificate with Certbot
-
Automated deployment
-
Graded deployment exercise
- π₯ π¨ Not yet available
-
Managed deployments
Stay tuned for more.
Complete deployments
- π¨ Deploy Flood It, a Spring Boot (Java) & Angular application with a PostgreSQL database
- π¨ Deploy Minesweeper, a Phoenix (Elixir) & Alpine.js application with a PostgreSQL database
- π¨ Deploy RPS, a Node.js & Svelte web application with a PostgreSQL database
- π¨ π¨ Deploy WOPR, a Sinatra & Svelte application with a Redis database
- π¨ Deploy One Chat Room, an Express (Node.js) web application with a MongoDB database
- π¨ Deploy Big Browser, a Nest.js (Node.js) application with a Redis database
42
Read the command line cheatsheet
Read the system administration cheatsheet
These are the main references used throughout this course. More detailed and additional links to various online articles and documentation can be found at the end of each subject.
- The Linux Documentation Project
- Building the Future of the Command Line
- SSH, The Secure Shell: The Definitive Guide - Daniel J. Barrett, Richard E. Silverman, Robert G. Byrnes
- The Git Book
- Open Web Application Security Project
- Ops School Curriculum
- The Internet Explained From First Principles
- The Twelve-Factor App
- Systemd Manual
- nginx documentation
- Render Documentation
Wikipedia is also often referenced, namely these and related articles: