This is a roadmap I have planned, and this could change any moment as I continue to make videos
- How does a simple website work
- What is a website. How it works from local machine
- What is a server - How does the internet work (IP addresses, Ports etc)
- What is DNS (quick intro)
- Basics of Linux - Setting up simple web server
- History of Unix, Linux and the differences
- Virtualization - Installing Debian 10 on VirtualBox
- SSH - Remote logging, Key Exchange, Key based authentication etc
- User management in Linux - quick guide - sudo / root
- Installing package using apt-get - nginx
- Learn VIM
- Starting or stopping services using systemctl
- Checking for processes using
ps
- Checking for listening ports using netstat
- Checking open ports using netcat from the outside
- checking the logs for errors
- Before proceeding with nginx config - File system hierarchy in Linux
- Nginx configuration - Checking for errors
- What is HTTP - what are headers
- Host header and virtual hosting in Nginx
- Getting things onto the internet
- Getting a domain, a free domain
- Managing DNS for a domain. what it means
- Getting our website onto digitalocean server
- A more complicated web application - WordPress
- What is WordPress - what does it need
- What is an application server vs web server : HERE
- What is php, php-fpm and why do we need it
- What is a database and why do we need it - Intro to MySQL
- Installing and setting up WordPress
- Scaling wordpress - Why we need LoadBalancers
- Keeping our files versioned - Git
- What is git and why we need it
- Basic commands in Git
- Doing less work with Configuration management - Ansible
- What is Configuration management and why do we need it
- Basics of ansible
- Creating our ansible playbook for our Nginx server
- Back to a simple nodejs application
- This is only for demo - create a very simple app
- Keeping it in version control
- What is Jenkins, what can it do for us
- Automating our deployments - new version gets deployed on git push (Jenkins)
- Making sure our systems stay up - Monitoring
- The need for monitoring, what can it do for us
- Installing sensu for simple monitoring (HTTP and process)
- Getting more serious - Caching
- What is caching
- More about the HTTP protocol and headers
- Caching servers - Nginx
- Separate advanced caching with varnish ?
- Enable caching for our node application
- Automated cache busting as part of deployment
- Securing our servers with Firewall
- What is a firewall and what can it do
- Introduction to iptables
- Keep your stuff backed up
- Why we need backup
- How to backup individual stuff (MySQL)
- Evolving to Docker
- What are containers - what are we trying to solve
- Installing docker
- Getting started with docker containers
- Creating our own docker images
- Containerizing our node application
- Using Jenkins with docker
- Evolving to Kubernetes
- What is Kubernetes - what are we trying to solve
- Installing and getting started with minikube
- Basics of Kubernetes
- Moving our app to Kubernetes
- Better monitoring with Prometheus
- Prometheus, Alertmanager getting started
- Plotting our graphs with Grafana
- Moving to Cloud
- What, why of Cloud
- Google Cloud
- AWS
- Creating our infrastructure using Terraform
I have based this on a goal which is to setup a webserver, and learning Linux in the process of doing so. And the idea goes something like this
To get our website up, we need:
- A Linux server
- History of Unix, Birth of Linux
- Virtualization
- Install Debian 10 on virtualbox
- Accessing the server remotely
- Shell
- SSH
- SSH Key exchange - Diffie Hellman Key Exchange concept
- How key based SSH login is setup
- Navigating our shiny new server
- cd, ls etc, basic commands
- File system structure
- Creating files and folders
- echo, mkdir, cat etc
- vim, nano
- Create a user for our webserver
- User management
- Permissions
- Installing our webserver
- Webservers
- Package management using
apt
- Starting our webserver
- Managing services using
systemctl
- Checking if our server works
- Process management using
ps
,kill
etc curl
,netstat
,netcat
etcsystemctl status
- Configuring Nginx
- HTTP Headedrs
- VirtualHost - Creating two virtualhosts
- Using
/etc/hosts
file - Nginx config
- Checking log files -
tail
,less
grep
- More useful commands
find
,lsof
,df
,du
,dig
- Basic bash scripting
- Fundamentals of bash scripting - loops and conditions
- pipes, sed, awk etc
- Script to backup our website
- Script to alert if our website is down