Continuing with our Ansible Series, we will move on to a pretty common use case for most VPSes, and that is of LAMP Stack setup. LAMP stands for Linux, Apache, MySQL and PHP.This is a very popular stack of technologies that web developers use to build apps.
Linux refers to the base operating system which in our case will be Ubuntu 20.04 LTS, Apache is the web server that will serve the web content, MySQL (or MariaDB) is the database that will be used to store the state of the app (things like user content, usernames, encrypted passwords, etc) and PHP is the programming language that is used to generate dynamic content. This tech stack is the base for many popular apps like WordPress, Drupal and more.
So let us create an Ansible playbook that will reliably setup LAMP stack on Ubuntu 20.04 LTS. As a developer, this would allow you to experiment and break things, and simply reinstall your VPS and get LAMP up and running with a single ansible command!
Prerequisites
- A VPS running Ubuntu 20.04 LTS with a public IP. If you don't have one, feel free to pick one up here.
- Initial Server Setup using Ansible to get you up to speed with ansible, and to harden your server's security.
Installing Packages
Let's start by create a lamp-setup.yaml
Ansible Playbook like we did during our initial setup blog, except this time we will use the package
builtin module to install the necessary packages:
---
- name: LAMP Setup
hosts: all
remote_user: root
tasks:
- name: Installing Packages
package:
name: "{{ item }}"
state: present
with_items:
- apache2
- mysql-server
- php
- libapache2-mod-php
- php-mysql
- python3-pymysql
This will install all the basic packages that are needed for a typical LAMP setup. Linux is obviously the base system, mysql-server
, apache2
, php
are pretty self-explanatory as well. We will also need libapache2-mod-php
to enable apache2
to talk to the PHP language interpreter. We would also need php-mysql
which is a library that allows php
to interface with the mysql
database. Finally, we will also install python3-pymysql
which is not a part of LAMP stack but it is required by Ansible to make MySQL requests on the target system.
Ansible Modules for Setting Up MySQL
Next we need to setup MySQL. This would involve setting up MySQL's root user's password (which is quit different from Linux's root
user). Please be very careful and read the
by subscribing to our newsletter.