Ubuntu 16.04 LTS Xenial Xerus comes with PHP7 by default so you don’t have to rely on third-party PPA to get PHP7 installed. In this tutorial, we are going to look at how to install Apache, MariaDB and PHP7 (LAMP stack) on Ubuntu 16.04 LTS Xenial Xerus.
Update: This tutorial is also successfully tested on Ubuntu 16.10 Yakkety Yak.
Step 1: Update Ubuntu 16.04 LTS
Before we install any software, it’s always a good idea to update repository and software packages. SSH into your Ubuntu 16.04 server and enter the below commands.
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
Step 2: Install Apache Web Server
Enter this command to install Apache Web server.
sudo apt-get install apache2 apache2-utils
After it’s installed, Apache should be automatically started. Check out its status with systemctl.
systemctl status apache2
Output:
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2016-04-20 18:32:57 EDT; 32s ag
o
If it’s not running, use systemctl to start it.
sudo systemctl start apache2
It’s also a good idea to enable Apache to automatically start when Ubuntu 16.04 is rebooted.
sudo systemctl enable apache2
Check Apache version:
apache2 -v
output:
Server version: Apache/2.4.18 (Ubuntu) Server built: 2016-04-15T18:00:57
Now in your browser’s address bar, type the public IP address of Ubuntu 16.04 LTS server. You should see the “It works!” Web page which means Apache Web server is running correctly.
You can use the following command to fetch the public IP address of Ubuntu 16.04 server.
sudo apt-get install curl curl http://icanhazip.com
If you are installing LAMP on your local Ubuntu 16.04 box, just type 127.0.0.1
or localhost
in the browser address bar.
Finally, we need to make www-data
(Apache user) as the owner of web root directory.
sudo chown www-data /var/www/html/ -R
Step 3: Install MariaDB
MariaDB is a drop-in replacement for MySQL. It is developed by former members of MySQL team who concerned that Oracle might turn MySQL into a closed-source product. Many Linux distributions and companies have migrated to MariaDB. So we’re going to install MariaDB instead of MySQL.
sudo apt-get install mariadb-server mariadb-client
After it’s installed, MariaDB server should be automatically stared. Use systemctl to check its status.
systemctl status mysql
Output:
● mysql.service - LSB: Start and stop the mysql database server daemon
Loaded: loaded (/etc/init.d/mysql; bad; vendor preset: enabled)
Active: active (running) since Wed 2016-04-20 18:52:01 EDT; 1min 30s ago
Docs: man:systemd-sysv-generator(8)
If it’s not running, start it with this command:
sudo systemctl start mysql
To enable MariaDB to automatically start when Ubuntu 16.04 is rebooted:
sudo systemctl enable mysql
Now run the post installation security script.
sudo mysql_secure_installation
When it asks you to enter MariaDB root password, press enter because you have not set the root password yet. Then enter y to set the root password for MariaDB server.
Next you can just press Enter to answer all the remaining questions. This will remove anonymous user, disable remote root login and remove test database. This step is a basic requirement for MariaDB database security.
Step 4: Install PHP7
Enter the following command to install PHP7 and PHP7 extensions.
sudo apt-get install php7.0-fpm php7.0-mysql php7.0-common php7.0-gd php7.0-json php7.0-cli php7.0-curl libapache2-mod-php7.0
Enable the Apache php7.0 module then restart Apache Web server.
sudo a2enmod php7.0 sudo systemctl restart apache2
Step 5: Test PHP
To test the cli version of PHP7, we just need to enter this command:
user@www:~$ php --version
PHP 7.0.4-7ubuntu2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
To test PHP with Apache server, first create a test.php
file in the Web root directory.
sudo nano /var/www/html/test.php
Paste the following PHP code into the file.
<?php phpinfo(); ?>
Save and close the file. Now in the browser address bar, enter server-ip-address/test.php
. Replace sever-ip-address
with your actual IP. Of course, if you follow this tutorial on your local computer, then type 127.0.0.1/test.php
or localhost/test.php
.
You should see your server’s PHP information. This means PHP processing is fine. You can find that Zend OPcache is enabled.
Apache PHP7.0 Module vs PHP-FPM
There are now basically two ways to run PHP code with Apache web server: Apache PHP module and PHP-FPM. The above configuration uses the Apache PHP7.0 module to handle PHP code.
In order to use PHP-FPM to run PHP code, we need to enable Apache mod_proxy_fcgi
module with the following command:
sudo a2enmod proxy_fcgi
Then edit the virtual host configuration file. This tutorial uses the default virtual host as an example.
sudo nano /etc/apache2/sites-available/000-default.conf
Add the ProxyPassMatch
directive to this file.
....
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/var/www/html/
.....
Save and close this file. Restart Apache2.
sudo systemctl restart apache2
Start php7.0-fpm
sudo systemctl start php7.0-fpm
Check status:
systemctl status php7.0-fpm
Output:
● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor pre
set: enabled)
Active: active (running) since Wed 2016-04-20 19:21:05 EDT; 2s ago
Now if you refresh the test.php
page in your browser, you will find that Server API is FPM/FastCGI
which means Apache web server will pass PHP requests to PHP-FPM.
For your server’s security, you should delete test.php
file now.
Congrats! You have successfully installed Apache, MariaDB and PHP7 on Ubuntu 16.04 LTS Xenial Xerus.
Janeth Kent
Licenciada en Bellas Artes y programadora por pasión. Cuando tengo un rato retoco fotos, edito vídeos y diseño cosas. El resto del tiempo escribo en MA-NO WEB DESIGN AND DEVELOPMENT.
Related Posts
How To Use Varnish As A Highly Available Load Balancer On Ubuntu 20.04 With SSL
Load balancing with high availability can be tough to set up. Fortunately, Varnish HTTP Cache server provides a dead simple highly available load balancer that will also work as a…
htaccess Rules to Help Protect from SQL Injections and XSS
This list of rules by no means is a sure bet to secure your web services, but it will help in preventing script-kiddings from doing some basic browsing around. MySQL injection…
Linux For Dummies: Permissions
In the previous articles I made a short introduction to the Unix world and in the following article I have dealt with the basic commands for the file system management. Today we are…
Linux for Dummies: Ubuntu Terminal
I introduced in the previous article, available here, the basic concepts concerning the Linux world. Today we are going to have a look to some basic operations that we can perform…
Must-Have htaccess Tips for you to Avoid Duplicate Content on Your Site
In order to be able to implement these tips it is necessary that your Apache server already has the mod_rewrite module activated. mod_rewrite and .htaccess are used together so that…
The Best RSS Readers for Ubuntu
Even if most of the tech experts actively claim that RSS (Rich Site Summary) is dead especially after Google Reader was discontinued 5 years ago but it isn’t yet as…
How to install Letsencrypt Certificates with Certbot in Ubuntu
In this article we will explain how to install, manage and configure the SSL Security certificate, Let's Encypt in NGINX server used as proxy. This certificate is free but does…
How to Set up a Fully Functional Mail Server on Ubuntu 16.04 with iRedMail
Setting up your own mail server from scratch on Linux is complex and tedious, until you meet iRedMail. This tutorial is going to show you how you can easily and…
GIMP 2.10 released: Features 32-bit support, new UI and A Ton Of Improvements
It's been over a half-decade since the GIMP 2.8 stable debut and today marks the long-awaited release of GIMP 2.10, its first major update in six years. And among other…
Setting Up SFTP on Ubuntu 16.04
I recently had a request to setup SFTP for a customer so they could manage a set of files in their environment through an FTP GUI. Being an avid user…
Install Java in Ubuntu 16.04
Java and the JVM (Java's virtual machine) are widely used and required for many kinds of software. This article will guide you through the process of installing and managing different…
ArangoDB, install and configure the popular Database in ubuntu 16.04
Introduction to ArangoDb, open source, NoSQL, multi-model database BigData seems to be getting stronger every day and more and more NoSQL databases are coming out to the market, all trying to position…