How to Install Nginx, PHP 7.0, and MariaDB on Ubuntu 16.04.1

Post Date: December 26, 2016
Last Updated: September 30, 2026

Introduction

This article explains how to install and configure Nginx, PHP 7.0, and MariaDB on Ubuntu 16.04.1. The setup uses an AWS Ubuntu server and covers the basic configuration required to run PHP-based web applications with Nginx. It also includes securing the MariaDB installation, configuring PHP-FPM, enabling PHP processing in Nginx, and configuring URL rewriting for applications that require it.

Prerequisites

Before proceeding with the installation, ensure the following requirements are met:

  • An AWS EC2 instance running Ubuntu 16.04.1.
  • Root or sudo access to the server.
  • A stable internet connection to download the required packages.
  • Basic knowledge of Linux commands and package management.
  • Basic understanding of Nginx, PHP, and MariaDB.
  • Port 80 (HTTP) should be allowed in the server’s security group or firewall to access the web application.
  • Sufficient permissions to modify Nginx and PHP configuration files.

Implementation

In this post, we are gonna explain how to install Nginx, PHP, and MariaDB on Ubuntu 16.04.1. We have used an AWS Ubuntu server in this article.

 apt-get install nginx

Start the Nginx service.

systemctl start nginx

Enable the service on startup so that it will start automatically whenever the server reboots.

systemctl enable nginx

Install MariaDB server on the host

apt-get install mariadb-server

Start the MySQL service.

systemctl start  mysql

Secure the MySQL service

mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we’ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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? [Y/n] y
… Success!

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

Disallow root login remotely? [Y/n] y
… skipping.

By default, MariaDB 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? [Y/n] y
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!

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

Reload privilege tables now? [Y/n] y
… Success!

Cleaning up…

All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Enable the service on startup.

systemctl enable mysql

Install PHP, php-fpm, and basic required modules.

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext php7.0-zip php7.0-fpm php7.0 php7.0-dev

Edit cgi.fix_pathinfo to 0 in php.ini.

vi /etc/php/7.0/fpm/php.ini
cgi.fix_pathinfo=0

Start & add the php7.0-fpm service to the reboot safe.

systemctl enable php7.0-fpm

systemctl start  php7.0-fpm

Enable PHP in the Nginx configuration. Uncomment the following lines on /etc/nginx/site-available/default

vi /etc/nginx/sites-available/default

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

Restart Nginx for the changes to take effect.

 systemctl restart nginx

Create a phpinfo page at/var/www/html/info.php

cat > /var/www/html/info.php

<?php

phpinfo();

?>

Press Ctrl + D to save the file.

Access the IP address in the browser: “http://lPADDRESS/info.php”

Enable the rewrite module:

Some applications require the rewrite module to be enabled. Enabling such settings in nginx is pretty simple. Open /etc/nginx/sites-available/default and modify the line below.

From,
try_files $uri $uri/ =404;

To,
try_files $uri $uri/ /index.php?$args;

Restart Nginx to take the changes into effect.

 systemctl restart nginx

Conclusion

By following the steps in this article, you can install and configure Nginx, PHP 7.0, and MariaDB on Ubuntu 16.04.1. The article also demonstrates how to secure the MariaDB installation, configure PHP-FPM with Nginx, verify PHP using a phpinfo() page, and enable URL rewriting for PHP applications. This provides a basic web server environment suitable for hosting PHP-based applications on an Ubuntu server.

FAQs

1. How do I install Nginx on Ubuntu 16.04.1?
You can install Nginx using apt-get install nginx, then start and enable the service using systemctl start nginx and systemctl enable nginx.

2. How do I install MariaDB on Ubuntu 16.04.1?
Install MariaDB using apt-get install mariadb-server. After installation, start the MySQL service and run mysql_secure_installation to secure the database server.

3. How do I install PHP and PHP-FPM on Ubuntu 16.04.1?
You can install PHP 7.0, PHP-FPM, and the required PHP modules using the apt-get install command provided in the article.

How to install MySQL 8.0 on CentOS 7

MySQL Installation on Windows Server 2012

Talk to our experts

Looking for the right technology solution for your business?. Our experts can help with web hosting, domain registration, DevOps and cloud, software development, web applications, mobile applications, and enterprise solutions. Get in touch with our team here.

admin

Our team has expertise across software and web development, WordPress, e-commerce, mobile applications, UI/UX, cloud and infrastructure, DevOps, CI/CD, API integration, security, testing, automation, and technical support. The team also works with AI-based software solutions, LLMs, AI workflows, AI agents, and intelligent application development to help businesses automate processes and build smarter digital solutions. We focus on developing, deploying, maintaining, and optimising secure, scalable, and reliable technology solutions while helping businesses adopt modern technologies and drive digital transformation.

Leave a Comment

Scroll to Top