+370 5 205 5502 sales@monovm.com

How to install LEMP on Ubuntu 18.04, LEMP is an acronym for Linux, Nginx, MySQL, and PHP. Nginx in LEMP provides a modular event-driven architecture handling requests using asynchronous events. The MySQL is used to store the website’s data whereas PHP is for processing the dynamic content of the sites.


Dec, 18

How to install LEMP on Ubuntu 18.04

How to install LEMP on Ubuntu 18.04

What is LEMP?

LEMP is an acronym for Linux, Nginx, MySQL, and PHP. LEMP stack, just like LAMP stack (with Apache instead of Nginx), is used for development and deployment of web applications. Nginx in LEMP provides modular event-driven architecture handling requests using asynchronous events. This feature enables it to have high performance under high loads. The MySQL is used to store the website’s data whereas PHP is for processing the dynamic content of the sites.



1: Connect to your server via SSH

All VPS plans allow SSH access. You should therefore connect to your Ubuntu server with your public IP address that was allocated to you. If you are running Windows as your local computer, consider downloading PuTTY SSH client. You can also initiate an SSH connection from Mac or Linux using the inbuilt SSH client Terminal.

For more info on how to connect to linux VPS, click here.


2: Install Nginx server

First update your software packages and then install Nginx.

$ sudo apt update

$ sudo apt install nginx

Once you have installed it, the Nginx service should start automatically and will be enabled to start at boot time, you can check if it’s up and running using the following code.

$ sudo systemctl status nginx

If you have a firewall enabled and running on your system, you should open the ports 80 (HTTP) and 443(HTTPS) to allow client requests to Nginx web server, and reload the firewall rules.

$ sudo ufw allow 80/tcp

$ sudo ufw allow 443/tcp

$ sudo ufw reload

Next, test if the Nginx package was successfully installed and is working fine, type your server's IP address in your web browser. If you see the Nginx default web page, it means your installation is working fine.


3: Installing MySQL to Manage Site Data

Now that you have a web server, you need to install MySQL (a database management system) to store and manage the data for your site. Below we have two commands. The first command will update the package lists to ensure you get the latest version and dependencies for MySQL. The second command will then download and install MySQL.

$ sudo apt update 

$ sudo apt install mysql-server

Press “y” and “Enter” when prompted to install the MySQL package.

Once the package installer has finished, we can check to see if the MySQL service is running.

$ sudo service mysql status

If running, you will see a green Active status like the one below.

mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled (Active: active (running) since Wed 2018-05-09 21:10:24 UTC; 16s agoMain PID: 30545 (mysqld)Tasks: 27 (limit: 1153)CGroup: /system.slice/mysql.service30545 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid 

You may need to press “q” to exit the service status.


4: Configure MySQL Security

You should now run mysql_secure_installation to configure security for your MySQL server.

$ sudo mysql_secure_installation

If you have a root password, you may be prompted to enter it here, otherwise you will be asked to create one.

You will be asked if you want to set up the Validate Password Plugin. It’s not really necessary unless you want to enforce strict password policies for some reason.

Securing the MySQL server deployment.

"VALIDATE PASSWORD" plugin can be used to test passwords and improve security. It checks the strength of the passwords and allows the users to set only those passwords which are secure enough, meaning you cannot use blank passwords.

Would you like to setup "VALIDATE PASSWORD" plugin?

Press “n” and “Enter” here if you don’t want to set up the validate password plugin.


By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing and to make the installation go a bit smoother. You should remove them before moving into a production environment.

Remove anonymous users? 

Press “y” and “Enter” to remove anonymous users.

Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess the root password from the network.

Disallow root login remotely? 

Press “y” and “Enter” to disallow root login remotely. This will prevent bots and hackers from trying to guess the root password.

By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing and should be removed before moving into a production environment.

Remove test database and access to it?

Press “y” and “Enter” to remove the test database.

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? 

Press “y” and “Enter” to reload the privilege tables.

All done!

As a test, you can log into the MySQL server and run the version command.

$ sudo mysqladmin –p –u root version

Enter the MySQL root password you created earlier and you should see the following:

$ sudo mysqladmin –p –u root versionmysqladmin  Ver 8.42 Distrib 5.7.22, for Linux on x86_64Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Server version          5.7.22-0ubuntu18.04.1Protocol version        10Connection              Localhost via UNIX socketUNIX socket             /var/run/mysqld/mysqld.sockUptime:                 4 min 28 secThreads: 1  Questions: 15  Slow queries: 0  Opens: 113  Flush tables: 1  Open tables: 106  Queries per second avg: 0.055

You have now successfully installed and configured MySQL for Ubuntu 18.04! Continue to the next step to install PHP.


5: Install PHP on Ubuntu 18.04

PHP is a popular server side scripting language used to generate dynamic content on websites. You can install PHPPHP-FPM and other modules for web development using following command (the default version in the Ubuntu repos is PHP 7.2).

$ sudo apt install php php-fpm php-common php-mysql php-gd php-cli

After PHP installation, the PHP7.2-FPM service should also start automatically, you can verify the service is running using the following command.

$ sudo systemctl status php7.2-fpm

Next, configure PHP-FPM properly to serve PHP based web applications or sites, in the configuration file /etc/php/7.2/fpm/php.ini.

$ sudo vim /etc/php/7.2/fpm/php.ini

Search for the cgi.fix_pathinfo=1 and change it to the following.


Then configure PHP-FPM to process PHP scripts in Nginx default server block configuration file (/etc/nginx/sites-available/default).

$ sudo vim /etc/nginx/sites-available/default

Uncomment the configuration section below to pass PHP scripts to FastCGI server.

location ~ \.php$ {            include snippets/fastcgi-php.conf;               fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;}

After making changes, restart the php7.2-fpm and nginx services to apply the recent changes.

$ sudo systemctl restart php7.2-fpm

$ sudo systemctl restart nginx

Now you can test your PHP setup by creating a simple info.php page in your web server document root, with this single command.

$ echo "" | sudo tee /var/www/html/info.php

Next, open a web browser, and enter any of the following URL to view the php information page.



Lemp can be installed on other linux distributions too like debian, here is complete guide on installing lemp on debian.

linda Y

My name is Linda, I have Master degree in Information Technology Engineering. I have some experiences in working with Windows and Linux VPS and I have been working for 2 years on Virtualization and Hosting.