Install Joomla on Ubuntu 16.04 LTS with Lighttpd, MariaDB and PHP 7.1 Support

If you scan the web today, you’ll see webmasters installing and using Joomla on Ubuntu 16.04 LTS with Apache2 or Nginx and MariaDB with PHP support… This post is going to show you how to use Lighttpd HTTP server instead…

Lighttpd is a secure, fast and flexibly HTTP server with a small memory footprint compared to other web-servers… Its event-driven architecture is optimized for a large number of parallel connections (keep-alive) which is important for high performance dynamic applications..

Joomla, a powerful and popular content management systems (CMS) is the right tool to develop and build powerful and dynamic websites based on PHP is flexible and can be run on variety or HTTP servers..

This brief tutorial is going to show students and new users how to install Joomla on Ubuntu 16.04 LTS with Lighttpd, MariaDB and PHP 7.1 Support

When you’re ready to setup Joomla with Lighttpd support, follow the steps below:

Step 1: Install Lighttpd HTTP Server

sudo apt install lighttpd

After installing Lighttpd, the commands below can be used to stop, start and enable Lighttpd service to always startup when the server boots up.

sudo systemctl stop lighttpd.service
sudo systemctl start lighttpd.service
sudo systemctl enable lighttpd.service

Step 2: Install MariaDB Database Server

OrangeHRM also requires a database server.. and MariaDB database server is a great place to start. To install it run the commands below.

sudo apt install mariadb-server mariadb-client

After installing, the commands below can be used to stop, start and enable MariaDB service to always start up when the server boots.

sudo systemctl stop mysql.service
sudo systemctl start mysql.service
sudo systemctl enable mysql.service

After that, run the commands below to secure MariaDB server.

sudo mysql_secure_installation

When prompted, answer the questions below by following the guide.

  • Enter current password for root (enter for none): Just press the Enter
  • Set root password? [Y/n]: Y
  • New password: Enter password
  • Re-enter new password: Repeat password
  • Remove anonymous users? [Y/n]: Y
  • Disallow root login remotely? [Y/n]: Y
  • Remove test database and access to it? [Y/n]:  Y
  • Reload privilege tables now? [Y/n]:  Y

Restart MariaDB server

sudo systemctl restart mysql.service

Step 3: Install PHP 7.1 FastCGI  and Related Modules

PHP 7.1 isn’t available on Ubuntu default repositories… in order to install it, you will have to get it from third-party repositories.

Run the commands below to add the below third party repository to upgrade to PHP 7.1

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php

Then update and upgrade to PHP 7.1

sudo apt update

After that, run the commands below to install PHP7.1-FastCGI and related PHP modules. There are many PHP modules that perform different functions.. however, these ones below maybe needed when developing PHP based websites.

sudo apt install php7.1-cgi php7.1-mcrypt php7.1-cli php7.1-mysql php7.1-gd php7.1-imagick php7.1-xml php7.1-recode php7.1-tidy php7.1-xmlrpc

After installing PHP7.1-FastCGI, you can enable PHP-FastCGI modules by running the commands below

sudo sudo lighttpd-enable-mod fastcgi 
sudo lighttpd-enable-mod fastcgi-php

If  the commands above fail, install the package below.

sudo apt install libterm-readline-gnu-perl

Then run the commands to enable the modules again, this time they should work.

sudo /etc/init.d/lighttpd force-reload

Step 4: Create Joomla Database

Now that you’ve install all the packages that are required, continue below to start configuring the servers. First run the commands below to create a blank Joomla database.

To logon to MariaDB database server, run the commands below.

sudo mysql -u root -p

Then create a database called joomladb

CREATE DATABASE joomladb;

Create a database user called joomlauser with new password

CREATE USER 'joomlauser'@'localhost' IDENTIFIED BY 'new_password_here';

Then grant the user full access to the database.

GRANT ALL ON joomladb.* TO 'joomlauser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;

Finally, save your changes and exit.

FLUSH PRIVILEGES;
EXIT;

Step 5: Configure Lighttpd PHP-FastCGI Settings

Next, you may want to configure Lighttpd to use PHP server scripting properly. The default PHP-FastCGI configuration file is located at /etc/php/7.1/cgi/php.ini

Open PHP Lighttpd configuration file by running the commands below

sudo nano /etc/php/7.1/cgi/php.ini

Then edit the file to suit your environments. Some important lines to consider:

file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_file_size = 100M
cgi.fix_pathinfo=0
date.timezone = America/Chicago

Next, open the Lighttpd site configuration file… by default it’s stored at /etc/lighttpd/lighttpd.conf

sudo nano /etc/lighttpd/lighttpd.conf

Then configure the highlighted lines below to enable its rewrite module and create a VirtualHost for our site and save the file. Remember to replace example.com with your own domain name..

server.modules = (
        "mod_access",
        "mod_alias",
        "mod_compress",
        "mod_redirect",
        "mod_rewrite",
)


$HTTP["host"] =~ "(^|www\.)example.com$" {
    server.document-root = "/var/www/html/joomla"
    server.errorlog      = "/var/log/lighttpd/example.com-error.log"
    server.error-handler-404 = "/index.php"
}

server.document-root        = "/var/www/html"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80


index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

# default listening port for IPv6 falls back to the IPv4 port
## Use ipv6 if available
#include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

Next, run the commands below to open FastCGI default configuraiton file for Lighttpd..

sudo nano /etc/lighttpd/conf-available/15-fastcgi-php.conf

Then confirm that PHP-FastCGI is configured as shown in the highlighted portion below to use PHP 7.1...

# -*- depends: fastcgi -*-
# /usr/share/doc/lighttpd/fastcgi.txt.gz 
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi

## Start an FastCGI server for php (needs the php7.1-cgi package)
fastcgi.server += ( ".php" =>
        ((
                "bin-path" => "/usr/bin/php-cgi7.1",
                "socket" => "/var/run/lighttpd/php.socket",
                "max-procs" => 1,
                "bin-environment" => (
                        "PHP_FCGI_CHILDREN" => "4",
                        "PHP_FCGI_MAX_REQUESTS" => "10000"
                ),
                "bin-copy-environment" => (
                        "PATH", "SHELL", "USER"
                ),
                "broken-scriptfilename" => "enable"
        ))
)

Step 6: Download Joomla Package

Next, run the commands below to download Joomla latest release.

cd /tmp && wget https://github.com/joomla/joomla-cms/releases/download/3.8.0/Joomla_3.8.0-Stable-Full_Package.zip

Then run the commands below to install unzip package, create Joomla folder in Apache2 root folder and extract the Joomla archived file.

sudo apt-get install unzip
sudo mkdir -p /var/www/html/joomla
sudo unzip Joomla*.zip -d /var/www/html/joomla

Change modify the directory permission.

sudo chown -R www-data:www-data /var/www/html/joomla
sudo chmod -R 755 /var/www/html/joomla

Restart Lighttpd services

sudo systemctl restart lighttpd.service

After that, open your browser and browse to your domain name to launch Joomla configuration wizard.

ex. http://example.com

joomla ubuntu install page

Follow the onscreen instructions until you’re successfully installed Joomla.

joomla ubuntu installation

Enjoy!

You may also like the post below:

Install WordPress on Ubuntu 16.04 LTS with Lighttpd, MariaDB and PHP 7.1 Support