
- Your first project is to create a local test environment using Vagrant.
- It allows for quick creation and the installation of new Linux systems, such as CentOS, RedHat, AlmaLinux, and Rocky Linux.
- Future projects involve creating more Linux systems using the local test environment.
- It saves on additional hosting expenses.
- Testing in production can be risky, so a local test environment can prevent costly mistakes.
- It allows for automation and reproducibility of systems.
- Configuration and settings can be easily shared with others for collaboration.
- Typing out every command is recommended.
- Copying and pasting should be avoided, as it robs you of valuable experience.
- Typing out commands increases retention and comfort with the command line.
- Paying attention to details while typing commands is required for Linux professionals.
- Making mistakes while typing commands can be used as a learning tool.
- Typing out commands helps develop the skill of spotting differences.
- Trying projects on your own before watching the solutions is suggested.
- Doing the work and typing in all the commands is important.
Enable Windows users to install Git for Windows with Unix tools, then set up SSH, VirtualBox, and Vagrant for the project.
This lesson is only for people who are using Macs with Intel processors. (Skip ahead if you are using an Apple Silicon processor.)
This lesson is for Mac users with an Apple Silicon chip in their computer, such as an M1, M2, M3, M4 or M5 processor.
Users of older Intel-based Macs can skip this lesson and continue with the course.
Common Issues When Working with Vagrant and VirtualBox:
Antivirus software may interfere with VirtualBox, causing errors.
A virtual machine's virtual network cable may be disconnected on boot.
Double-check that you're editing the correct Vagrantfile.
BIOS virtualization settings may need to be enabled.
Watch out for simple typing mistakes, including using an equal sign in the config.vm.network line.
If you're working with web applications and have network issues, try a different web browser, check if the web server is running and enable it if necessary, and check the error log file.
Allow Vagrant and VirtualBox to modify settings on Windows systems.
For Mac and Linux users, if you receive an error message about the IP address configured for the host-only network, run this command to add a line of configuration to the /etc/vbox/networks.conf file.
echo "10.0.0.0/8" | sudo tee -a /etc/vbox/networks.conf
If nothing seems to work, try starting over with a fresh directory or rebooting your physical computer.
Linux organizes files and directories in a tree structure.
Full path or absolute path starts with a forward slash (/).
A relative path is any path that does not start with a leading slash
Use the ls command to get list of files and directories
Use the cd command to change directories
Use the pwd command to display present working directory
Use the mv command to move or rename files and directories
Use the cat command to look at contents of a file
Use the less command to view large files in pages
Nano is a simple text editor
Linux is widely used as a server operating system for websites and web applications.
The LAMP architecture (Linux, Apache, MySQL, and PHP) is commonly used to build dynamic websites and applications.
Components of LAMP stack can be interchangeable.
Nginx and MariaDB are alternative options to Apache and MySQL, respectively.
Other programming languages besides PHP can be used, such as Perl, Python, and Ruby.
When a request is made to a web application, the domain name is translated into an IP address, then the web server processes the request and sends back a response.
WordPress is an example of a web application powered by PHP, which executes queries to the database and builds HTML documents to send to the user's web browser.
The user's web browser parses the response and makes additional requests to the web server for items such as images.
The LAMP stack requires software installation with super user privileges
The super user on Linux system is also called root
Normal users can do subset of what root can do
Use the su command start a session as another user
Use the whomi command used to check current user
Use the sudo command used to execute programs with security privileges of another user
Sudo allows running programs without knowing the passwords of other users
The sudo configuration file is /etc/sudoers which includes user specifications
Linux systems use packages to install software.
A package contains the application files, metadata, and dependencies.
Package managers are used to install, upgrade, and remove packages.
DNF is a package management program for RPM-based Linux distributions.
Yum was the previous command for package management.
DNF can be used to search for packages, display package information, install and remove packages.
EPEL provides third-party packages for Red Hat Enterprise Linux-based distributions.
PHP is a server-side scripting language that can be embedded in HTML
When PHP code is found in HTML, it is processed and outputs dynamic content
Installing PHP on a server involves running "dnf install PHP" and restarting Apache
The main configuration file for PHP is /etc/php.ini, and additional configurations are found in /etc/php.d
MariaDB is a relational database management system.
It's a drop-in replacement for MySQL.
How to troubleshoot and fix database issues.
Monitoring and alerting is important to ensure system or service availability and to spot recurring problems.
Icinga is an open source monitoring system that can check for availability of resources, notify of outages, and generate performance data for reporting.
Icinga is compatible with Nagios monitoring plugins and can monitor system internals.
How to address common issues with Icinga.
Welcome to Linux file and directory permissions!
Topics covered in the lesson include:
Symbolic permissions
Numeric permissions
File vs directory permissions
Changing permissions with the chmod command
Working with groups
The file creation mask
Read, write, and execute permissions
User permissions
Group permissions
Other permissions
Octal mode
Commonly used permissions
Security considerations with Linux permissions.
Topics covered include:
Primary group
The chmod command
The chgrp command
How directory permissions can affect the files in that directory
How incorrect permissions on a directory can prevent the execution of a file
How the file creation mask determines default permissions of a file when created.
The umask command
Special modes are covered: setUID, setGID, and sticky
Strategies for working with members of a group
Having at least a working understanding of Linux permissions is crucial because it's such a large part of the Linux operating system. You'll need to know not only how to set the desired permissions on the files and directories that you create, but you'll need to know how to fix the problems that arise due to file and directory permissions. This exercise will give you some practice reading, setting, and fixing permissions.
The goal of this project is to install and configure phpMyAdmin. It is a web application designed for managing MySQL and MariaDB databases. Once you have phpMyAdmin installed you will be able to easily create, read, update, and delete databases as well as database users.
How to install and configure PhpMyAdmin for managing MySQL and MariaDB databases.
Piping allows chaining multiple commands together.
The output of one command is used as input for the next command.
Separate commands with the vertical bar ( | ) symbol.
You can chain multiple commands together.
Automating tasks with piping can eliminate the need for human interaction.
Learn how to use the grep command which is used to find and display matches to a given pattern.
Learn how to use the ps command which displays the processes running on the system.
This goal of these practice exercises is to familiarize you with viewing processes, using pipes, and
limiting output to just that which you are interested in.
System utilization is important for identifying overutilized or underutilized systems
Manually checking the performance of each system may be sufficient for a few systems, but a system is needed for larger numbers of servers
Telegraph is a daemon that collects and stores performance data from input plugins, such as CPU utilization and disk utilization
Configuring input plugins and output plugins to send data to influxDB allows for data storage and querying with Grafana for performance monitoring and capacity planning.
InfluxDB is a database designed for time series data.
It provides fast ingest speeds and efficient storage.
InfluxQL is a SQL-like language for querying and aggregating the data.
Grafana is used to create graphs of the data, using InfluxQL to retrieve the data.
Telegraph collects metrics and sends them to InfluxDB on port 8086.
InfluxDB stores data in directories optimized for reads and queries.
It uses a write-ahead log for write optimization.
Grafana is a powerful and elegant dashboard creation tool that allows you to explore and share data.
You can use Grafana's Explore tool to create graphs on the fly and organize them into dashboards.
Grafana also supports importing existing dashboards and customizing them.
You connect Grafana to multiple data sources, including InfluxDB and Icinga.
Grafana allows for creating various types of graphs and visualizations including bar charts, gauges, tables, and more.
The goal of this project is to create a metrics collection and graphing system. This will allow you to
visually see what the system utilization is for a given host or across an entire environment.
Topics covered include:
Vagrant
Grafana
InfluxDB
Telegraf
Icinga2
Graph creation
Dashboard creation
Learn how to add Grafana to Icinga in order to monitor it.
Determine the function that the server plays when adding to monitoring
Check for running processes on the system, especially for the service being installed/configured
Look for associated users that may have been created during installation
Use netstat to see if processes are listening on certain ports, including their associated programs
Read documentation and take notes on what to monitor during installation/configuration of a service
Master Practical DevOps Skills!
Welcome to this course, where you'll not only learn essential Linux System Administration techniques, but also acquire in-demand DevOps skills as well. You will sharpen your Linux skills and master some popular DevOps tools that will make you an invaluable part of any modern IT organization.
Gain Real-World Expertise by learning from a highly-rated instructor with hands-on experience in deploying these tools in actual work environments.
Your instructor for this course is Jason Cannon. He's the author of several best-selling IT books including, Linux for Beginners, Python Programming for Beginners, and Command Line Kung Fu.
He's also designed and taught dozens of courses here on Udemy that have helped people just like you level-up their careers by teaching them highly valued and marketable skills.
Here's What You'll Learn
When you start this course, you will create a Linux development and test environment by using the popular DevOps tool, Vagrant.
Next, you'll learn the fundamentals of the Linux command line. This section of the course is perfect for those who are new to Linux or need a refresher. Of course, if you're an experienced Linux professional, you can skip ahead.
From there, you'll how to deploy one of the most widely used open-source software stacks for the web, the LAMP stack. You'll use your skills to install and configure two web applications: The first is a helpdesk solution, and the other is a project management system.
Following that, you'll create a system and service availability monitoring system using Icinga 2. You'll practice adding servers to the monitoring system, along with all the services that run on those servers. Of course, you'll want to be able to send notifications and alerts in the case of an issue or outage, so you'll learn how to configure your servers to send email as well.
During the next project in this course, you'll implement a metrics collection system, along with a data visualization solution. You'll learn how to send all the performance data from your Linux systems to a centralized location, where you can create individual graphs and even complete dashboards that will help you track the overall performance of the applications in your environment, your storage needs, and even assist you with capacity planning. You'll do all this with popular DevOps tools, including Telegraf, InfluxDB, and Grafana.
Next, you'll implement a centralized syslog monitoring solution by deploying the ELK Stack which consists of ElasticSearch, Logstash, and Kibana. This allows you to efficiently analyze and visualize system log data. You can use the ELK stack to quickly troubleshoot problems, identify anomalies, and even detect security threats before they become a serious issue.
Finally, you'll learn another critical DevOps skill: Shell Scripting. You'll develop shell scripting techniques that will allow you to automate the installation and deployment of systems and applications.
Start Leveling-Up Your Skills Now!
By now, you can probably see just how many valuable skills you'll gain by enrolling in this course. Imagine the sense of accomplishment you'll feel when you start completing the DevOps projects in this course. Skills and accomplishments you can proudly showcase on your resume, discuss in job interviews, and leverage during performance reviews.
Enroll now to get started today!