• Home
  • Ubuntu 18.04
    • Whats New?
    • Upgrade Ubuntu
    • Install Java
    • Install Node.js
    • Install Docker
    • Install Git
    • Install LAMP Stack
  • Tutorials
    • AWS
    • Shell Scripting
    • Docker
    • Git
    • MongoDB
  • Funny Tools
  • FeedBack
  • Submit Article
  • About Us
TecAdmin
Menu
  • Home
  • Ubuntu 18.04
    • Whats New?
    • Upgrade Ubuntu
    • Install Java
    • Install Node.js
    • Install Docker
    • Install Git
    • Install LAMP Stack
  • Tutorials
    • AWS
    • Shell Scripting
    • Docker
    • Git
    • MongoDB
  • Funny Tools
  • FeedBack
  • Submit Article
  • About Us

How to Install Nginx, PHP 7 & MySQL on Ubuntu 16.04, 14.04

Written by Rahul, Updated on February 22, 2018
MySQL, Nginx, PHP lemp, LEMP Stack, mysql, nginx, PHP7

The latest major release of PHP version 7.2 has been released with the number of speed optimizations and security. So you should try this version for your development. This tutorial will help you to install Nginx, PHP 7.2 & MySQL 5.7 on Ubuntu 17.10, 16.04, and 14.04 LTS release.

php7-nginx-mysql

Step 1 – Nginx Installation

First of all, we will install Latest Nginx web server on our system. Use the following commands to add PPA for installing latest Nginx version on your Ubuntu 14.04 (Trusty).

echo "deb http://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx" >> /etc/apt/sources.list
echo "deb-src http://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx"  >> /etc/apt/sources.list

and use the following commands to install Nginx web server.

curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install nginx

Step 2 – PHP & PHP-FPM Installation

Install python-software-properties package on your system which provides add-apt-repository command then use the following set of commands to add PPA for PHP with PHP-FPM packages on your Ubuntu system and install it.

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.2 php7.2-fpm

Also install the required php modules for you application.

sudo apt-get install php7.2-mysql php7.2-curl php7.2-json

Step 3 – MySQL Installation

Download the MySQL apt configuration Debian package officially provided by MySQL team and install it on your system. For Ubuntu 16.04 and later version’s MySQL 5.7 is available under default apt repositories, so you don’t need to enable additional repository that.

wget http://repo.mysql.com/mysql-apt-config_0.8.9-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.9-1_all.deb

Use the following commands to install MySQL server on your Ubuntu 16.04 and 14.04 systems. Currently, this is the most popular version used by the among users.

sudo apt-get update
sudo apt-get install mysql-server-5.7

You can find more MySQL installation instructions here.

Step 4 – PHP-FPM Configuration

PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features.

sudo nano /etc/php/7.2/fpm/php.ini

un-comment cgi.fix_pathinfo=1 line and set value to 0.

cgi.fix_pathinfo=0

Now set the listen parameter in /etc/php/7.2/fpm/pool.d/www.conf configuration file. Here you can use php7.2-fpm socket to work or start php7.2-fpm service on specific port. We are going to use it as service .

sudo nano /etc/php/7.2/fpm/pool.d/www.conf

Now make changes in the configuration file as below. Commend listen to socket file and enable it as service

#listen = /run/php/php7.2-fpm.sock
listen = 127.0.0.1:9000

Step 5 – Nginx VirtualHost Configuration

Finally do the configuration of Nginx virtualhost. For this example we are editing default configuration file.

sudo nano /etc/nginx/conf.d/default.conf

and make changes as below.

server {
        listen   80;

        root /var/www;
        index index.php index.html index.htm;
        server_name  example.com www.example.com;

        location / {
                try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/www;
        }

        location ~ .php$ {
                try_files $uri =404;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

You have to do the same changes in all VirtualHosts configured.

Step 6 – Restart All Services

After installing and configuring all the services on your system, restart all required services to reload any changes made.

sudo service nginx restart
sudo service php7.2-fpm restart

Step 7 – Allow Firewall Access

If you are using iptables, Use following commands to open port 80 for public access of web server.

Iptables Users:

sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

UFW Users:

$ sudo ufw allow 80/tcp

Step 8 – Test Setup

Finally, test the installation of PHP 7 with NGINX. Let’s create a file info.php on website document root using following content.

1
2
3
<?php
phpinfo();
?>

Now browse this file in web browser. It will so all the details about versions and installation.

Install PHP 7, NGINX & MySQL

Share it!
Share on Facebook
Share on Twitter
Share on Reddit
Share on Tumblr
Rahul
Rahul
Connect on Facebook Connect on Twitter

I, Rahul Kumar am the founder and chief editor of TecAdmin.net. I am a Red Hat Certified Engineer (RHCE) and working as an IT professional since 2009..

Related Posts

  • How to Install Nginx with PHP-FPM on CentOS 8

    December 14, 2019
  • How to Install Nginx with PHP-FPM on Debian 10

    November 27, 2019
  • How To Install LAMP (Apache, MySQL, PHP) on Debian 10

    November 24, 2019
  • How to Install Nginx with PHP-FPM on Ubuntu 18.04 LTS

    November 14, 2019
  • How To Install MariaDB on Debian 10 (Buster)

    October 16, 2019

7 Comments

  1. Avatar Andrew Reply to Andrew
    January 13, 2018 at 1:35 am

    Hi!

    I installed PHP 7.2 +Nginx on Centos 7.x, everything seems to be fine:

    http://47.89.247.154/tst.php

    but, when I try to stop or start or restart php-fpm (root# service php-fpm restart), I always get the following error message:

    “Failed to restart php-fpm.service: Unit not found.”

    Can you please tell me how I can fix this?

    Thanks a lot!

    Andrew

    • Rahul Rahul K. Reply to Rahul
      January 13, 2018 at 5:40 am

      Try below command

      systemctl restart php7.2-fpm.service

      Where 7.2 is the active php version…

  2. Avatar Suzanne Reply to Suzanne
    April 22, 2016 at 10:26 pm

    502 error
    bad gateway

    I did exactly
    and my public folder is /usr/share/nginx/html

  3. Avatar andy Reply to andy
    March 20, 2016 at 3:11 pm

    install mysql error

    (Reading database … 52863 files and directories currently installed.)
    Removing mysql-server (5.6.27-2+deb.sury.org~trusty+1) …
    Setting up mysql-server-5.6 (5.6.28-0ubuntu0.14.04.1) …
    start: Job failed to start
    invoke-rc.d: initscript mysql, action “start” failed.
    dpkg: error processing package mysql-server-5.6 (–configure):
    subprocess installed post-installation script returned error exit status 1
    Errors were encountered while processing:
    mysql-server-5.6
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    • Avatar Michael Reply to Michael
      April 10, 2016 at 2:08 am

      Ditto. Had to use mysql-server 5.5

  4. Avatar Gil Reply to Gil
    February 12, 2016 at 10:25 am

    Hi,

    Thanks for the tuto.
    @Step 7 : I cannot restart nginx
    ‘Failed to start nginx.service: Unit nginx.service is masked.’

    To fix it I had to
    ‘cd /etc/systemd/system’
    and
    ‘rm nginx.service’
    and reboot the system.

    • Avatar Paolo Reply to Paolo
      March 29, 2016 at 2:53 pm

      Gil,
      your comment saved me after hours and hours of searching with no luck. Many thanks for that!

Leave a Reply

Cancel reply

Popular Posts

  • How to Install Python 3.8 on Ubuntu, Debian and LinuxMint
  • How to Restart Network Service on CentOS 8 or RHEL 8
  • How to Check IP Address on CentOS 8
  • How to Install Java 11/8 on Amazon Linux
  • How to Configure Static IP on CentOS 8 (CLI)
Copyright © 2013-2019 TecAdmin.net. All Rights Reserved. This site uses cookies. By using this website you agree with our term and services
We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.OkNo
Revoke cookies