Skip to main content

Overview

Here's the course content overview. Note that some sections are still being worked on and will be published soon. Enroll today to keep track of your progress.

You will define what production ready means for your site. You will set up a project repository for configs, scripts, and docs. You will get a domain to use with this project and leave with a launch day checklist so nothing is missed.

You will choose a provider and plan that fit your goals and budget. You will learn how to read CPU models, core counts, frequency, storage, and network specs so you can pick with confidence. By the end you will have a fresh server online and reachable over SSH.

You will put safe defaults in place from day one. You will create a non-root user, tune SSH and sudo, install and configure fail2ban to reduce brute force attempts, and enable a simple firewall that allows only required services. You will also enable unattended security updates and configure logrotate.

You will install Nginx and PHP, and configure the FastCGI service. You’ll fine tune the number of PHP and Nginx workers, configure sane memory and file size limits, execution time and more. You will map a domain to your server, hide your HTTP service behind Cloudflare, and make sure no alternative route is possible.

You will download and install WP-CLI management utility. You will then use it to install the latest WordPress core version, create a configuration file, run the installation. You will update the Nginx configuration to support WordPress permalinks. You will also configure the server cron service to run the WordPress Cron.

You will install Postfix and configure it to relay email through an SMTP service of your choice. You will then make sure PHP is configured to relay mail through the postdrop service. You will verify delivery and health of a test email from wp_mail().

You will configure fail2ban for bruteforce protection against common attack vectors in WordPress: including application passwords, XML-RPC and wp-login.php. You will update your Nginx configuration to ensure sensitive files remain private and enable rate limiting. You will write some helper scripts to determine and quickly ban bad actors from server logs.

You will determine everything that needs to be backed up. You will create scheduled jobs to perform on-site backups, and ship them to an off-site location. You will configure a retention policy to delete old backups. You will also learn how to quickly make on-demand backups and explore existing backups.

You will ensure all your services can survive a server reboot. You will create alerts for various system resources and spikes in errors, high response times, slow queries, email delivery errors and more. You will also set up a third-party uptime monitor.

Advanced modules

We're working on a set of advanced modules as well. These will cover topic like: Deploying & CI/CD pipelines, Multisite and multiple sites, staging and migrations, disaster recovery, Docker containers, more caching and performance strategies.

Feedback & partnerships

If you have any questions or feedback about this course, and for partnership opportunities, please email hi (at) wpshell (dot) com.