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 ComputingDevOps terminology
DevOps Techniques
Logging into Linux
Provisioning a VPSConnecting using SSH Shell
Command line environment
Some basic commands
Tab completion
Linux commands
Understanding the structure of a linux commandCommands
Options
Arguments
Understanding the information given by the --help option
Linux File and Directory Operations
lscp
Mv
cd
mkdir
Editing files
The tree command
Linux Philosophy
Single responsibilityStreams
Pipes
Return codes
Effective use of the history command
The history commandSearching 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 processesStopping a process
Suspending a process
Getting a list of suspended jobs
The kill command
SSH Clients
Alternatives to PuTTYOpenSSH commands from the command line
Bitvise
MobaXterm
Visual Studio Code
Public / Private Key Access
What is public key / private key encryptionUsing public key to log into a Linux machine
The /.ssh directory
ssh-keygen
ssh-copy-id
authorized_keys
Administrative Privilege
Check contents of /rootElevating 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 systemUnderstanding 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 linksRecognising links
Creating a link - ln
Uses of links
Links will be used by nginx and certbot
Installing Software
Package managementRepositories
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 HTTPSInstalling Certbot
How Certbot works
Configuring DNS records
Running in --standalone mode
Configuring a simple web application
Create a simple web applicationTest 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.jsExternalisation 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 integrationSpring Boot
ASP.NET Core
PHP
MEAN - Angular
MERN - React
DevOpsASP.NET CoreC#MEANMERNAngularReactNginxLinuxCIContinuous IntegrationJavaSpringSpring FrameworkNode.js