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.
Duration: 5 days
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
Name | Date | Location | |
---|---|---|---|
DevOps Fundamentals For Developers | 2024-10-07 | Online | |
DevOps Fundamentals For Developers | 2025-03-03 | Online |
DevOps ASP.NET Core C# MEAN MERN Angular React Nginx Linux CI Continuous Integration Java Spring Spring Framework Node.js