Learn Linux and System Administration basics in a practical, project-based course designed to get you *using* new skills as soon as you learn them.
By the time you finish, this course will have taken you from 'Linux beginner' to the skill level of 'Junior Sysadmin,' and you'll have a production-grade WordPress hosting platform that you can use to host any number of WordPress sites for friends, family, and clients.
Other courses focus on slow memorization of theory, which doesn't always produce the best results. This one throws you into the mix from the word "go." Even if you've never installed Linux before, you'll be installing and configuring software from the command line, managing system services, working with a remote server, hardening security, scheduling backups and testing your disaster recovery plan, performing basic scripting and automation, and setting up monitoring for your infrastructure.
While you're doing this, you'll get a slow drip of theory, giving you just enough background to hang your new practical knowledge on and ensuring that you know what's going on underneath the covers.
Over the course of a few afternoons, you'll have completed a serious (and seriously useful) project, understand the basics of Linux and system administration, and be comfortable on the Linux terminal; ready to take on larger and more complicated projects or build on the foundation of your WordPress hosting platform.
If you want to learn Linux and basic system administration, and you like to learn using a practical, real-life project to get usable skills fast, this is the course for you.
An introduction to the course, along with a quick overview of the requirements/prerequisites you'll need to make the most out of it.
A bit about the instructor and the theory behind the course.
If you're not using Linux as your everyday operating system, you will want to use Virtualbox to set up a Linux install on your existing Windows or Mac system. This will make it possible to launch a virtual Linux operating system from your desktop like any other application.
Throughout the course, we'll be using this Linux virtual machine (VM) as our administration and development platform for the practical part of this course (administrating a live web server).
Just to make sure you understand what you need for this course.
If you're on Windows, and you want an alternative to Virtualbox, you can try VMWare player. This is essentially the same: an application which allows you to run a Linux operating system *inside* of your existing Windows operating system. There's no major advantage or difference here; I just want to provide more than one option in case you can't use Virtualbox for some reason.
Here, you'll download an image file (.iso) of the Ubuntu Desktop operating system. If you're comfortable with Linux, or running a different distribution which you want to use for this course, that's perfectly fine.
If you've never installed Linux before, this lesson will walk you through the process of installing it side-by-side with your existing operating system (Windows or Mac OS) using the Virtualbox software we downloaded earlier.
If you're using Virtualbox to run your Ubuntu Linux virtual machine (VM), you'll want to install the Guest Additions. This will make life much more pleasant by giving you a resizable VM window, shared clipboard between your Windows/Mac and Linux virtual machine, and more.
If you're using VMWare instead of Virtualbox to run your virtual machine, the install process is slightly different. This video will walk you through the process, if you need help.
In this lecture, you'll learn about the difference between running a machine at home and running a web-accessible server on the Internet. I'll show you some of the most popular cloud providers where you can rent a Virtual Private Server (VPS) to use for this course. There's even a free option!
In this lecture, I demonstrate setting up a Virtual Private Server (VPS) in one of DigitalOcean's datacenters. The whole process takes about two minutes, and you'll be able to easily adapt the process I show here to other "Cloud" providers, in case you're not using DigitalOcean.
By the end of the lecture you'll have your own little Linux virtual machine (VM), happily running in a datacenter somewhere on the planet. This VM will be where we set up our WordPress hosting platform.
If you're taking this course before Ubuntu 16.04 has been released, you'll want to provision an Ubuntu 15.10 VPS for yourself, to make sure you are running systemd (older Ubuntu versions, like 14.04, don't have systemd installed by default).
After this lecture, you'll have a basic grasp of how working in a command-line environment works. You'll know some basic commands and be able to move around your Linux machine without using the graphical user interface (GUI).
As a system administrator, you'll be using one tool more than anything else: Secure Shell (SSH). SSH allows you to log into machines halfway across the planet and work on them as if they're right in front of you. In this lecture, we'll get connected to your web hosting server.
Here, you'll learn the most basic system administration tasks on your server: updating and installing software. We cover basic apt-get commands, along with background theory on how software is managed on modern Linux distributions. After this lecture, you'll also understand the difference between normal users and the 'root' (administrator) account.
In this lesson, you'll install all the software that's required to turn your brand new server into a web hosting platform. I'll walk you through all the different moving parts: the PHP programming language/interpreter, the MySQL database, the nginx web server, and the monit monitoring service.
PLEASE NOTE: Due to Ubuntu operating system updates, the package names may be slightly different than the ones I'm using in this video. The "source code on github for installing software" resource will always have the most up-to-date commands you'll need when following along with the video, regardless of your Ubuntu version.
This lecture is an overview of software, services, and daemons on Unix and Linux. After watching, you'll have the necessary knowledge (and understand the necessary jargon) to start managing the services you'll be using for your WordPress hosting server.
In this lecture, you'll learn how to manage the services you'll be running on your WordPress hosting platform: web services, your PHP services, database services, and monitoring services. We'll cover the following systemd service management commands:
systemctl: start, stop, enable, disable, status
journalctl: (for checking service logs and performing troubleshooting)
A quick review of the fundamentals we've covered in Module 1.
An introduction to the most important module of the course: here, you'll be setting up and configuring the software and services that make up your WordPress hosting platform. As you do this, you'll gain the basic Linux skills that every system administrator, devops, and software developer needs.
Edit files on the command line, the easy way: with nano! After this lesson, you'll feel comfortable editing text without the help of a graphical user interface.
You'll need more than just the absolute basics of command-line/shell usage with Bash to be a competent system administrator. Here's the rest of the bash basics you need to have under your belt. In this video, I'll cover:
You'll want to have the very basics of bash covered before continuing. That will make the commands you see in the rest of the course much easier to learn.
In this lecture, you'll get an overview of how software is configured in Linux and Unix. This background theory is essential, and being comfortable with this knowledge will make the rest of this course much easier.
An overview of users and groups in Linux: basic theory which you'll use every day while managing systems.
Take 15 minutes for this lecture, and you'll have a solid basic grasp on one of the more confusing parts of Linux system administration. As a bonus, you'll be able to impress your friends by reading binary code!
A quick quiz to make sure you have command over the basic ownership and permission management ideas.
This lecture walks you through the basic configuration we need for our nginx web server. You'll find out what all those strange-sounding configuration options are for, and when you finish the lecture your web services will be properly configured for running WordPress.
A quick introduction to basic HTTP concepts: requests, responses, and headers.
In this lesson, you'll set up the PHP interpreter which will be running the WordPress application code for all of your sites. You'll learn how this is configured and *why*, and you'll get a better idea of how all of these services we're configuring actually work together to deal with requests from website visitors.
Every sysadmin and developer who works with Unix and Linux needs to know about the basic filetypes, and what they are used for. Buckle up; it's much easier than it sounds!
A quick quiz on some Linux/Unix filetypes.
A high-level overview of what a "relational" database actually does, using as little technical jargon as possible. This lecture won't make you a database admin, but it will teach you *why* and *how* a relational database is used for WordPress.
Here, you'll deal with the basic configuration (and security hardening) of your MySQL service.
This module is the *core* of the course. It contains not only the practical foundation of your WordPress hosting platform, but also the theoretical foundation of the Linux knowledge and skills we're covering. Make sure you're comfortable with this material!
Finally; the WordPress install you've been waiting for! In this module, we'll set up our first WordPress site. This module is also a repeatable process which you can use to set up further sites on your platform.
In this lecture, I'll walk you through creating your first site-specific configuration file (virtual host, or vhost) for your webserver.
The first time you set up a site (but not for future sites), you'll want to remove the default nginx website that was set up for you when you installed the web server on your server.
In this lecture, you'll create a PHP pool configuration for your WordPress site. This will provide all PHP services that nginx will need, in a safe and isolated way.
Just making sure you know which parts to automate later...
To tighten up security (and teach you more Linux system administration basics), we'll create a system user for your WordPress site. This will make things safer and easier to administrate, besides teaching you an important basic skill which you'll use all the time.
Our WordPress site needs a database. This lecture will walk you through creating one, along with a database user and a secure password.
Time to download and install WordPress! In this lecture, you'll learn about downloading files from the command line, decompressing and unarchiving files, and setting up your first WordPress site.
Some basic security tweaks for your new website, along with a quick tour of the filesystem.
A guided tour of the most important files and directories in your WordPress install, along with some configuration tweaks to make administrating each WordPress site easier and less time-consuming. This lecture will also give you the theoretical knowledge you'll need for the "backup and restore" section later.
You've got a web server and a website. Now all that's missing is the configuration needed to point your domain name (e.g. udemy.com) to your server. If you've already bought a domain name, this video will show you how to change your DNS settings to point to your web server.
If you haven't yet bought a domain name for your site, I recommend getting started with namecheap.com.
We've got a live WordPress site! You can now use your WordPress hosting platform to serve this site, or start adding more websites by simply repeating the steps from this module.
In this module, you'll get an overview of how to run a WordPress site as an administrator. This will be important knowledge for troubleshooting, teaching, and helping clients later on.
In this lecture, you'll see where the most important WordPress settings are kept.
Proper user management in WordPress makes the difference between a secure site and a security nightmare. This lecture will teach you the most important points you need to remember, and demonstrate a proper admin/editor setup.
WordPress publishing basics: pages, posts, and comments.
Menus can be a bit tricky in WordPress: this lecture shows you the basics, so you'll finally be able to create the perfect top menu (or show your clients how to do this).
Themes and plugins are what made WordPress the success it is today. Learn the basics of managing themes and plugins, along with some security considerations.
One of the most powerful plugins for WordPress is the WooCommerce e-commerce plugin. This turns a WordPress site into a fully featured online store, and can compete with $10,000 solutions from competitors. A webshop like this is an amazing feature for your customers, so this lecture shows you the very basics.
Although this course isn't about becoming a WordPress site admin, you still need some basic admin chops to help clients/customers/friends/family. Let's make sure you have a handle on the most important topics.
Even if you don't anticipate spending much time in the WordPress admin interface, a competent sysadmin always understands the software he's hosting. Taking a bit of time to understand the basics (and the most common misunderstandings) will save you hours in troubleshooting, frustration, and communicating with your clients.
Although most tutorials end after the successful setup of a platform, this is where the real job of system administration *begins*. This module will show you the most common real-life admin tasks which any good sysadmin needs to have at their command.
This lecture is an overview of performance tuning: what you've already done (perhaps without knowing it), and what you can do in the future to make your site load faster, perform better, and be able to handle more concurrent visitors.
A quick walkthrough of the performance optimization I've already baked into the configuration files you used to set up your WordPress hosting platform (and site configuration). If you're wondering what those strange caching rules actually look like, this is the lecture you're looking for.
Security is one of the most important topics that any tech person needs to understand. Unfortunately it's also an enormous, extremely complex subject. This lecture serves as an overview for the basics you need to understand.
SSH is one of two services that you're exposing to the Internet (the other is HTTP). Learn how to boost your defenses and make a successful attack much less likely.
If someone asks you to set up 50 sites by tomorrow, would you stay up late and manually go through the steps in module 3 again? Or would you automate the entire process and have a cup of coffee instead? The correct answer is "automate and have a cup of coffee." Here is a basic overview of the kind of automation we're talking about.
This lecture is an introduction to configuration management: what it is, which problems it solves, and why it's so important to know (whether you're a sysadmin, developer, or any other kind of IT person).
In this lecture, you'll get a crash course in Ansible, one of the most powerful automation systems that exists right now. Ansible can do configuration management, server provisioning, 'cloud' orchestration, deployment automation, and a whole lot more.
Give it 20 minutes, and you'll never go back to bash scripts.
A quick quiz designed to drive home the decision-making around automation.
You need to monitor your WordPress hosting platform: for capacity planning, security, troubleshooting, and just about everything else. In this lecture, you'll set up a small, simple, powerful, and easy-to-use monitoring system that can grow with your hosting platform.
Here, you'll learn how to set up server monitoring with monit. Monit allows you to easily monitor processes, services, files, and more. It also allows you to automatically 'react' to certain monitoring events, and set up e-mail alerting for the server metrics you're monitoring.
To avoid opening up another web service on our server (thereby decreasing our security), I'll show you how to use some of the magical features of SSH to access the monitoring dashboard on your server as if it were running on your local Linux machine. This is a convenient, flexible trick that can occasionally save the day.
Backups are important. This lecture explains the biggest considerations that go into planning a backup strategy.
In this lecture, you'll learn how to schedule repeating tasks on Linux and Unix. This is a core Linux skill which will be useful throughout your career, and not just for backups.
In this lecture, you'll learn how to make filesystem backups for your websites using the venerable (and powerful) 'tar' command.
In this lecture, you'll set up automatic database backups, and be surprised at how easy the restore process can be. Don't get caught without database backups for your WordPress sites: they take five minutes to set up, and can save you tens of hours (not to mention suffering) later on.
In this lecture, we'll take a look at how to download and compile software (instead of downloading ready-to-run binaries). We cover downloads, security and verification, and the compile process, before 'installing' the finished binaries on our system.
In this lecture, I'll give you the 'next steps' that you need to take to use tarsnap for offsite backups.
Congratulations on completing the course! Not only do you have a WordPress hosting platform set up, but you've also built a solid foundation of basic Linux system administration skills.
Ideas for improving and scaling your WordPress hosting platform, along with recommendations for other practical Linux projects that you can use to further your learning.
Slides used in the course.
I've been a system administrator and software developer in everything from small businesses, growing companies (100+ employees), large tech/engineering firms (10,000+ employees).
On my tutorialinux YouTube channel, I've helped tens of thousands of people learn the basics (and not-so-basics) of system administration and software engineering.
Now it's time to create larger, more focused courses on Udemy, blending together *practical* projects with the theory you need to succeed as quickly as possible.