Become a Full Stack Engineer and gain the confidence to master the command line and server. You’ll learn how the internet works from DNS to IP tables. Learn to setup a domain with HTTPS on your own virtual private server (VPS). Learn VIM and SSH from the command line.
You’ll gain practical knowledge of everything from building a web presence, to setting up a virtual server, to publishing on your custom domain — all from the command line.
Full Stack for Frontend Engineers
- 06:47 - 08:12 Inroducing domains Jem talks about the basics of domains and how they relate to IP addresses.
08:13 - 10:57
Talking about how IP address maps to domain names, Jem reviews the importance of DNS.
- 10:58 - 12:51 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.
- 12:52 - 15:41 DNS Caches Jem reviews the concept of DNS caches and the different types of DNS caches that help speed looking up of domains.
- 15:42 - 17:25 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.
- 17:26 - 19:48 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.
- 19:49 - 23:14 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.
23:15 - 26:08
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.
26:09 - 30:53
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.
30:54 - 33:39
VIM command mode
Manipulating a file with Vim, Jem demonstrates common tasks available in command mode.
33:40 - 38:18
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.
- - http://vim.wikia.com/wiki/Copy,_cut_and_paste
38:19 - 43:00
Editing and Saving in Vim
Jem covers editing and saving commands in Vim.
- 43:01 - 46:51 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.
- 23:15 - 26:08 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.
- 46:52 - 51:46 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.
- 51:47 - 56:42 SSH By talking about the problems of simple passwords, Jem further explores the concept of SSH and public key authentication.
- 56:43 - 01:08:55 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
- 01:08:56 - 01:11:26 VPS & Cloud Computing Reviewing the types of servers, dedicated servers, and VPS, Jem introduces cloud computing.
01:11:27 - 01:23:08
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/c5c1d7c254d8
- 01:23:09 - 01:26:53 Exercise 10: Log onto your own server In this exercise, Jem and students log into the server that they recently made.
- 01:26:54 - 01:29:19 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.
- 01:29:20 - 01:42:01 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.
- 01:42:02 - 02:00:11 Logging in with SSH Jem demonstrates how to assign SSH public key to a newly created server.
- 02:00:12 - 02:05:41 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
02:05:42 - 02:14:13
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.
02:14:14 - 02:18:32
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.
02:18:33 - 02:20:31
If a project is hosted on Github, Jem indicates that a CNAME record can be used to associate a domain name for free hosting.
- - https://support.dnsimple.com/articles/differences-between-a-cname-alias-url/
- 02:20:32 - 02:23:44 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.
- 02:05:42 - 02:14:13 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.
Setting Up the Server
- 02:23:45 - 02:28:57 Introducing Unix Operating Systems Jem reviews the operating systems (OS) and why a UNIX-based OS such as Ubuntu is preferred.
- 02:28:58 - 02:32:21 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.
- 02:32:22 - 02:35:30 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.
- 02:35:31 - 02:42:52 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 configuration
- 02:42:53 - 02:45:22 Installing Git, NodeJS, and NPM Jem installs Git, NodeJS, and NPM onto the new server.
- 02:45:23 - 02:47:57 Making a symbolic link Creating a symbolic link, Jem sets NodeJS to mean node on the server.
- 02:47:58 - 02:50:16 Creating a web directory To place files for the web site, Jem shows how to create a web directory.
- 02:50:17 - 02:53:01 Changing permissions To keep from the repetitive usage of sudo when creating files, Jem uses the chown command to change folder and file permissions.
- 02:53:02 - 02:55:07 Cloning a Git repository Jem clones a repository from GitHub onto his new server.
- 02:55:08 - 02:57:58 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.
- 02:57:59 - 02:59:36 Starting the server Jem starts the node server, which is serving off port 3001.
Modifying the Server
- 03:09:37 - 03:14:10 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.
03:14:11 - 03:21:40
Fixing NPM permissions, Jem installs Gulp globally on the server so that the task manager runs from the command line.
- 03:21:41 - 03:24:15 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.
- 03:24:16 - 03:28:03 Log files Jem sets up log files to track any potential errors Forever.
03:28:04 - 03:33:49
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.
Putting it all together
Wrapping Up and Q&A
03:39:43 - 04:05:40
Jem reviews the steps students have gone through to create a server and launch a new web application. Answering student questions, Jem talks about the differences between HTTP and HTTP2 and benefits and constraints of HTTP2; how to associate a CSS file in the Node app; how to deploy a few or many servers from a laptop; how a server can host multiple domains on one Nginx setup; an overview of setting up HTTPS; how to backup private SSH keys; and whether GZIP, a file compression utility used for reducing the file size of web assets, can be used in tandem with HTTPS.
- - https://github.com/glenux/polyssh
- 03:39:43 - 04:05:40 Course wrap-up Jem reviews the steps students have gone through to create a server and launch a new web application. Answering student questions, Jem talks about the differences between HTTP and HTTP2 and benefits and constraints of HTTP2; how to associate a CSS file in the Node app; how to deploy a few or many servers from a laptop; how a server can host multiple domains on one Nginx setup; an overview of setting up HTTPS; how to backup private SSH keys; and whether GZIP, a file compression utility used for reducing the file size of web assets, can be used in tandem with HTTPS.