Tutorial Series

Building for Production: Web Applications

This 6-part tutorial will show you how to build out a multi-server production application setup from scratch. The final setup will be supported by backups, monitoring, and centralized logging systems, which will help you ensure that you will be able to detect problems and recover from them. The ultimate goal of this series is to build on standalone system administration concepts, and introduce you to some of the practical considerations of creating a production server setup.
  • This tutorial will demonstrate how to plan and set up a sample production application from start to finish. Hopefully, this will help you plan and implement your own production server environment, even if you are running a different application on a completely different technology stack. Because this tutorial covers many different system administration topics, it will often defer the detailed explanation to external supporting articles that provide supplemental information.
  • In this part of the "Building for Production: Web Applications" series (2 of 6), we will deploy our example PHP application, WordPress, and a private DNS. Your users will access your application over HTTPS via a domain name, e.g. "https://www.example.com", that points to the load balancer. The load balancer will act as a reverse proxy to the application servers, which will connect to the database server.
  • In this part of the "Building for Production: Web Applications" series (3 of 6), we will devise a recovery plan. A recovery plan is a set of documented procedures to recover from potential failures or administration errors within your server setup. Creating a recovery plan will also help you identify the essential components and data of your application server setup.
  • In this part of the "Building for Production: Web Applications" series (4 of 6), we will set up the backup system that is required to support our recovery plan. This tutorial will focus on using Bacula as a backups solution. The benefits of using a full-fledged backup system, such as Bacula, is that it gives you full control over what you back up and restore at the individual file level, and you can schedule backups and restores according to what is best for you.
  • In this part of the "Building for Production: Web Applications" series (5 of 6), we will add monitoring to improve our awareness of the state of our servers and services. Monitoring software, such as Nagios, Icinga, and Zabbix, enables you to create dashboards and alerts that will show you which components of your application setup need attention. The goal of this is to help you detect issues with your setup, and start fixing them, before your users encounter them.
  • In this part of the "Building for Production: Web Applications" series (6 of 6), we will set up centralized logging for our production application setup. Centralized logging is a great way to gather and visualize the logs of your servers. Generally, setting up an elaborate logging system is not as important as having solid backups and monitoring set up, but it can be very useful when trying to identify trends or problems with your application.