This course has been updated! We now recommend you take the Full Stack for Front-End Engineers, v3 course.
Table of Contents
Getting Started with Full Stack
Course Introduction
Jem Young begins with an overview of the agenda, and sets this course up as an extension, and deeper dive into Full Stack for Front-End.Full Stack for Frontend Part 1 Recap & Purpose
Jem recaps the first 'Full Stack for Front-Ends to catch new attendees up to speed. Covered in v1 of this course were some basics like domains vs IP addresses, command line basics, how to create and manage a web server, how to create and deploy system for a Node app and building a basic web page. Jem also discusses the purpose and value of learning full stack.
Server Setup
Basic Server Setup, Updating and User Permissions
Jem walks through securely setting up, updating, and logging into a fresh server. He also adds a sudo user with correct privileges, and then switches to that user.Node setup and installation
To continue the server setup, Jem clone's his github repo, and then he uses NPM to install Node 6, and install the Forever module. Then Jem walks through the dangers of installing these packages in the wrong directories, which can result in incorrect user permissions.
Server Security
Security Overview
Jem starts with an overview of server security by controlling access and securing applications.Adding SSH keys
Jem adds an SSH key for the user created earlier, along with covering best SSH practices.Security Settings
Continuing server security setup, Jem adds a password for root user, disables root login, and disables password login.Firewalls
Jem explains the basics of a firewall and using nmap to do a scan report looking for open ports.Firewall configurations: iptables
More of a theoretical exercise due to the ease in which you can lock yourself out of your server, Jem walks through how iptables work with some configuration examples and commands.Firewall configurations: UFW and GUI options
A better way to control ports on your server than iptables is ufw. Jem shows you how to user ufw to take control of your firewall configuration, along with some GUI options that may be available depending on where your server is hosted.Automatic Updates
First Jem discusses the importance of automatic updates, then he illustrates how to install and configure them on the server.Fail2ban: Exercise
In this exercise, an overview of Fail2ban is explained, and then Jem installs and configures the tool.
Advanced Shells
Shell Tools: Find and Grep
Starting with a very quick overview of ‘What is a shell?’, Jem moves into covering two extremely useful command line tools to find things: find and grep.Find: Exercise
Jem walks through some examples of how to use find, and why mastering this command can be extremely useful.Grep: Exercise
Grep is another powerful command to help you search your server. Jem illustrates some examples of how to use grep to help you find content within your files.Redirection
Jem describes the power of redirection and redirection operators.Shells
Jem explores the concept of shells and the different types of shells that exist. As an exercise, Jem changes between a few different shells, and then exits to bash.Shell scripting
Jem walks through an example of a shell script and shows the pros and cons of shell scripting.Bash scripting: Exercise
First Jem gives an example of portable shell scripting in bash, and then he talks briefly about chmod and how it controls permissions.Creating a shell script with Node: Exercise
Jem walks through an example of creating a node shell script.
HTTPS
Nginx Setup: Installation
Jem starts with an overview of HTTPS, and then completes setting up Nginx while providing tips to make installation easier.Nginx Setup: proxy traffic to node server
After configuring Nginx to send traffic to the node server, Jem starts the node server and confirms his setup is working correctly,Nginx Setup: Adding a domain name and opening port 443
To prepare the server for the HTTPS certificate, Jem edits the Nginx configuration and opens port 443.Why HTTPS
Reinforcing good security practices, Jem leads a discussion on what HTTPS is, and why it matters.Installing HTTPS certificate
Jem enables HTTPS on his example web server by generating, configuring installing and testing certification with certbot. HE also leads a tour of how to audit the security of your https encryption, and how to update your certificate when it expires.cron
The origins of the command ‘Cron’ are explored by Jem, as well as its purpose and usage.cron: Exercise
Using cron and certbots, Jem sets up auto updates to the HTTP certificate on the example server.
Nginx Tuning
Nginx Tuning: Overview and Gzip
Jem talks about the power of optimizing Nginx, and introduces and sets up gzip for compressing outgoing traffic.Expires headers
Jem describes how expires headers control caching between the web server and the client, and we explore how to set these up. Included are some discussions around best practices and common problems with expires headers.Caching
By setting up caching, Nginx can speed up the server’s hosting while using less resources. Jem walks through how setup and configuration works with caching on his example server.Websockets: Setup
Jem starts with an overview of websockets, and then moves into setting up a tunnel in Nginx for websockets to connect with Node, and verifies that this is working on his client web browser.Websockets: Client-side code and observables
We explore the client side code interacting with websockets data, and get a brief discussion on observables.Websockets: Exercise
As an example using websockets, Jem uses a script created earlier to create a real-time resource graph for the web server on the client.http/2
Jem gives an http/2 overview and talks a bit about its history.http/2: Exercise
To illustrate how http/2 works, Jem enables and tests http/2 on his example server.Redirect
After describing how to redirect on your website to anywhere on the web, Jem discusses the difference between 301 and 302 redirects.
Databases
Database Types
Jem explores the differences between relational and non-relational databases, and how to pick your DB type based on usage and requirements.Exercise: MySQL Installation
In this exercise, Jem installs and tests MySQL server on the example web server.Dabase Best Practices
Based on hard-earned personal experience, Jem provides useful tips and best practices for protecting and maintaining your database.
Containers and More
Containers
Jem introduces containers, the benefits of containers, and some examples of how they are used.Orchestration
The concept of orchestration is discussed with Jem, and a tool and example are explored.Automated Deployments
Jem briefly shows how using automated deployments can enable you to quickly and accurately spin up many environments like the one built in this course.