This course has been updated! We now recommend you take the Full Stack for Front-End Engineers, v3 course.
Table of Contents
Full Stack for Frontend Engineers
Domains
Inroducing domains
Jem talks about the basics of domains and how they relate to IP addresses.DNS
Talking about how IP address maps to domain names, Jem reviews the importance of DNS.Exercise 1: Ping
Jem covers ping, a network tool for testing if a domain name is reachable. Then going through several domains, Jem demonstrates how to use ping command and read the results.DNS Caches
Jem reviews the concept of DNS caches and the different types of DNS caches that help speed looking up of domains.Security
Talking about the importance of Internet security, Jem asks to be mindful of your internet practices as people are always trying to break into your server.Cache Poisoning
Jem describes a potential security problem with cache poisoning, also known as DNS spoofing. When false DNS information introduced, a hacker could divert your site's traffic to their server.Exercise 2: Traceroute
Jem shows traceroute, a network tool for illustrating the path to a server as well as the time it takes to connect. Using Netflix.com as an example, Jem reviews the output from a traceroute to show how a browser gets to the domain.
Vim
Exercise 3: Introducing Vim
Giving an overview of the UNIX text editor, Jem discusses the importance for engineers to learning Vim. Afterwards, Jem introduces a VIM ercise. In this exercise, students open the Vim editor in their terminal application. Using his computer, Jem shows how to initiate the Vim editor.Exercise 4: Vim modes
Jem reviews three modes to operate Vim: command, insert, and the last line. At the start, Vim is in command mode. In this exercise, students open the Vim editor and change into the software's different command modes. Jem reviews Vim's inserting mode and shows how to write code within the editor.VIM command mode
Manipulating a file with Vim, Jem demonstrates common tasks available in command mode.Exercise 5: Vim command mode
Jem sets up an exercise for using the Vim command mode. Then Jem demonstrates some of the more standard Vim command mode functions.Editing and Saving in Vim
Jem covers editing and saving commands in Vim.Exercise 6: Editing and Saving in Vim
To help learn Vim through repetition, Jem sets up an exercise for writing out Vim commands in the Vim editor. Then Jem answers student questions about editing and saving with Vim.
Servers
Exercise 7: Introducing Servers
Jem introduces Internet servers. Then Jem demonstrates logging into a server with secure remote login application, secure shell (SSH). Walking through logging into a server, Jem shows how to use SSH.SSH
By talking about the problems of simple passwords, Jem further explores the concept of SSH and public key authentication.Exercise 8: Creating an SSH Key
Jem introduces an exercise to make an SSH key to log into a server securely. Jem walks through the steps to generate a private and public SSH keys.
Setting up a VPS
VPS & Cloud Computing
Reviewing the types of servers, dedicated servers, and VPS, Jem introduces cloud computing.Exercise 9: Buy a VPS
In this exercise, students buy space on a VPS. Jem demonstrates differences between AWS and Digital Ocean. Using the public key generated earlier in the course, Jem walks through steps to buy a VPS through Digital Ocean. Sign up at Digital Ocean ($10 credit): https://m.do.co/c/c5c1d7c254d8Exercise 10: Log onto your own server
In this exercise, Jem and students log into the server that they recently made.Exercise 11: top
In this exercise, students use a task manager program to create a list of running processes on a server. Then Jem reviews top and also installs htop, an alternative to top with a color interface.Exercise 12: Setting up your server
In this exercise, you will work on upgrading software and adding a new user to the server to avoid using root login. Answering student questions, Jem works through the steps to update the server. To make sure no one else uses root, Jem also adds new users to access the server and adds them to a sudo group.Logging in with SSH
Jem demonstrates how to assign SSH public key to a newly created server.Disable root access
After reviewing the importance of disabling root access, Jem shows how to modify the SSH config file to block root access into the server.
Getting a Domain Name
Buying a domain
To make our server easier to find on the web, an IP address should point to a domain name. Jem first illustrates how to purchase a domain name.Associating the DNS
To connect a domain name to the new server, Jem demonstrates how to map an IP address to a domain name using A record.Using CNAMEs
If a project is hosted on Github, Jem indicates that a CNAME record can be used to associate a domain name for free hosting.Wrapping Up
Finishing associating a domain name with the IP address, Jem takes questions from students about IP address and the difference between A and CNAME records.
Setting Up the Server
Introducing Unix Operating Systems
Jem reviews the operating systems (OS) and why a UNIX-based OS such as Ubuntu is preferred.Introducting Nginx
Jem introduces Nginx, a web server that can be used as a reverse proxy. Unlike a proxy server, a reverse proxy accepts requests from external clients—such as browser requests for a web page—on behalf of servers.Exercise 13: Nginx
In this exercise, students work on installing Nginx on your new server. Then Jem shows how to install Nginx on the new server.Exercise 14: Nginx configuration
With Nginx installed, you will look through the web server's default configuration file. Underscoring the progress of setting up a server to pointing to a web server with a new custom domain name, Jem walks through steps to display the Nginx default configurationInstalling Git, NodeJS, and NPM
Jem installs Git, NodeJS, and NPM onto the new server.Making a symbolic link
Creating a symbolic link, Jem sets NodeJS to mean node on the server.Creating a web directory
To place files for the web site, Jem shows how to create a web directory.Changing permissions
To keep from the repetitive usage of sudo when creating files, Jem uses the chown command to change folder and file permissions.Cloning a Git repository
Jem clones a repository from GitHub onto his new server.Rename directory and installing npm
To make the project more friendly for development, Jem renames the "Dev-Ops-for-Frontend" directory to "app". Afterward, Jem installs npm in the app directory.Starting the server
Jem starts the node server, which is serving off port 3001.
Modifying the Server
Deploying Code
Deploying Code & Introducing Gulp
Jem introduces the concept of deploying code by setting up Gulp and a deploy system. Then Jem talks about Gulp. A JavaScript task runner, Gulp is used to streamline the build systems in front-end web development.Exercise 15: Creating Gulp tasks
In this exercise, students build a simple Gulp task to minify CSS. Jem walks through a solution to the steps to make a Gulp task.Installing Gulp
Fixing NPM permissions, Jem installs Gulp globally on the server so that the task manager runs from the command line.Keeping an app running
To keep from having to start and stop the web server repeatedly, Jem demonstrates a process manager called Forever that keeps the process running indefinitely.
Log Files
Log files
Jem sets up log files to track any potential errors Forever.Exercise 16: Tailing a log file
In order to monitor a server's log file to determine what is happening on the server in real-time, Jem sets up tail, a Unix program. Tail displays the end of a text file and updates the display if there is additional server activity. Jem demonstrates how to use tail to watch his server's log file.