December 29, 2016 · Setup Guides

Install a LEMP Stack on Ubuntu 16.04 (Nginx, MariaDB and PHP 7)

In this quick post, I would like to document how I deployed an Nginx, MariaDB and PHP 7 stack on Ubuntu 16.04 for my personal MediaWiki site.

This is actually pretty straightforward:

Step 1 -- Install Nginx

sudo apt-get install nginx -y

Step 2 -- Install MariaDB

sudo apt-get install mariadb-server
sudo mysql_secure_installation

Step 3 -- Install PHP 7

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php-fpm php-mysql

Edit fpm/php.ini

sudo vim /etc/php/7.0/fpm/php.ini

...and apply the following changes:

; cgi.fix_pathinfo=1
cgi.fix_pathinfo=0

Step 4 -- Test your setup

Since I deployed this in its own machine, I updated my default Nginx vhost file to use PHP FPM

Here's my /etc/nginx/sites-available/default:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name server_domain_or_IP;

    location / {
        try_files $uri $uri/ =404;
    }

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

    location ~ /\.ht {
        deny all;
    }
}

Restart Nginx:

sudo service nginx restart

Under /var/www/html, I created a new file named info.php:

sudo vim /var/www/html/info.php

...with the following content:

<?php
phpinfo();

Going to http://your-server-ip/info.php should now display your PHP installation details.

That's it! You now have a running LEMP Stack on Ubuntu 16.04 with MariaDB and PHP 7.