DevOps Fundamentals For Developers

Course Description

This DevOps Fundamentals course is designed to give web developers an understanding of how to deploy their applications in the real-world. It will give participants an understanding of how to provision an VPS (Virtual Private Server) from a cloud provider. It will cover logging into the VPS and give a thorough coverage of working on the linux command line. Participants will install software, configure a web application, open the appropriate ports, and configure the application to run as a service. A domain will be registered and SSL certificates will be issued from LetsEncrypt. Nginx will be utilised to serve HTML content and to act as a reverse proxy to run multiple sites on a single machine. The course will cover different ways of deploying a finished application, how to externalise configuration items, monitoring log files and continuous integration through the use of GitHub Actions. The course is hands-on with each participant enabled to configure their own server from scratch and set up continuous integration from a GitHib repository.
5 Days
Contact us for pricing
 

Prerequisites

The course is appropriate for web developers utilising any technology stack. No experience with Linux or configuration of servers is required..

Technologies used

The technology stacks available include traditional PHP based applications, Node.js, Java Spring Boot, C# ASP.NET Core and more modern MEAN and MERN stack developers using Angular or React. The course can be customised to various other technology stacks including LAMP, MEVN and JAM.

What is DevOps?

Understanding Cloud Computing
DevOps terminology
DevOps Techniques

Logging into Linux

Provisioning a VPS
Connecting using SSH Shell
Command line environment
Some basic commands
Tab completion

Linux commands

Understanding the structure of a linux command
Commands
Options
Arguments
Understanding the information given by the --help option

Linux File and Directory Operations

ls
cp
Mv
cd
mkdir
Editing files
The tree command

Linux Philosophy

Single responsibility
Streams
Pipes
Return codes

Effective use of the history command

The history command
Searching for a command
Executing a command from the history
Executing the last command
Editing a previous command without executing it
Executing the last command as an administrator

Understanding Processes

Getting a list of processes
Stopping a process
Suspending a process
Getting a list of suspended jobs
The kill command

SSH Clients

Alternatives to PuTTY
OpenSSH commands from the command line
Bitvise
MobaXterm
Visual Studio Code

Public / Private Key Access

What is public key / private key encryption
Using public key to log into a Linux machine
The /.ssh directory
ssh-keygen
ssh-copy-id
authorized_keys

Administrative Privilege

Check contents of /root
Elevating permission using sudo
Changing effective user using su
Keep asking whoami, where am I (pwd), what machine (hostname)
Configuring the prompt

Understanding Permissions

Why are permissions part of the operating system
Understanding the output of ls -l
User, Group, Others
Creating a group
Add a user to a group
Ownership and the chown command
Modes and the chmod command

Understanding Links

Symbolic links
Recognising links
Creating a link - ln
Uses of links
Links will be used by nginx and certbot

Installing Software

Package management
Repositories
Which distro - hostnamectl
apt-get, yum, rpm, dnf
Installing simple software
Installing something more complex (node.js)

Understanding Services

What is a service?
In Linux anything can be a service
systemctl
Creating a .service file
Start, stop, status and enable options

Understanding HTTPS

What is HTTPS
Installing Certbot
How Certbot works
Configuring DNS records
Running in --standalone mode

Configuring a simple web application

Create a simple web application
Test is with http requests
Configure ssl
Issue the certificate
Utilise the certificate
Verify ports are open
Test application using https
Examine certificate

Nginx

What is Nginx?
Installing Nginx
Verifying installation
Nginx configuration
Sites-available vs sites-enabled
Using links
Creating a vhost for a html site

Reverse proxy a Node.js site

Creating a reverse proxy site for Node.js
Externalisation of Configuration
Node.js deployment techniques
Deploy using SCP
Stop and restart service remotely using SSH

Continuous Integration

What is continuous integration?
Create a GitHub repository for your project
Configure git in your project
Configure remote
Push
Create a Github Action
Self-hosted runners
Configure self-hosted runner

Reverse proxy site using your own technology stack

Repeat the process of the previous lesson for your own technology stack, includes configuring a GitHub project and a GitHub action for continuous integration
Spring Boot
ASP.NET Core
PHP
MEAN - Angular
MERN - React

DevOpsASP.NET CoreC#MEANMERNAngularReactNginxLinuxCIContinuous IntegrationJavaSpringSpring FrameworkNode.js