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.


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


Schedule

NameDateLocation 
DevOps Fundamentals For Developers 2024-03-04 Online
DevOps Fundamentals For Developers 2024-10-07 Online