Learn How To Installing Fuel CMS on Ubuntu 16.04 LTS

April 22, 2020

Table of Contents

If you are using a different system, please check our other tutorials.

Fuel CMS is a CodeIgniter based content management system. Its source code is hosted on GitHub. This guide will show you how to install Fuel CMS on a fresh Ubuntu 16.04 LTS IT Web Services instance.

Server Requirements

  • Nginx or Apache server with .htaccess. This tutorial will use Nginx.
  • PHP version 5.4 or greater.
  • A MySQL 5.0 (or newer) database if using the Fuel admin. Currently it does not support other databases.

Before you begin

Check Ubuntu version.

lsb_release -ds
# Ubuntu 16.04.4 LTS

Create a new non-root user account with sudo access and switch to it.

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

NOTE: Replace johndoe with your username.

Set up the timezone.

sudo dpkg-reconfigure tzdata

Ensure that your system is up to date.

sudo apt update && sudo apt upgrade -y

Step 1 – Install PHP, MySQL and Nginx

Download and install PHP.

sudo apt install -y php7.0 php7.0-cli php7.0-fpm php7.0-mysql

Check PHP version.

php --version

Install MySQL.

sudo apt install -y mysql-server

Check MySQL version.

mysql --version

Run the mysql_secure_installation script.

sudo mysql_secure_installation

Log in to MySQL as the root user.

mysql -u root -p

Create a new MySQL database and user, and remember the credentials.

create database dbname;
grant all on dbname.* to 'username' identified by 'password';
flush privileges;

Exit MySQL.

exit

Install Nginx.

sudo apt install -y nginx

Check Nginx version.

sudo nginx -v

Configure Nginx.

sudo vim /etc/nginx/sites-available/fuel.conf

Copy/paste the following directives.

server {
    listen 80;
    root /var/www/fuel;
    index index.php index.html index.htm;
    server_name example.com;
    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    location ~ .php$ {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # Check this
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    } 
}

Activate the new fuel.conf configuration by linking the file to the sites-enabled directory.

sudo ln -s /etc/nginx/sites-available/fuel.conf /etc/nginx/sites-enabled/

Test Nginx configuration.

sudo nginx -t

Reload Nginx.

sudo systemctl reload nginx.service

Step 2 – Install Fuel CMS

Create document root directory.

sudo mkdir -p /var/www/fuel

Change ownership of the /var/www/fuel directory to johndoe.

sudo chown -R johndoe:johndoe /var/www/fuel

Install unzip.

sudo apt install unzip

Download the latest release of Fuel CMS.

cd /var/www/fuel
wget https://github.com/daylightstudio/FUEL-CMS/archive/master.zip
unzip master.zip
rm master.zip
mv FUEL-CMS-master/* .
rm -rf FUEL-CMS-master

Configure the fuel/application/config/database.php file with the proper database connection settings.

vim fuel/application/config/database.php

Import the fuel/install/fuel_schema.sql file into the newly created database.

mysql -u username -p password < fuel/install/fuel_schema.sql

NOTE: Replace username and password with your database credentials.

Change the $config['encryption_key'] on line 327 found in the fuel/application/config/config.php file. To generate a random key you can use the openssl tool.

vim fuel/application/config/config.php

Enable the admin backend by changing $config['admin_enabled'] = FALSE; to TRUE.

vim fuel/application/config/MY_fuel.php

Change ownership of the /var/www/fuel directory to www-data.

sudo chown -R www-data:www-data /var/www/fuel

Using your preferred web browser, open your site and follow the Fuel CMS installer. After following the installer, you will have Fuel CMS up and running. To access the Fuel admin area, append /fuel to your site URL. Use the following login credentials Username: admin and Password: admin. After logging in, you need to change your admin password.

Need help?

Do you need help setting up this on your own service?
Please contact us and we’ll provide you the best possible quote!