How to Install a LAMP Stack on Ubuntu 18.04

What is a LAMP Stack?

A LAMP (Linux, Apache, MySQL, PHP) stack is a common, free, and open-source web stack used for hosting web content in a Linux environment. Many consider it the platform of choice on which to develop and deploy high-performance web apps.
This guide shows how to install and test a LAMP stack on Ubuntu 18.04 (LTS).

Install LAMP Ubuntu 18.04

Using the tasksel command the procedure of installing LAMP on Ubuntu 18.04 Bionic Beaver is a rather trivial matter. First, make sure that you have the tasksel package installed:

$ sudo apt install tasksel

To install LAMP server using tasksel execute:

$ sudo tasksel install lamp-server

Test your LAMP Install

Create a simple PHP Info page to test your LAMP installation:

$ sudo bash -c "echo -e '<?php\nphpinfo();\n?>' > /var/www/html/phpinfo.php"

The above command will create a new /var/www/html/phpinfo.php file with the following content:

$ cat /var/www/html/phpinfo.php
<?php
phpinfo();
?>


Now, point your web browser to your new LAMP install using the following URL: http://<YOUR SERVER DOMAIN OR IP ADDRESS HERE>/phpinfo.php:

install lamp ubuntu 18.04

Install LAMP Ubuntu 18.04: Confirm Setup Page

All done. Below you can find some optional tasks to further configure your LAMP stack server.

Optional LAMP Setup

MySQL Secure Installation

It is recommended to secure your MySQL installation before using your LAMP stack server in production. To do so execute:

$ mysql_secure_installation

Firewall Configuration

The following firewall configuration allows incoming traffic on TCP ports 80 and 443:

$ sudo ufw allow in "Apache Full"

Install PHP Modules

The default LAMP stack comes pre-installed with basic PHP modules. There are many additional PHP modules available $ apt-cache search ^php- | grep module. First, obtain a PHP module package name and then install it using:

$ sudo apt install MODULE_NAME_HERE

Appendix: LAMP install error messages

Warning Message:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

Solution: Open /etc/apache2/apache2.conf and insert the following directive at the end of the file:

ServerName <YOUR SERVER DOMAIN OR IP ADDRESS HERE>

Alternatively, use the echo command. This example will be used for a server with the IP address 10.1.1.4. Change your server IP or Domain name accordingly:

$ sudo bash -c "echo ServerName 10.1.1.4 >> /etc/apache2/apache2.conf"

Confirm your new configuration:

$ sudo apache2ctl configtest
Syntax OK