Installing Fuel CMS on CentOS 7

Updated on November 21, 2023
Installing Fuel CMS on CentOS 7 header image

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 CentOS 7 Vultr instance.

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 the CentOS version.

cat /etc/centos-release
# CentOS Linux release 7.6.1810 (Core)

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

useradd -c "John Doe" johndoe && passwd johndoe
usermod -aG wheel johndoe
su - johndoe

NOTE: Replace johndoe with your username.

Set up the timezone.

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Ensure that your system is up to date.

sudo yum update

Install the needed packages.

sudo yum install -y socat git wget unzip epel-release

Disable SELinux and Firewall.

sudo setenforce 0 ; sudo systemctl stop firewalld ; sudo systemctl disable firewalld

Install PHP

Setup the Webtatic YUM repo.

sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Download and install PHP.

sudo yum install -y php72w php72w-cli php72w-fpm php72w-mysqlnd php72w-common

Check the version.

php --version

Start and enable PHP-FPM service.

sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service

Install MariaDB

Setup the MariaDB repo. Run sudo vi /etc/yum.repos.d/MariaDB.repo and populate it with the following text.

[mariadb]
name = MariaDB
baseurl = https://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Install the MariaDB database server.

sudo yum install -y MariaDB-server MariaDB-client

Check the version.

mysql --version && sudo mysqld --version

# mysql  Ver 15.1 Distrib 10.2.25-MariaDB, for Linux (x86_64) using readline 5.1
# mysqld  Ver 10.2.25-MariaDB for Linux on x86_64 (MariaDB Server)

Start and enable MariaDB.

sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

Run the mysql_secure_installation script to improve the security of your MariaDB installation.

sudo mysql_secure_installation

Log into MariaDB as the root user.

sudo mysql -u root -p
# Enter password:

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

CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit

NOTE: Replace dbname and username with appropriate names for your setup. Replace password with a strong password.

Install Nginx

Install Nginx.

sudo yum install -y nginx

Check the version.

nginx -v

Start and enable Nginx.

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Configure Nginx for Fuel CMS. Run sudo vim /etc/nginx/conf.d/fuel.conf and populate the file with the following configuration.

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 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

}

Test Nginx configuration.

sudo nginx -t

Reload Nginx.

sudo systemctl reload nginx.service

Install Fuel CMS

Create the 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

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

Create the /var/lib/php/session directory and change its ownership to the user nginx.

sudo mkdir -p /var/lib/php/session && sudo chown -R nginx:nginx /var/lib/php/session

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

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

Run sudo vim /etc/php-fpm.d/www.conf and set the user and group to nginx. Initially, they will both be set to apache.

sudo vi /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx

Restart the PHP-FPM service.

sudo systemctl restart php-fpm.service

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.