How to Install Cachet on Fedora 28

Published on: Fri, Apr 12, 2019 at 11:12 am EST

Cachet is an open source status page system written in PHP. The source code of Cachet is hosted in this Github repo. In this article, we will go over the Cachet installation process on Fedora 28 by using the PHP, MariaDB and Nginx software stack.

Requirements

  • Git
  • PHP version 5.5.9 or greater
  • HTTP server with PHP support (eg: Apache, Nginx, Caddy). This guide will use Nginx.
  • A supported database: MySQL/MariaDB, PostgreSQL or SQLite. This guide will use MariaDB.
  • Composer

Before you begin

Check the Fedora version.

cat /etc/fedora-release
# Fedora release 28 (Twenty Eight)

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.

Ensure that your system is up to date.

sudo dnf check-upgrade || sudo dnf upgrade -y

Set up the timezone.

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

Install necessary packages.

sudo dnf install -y curl git wget vim unzip bash-completion

For sake of simplicity, disable SELinux and FirewallD. You may re-enable FirewallD as needed.

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

Install PHP

Install PHP and the required PHP extensions.

sudo dnf install -y php-cli php-fpm php-common php-xml php-gd php-zip php-mbstring php-mysqlnd php-pgsql php-sqlite3 php-mcrypt php-pecl-apcu php-pdo php-json

Check the version.

php --version
# PHP 7.2.8 (cli) (built: Jul 17 2018 05:35:43) ( NTS )

Start and enable the PHP-FPM service.

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

Install MariaDB and create a database

Install MariaDB database server.

sudo dnf install -y mariadb-server

Check the version.

mysql --version
# mysql  Ver 15.1 Distrib 10.2.16-MariaDB, for Linux (x86_64) using readline 5.1

Start and enable the MariaDB service.

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

Run mysql_secure_installation to improve MySQL security and set the password for the MariaDB root user.

sudo mysql_secure_installation

Connect to the MariaDB shell as the root user.

mysql -u root -p
# Enter password:

Create an empty MariaDB database and user for Cachet, and remember the credentials.

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

Install and configure Nginx

Install Nginx.

sudo dnf install -y nginx

Check the version.

nginx -v
# nginx version: nginx/1.12.1

Start and enable the Nginx service.

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

Configure Nginx. Run sudo vim /etc/nginx/conf.d/cachet.conf and populate the file with the following configuration.

server {
  listen 80;
  listen [::]:80;

  server_name status.example.com; # Check this
  root /var/www/cachet/public; # Check this

  index index.php;

  location / {
    try_files $uri /index.php$is_args$args;
  }

  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/run/php-fpm/www.sock; # Check this
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    fastcgi_keep_conn on;
  }
}

Test the Nginx configuration.

sudo nginx -t

Reload Nginx.

sudo systemctl reload nginx.service

Install Composer

Install Composer globally.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

Check the version.

composer --version
# Composer version 1.7.2 2018-08-16 16:57:12

Install Cachet

Create a document root directory.

sudo mkdir -p /var/www/cachet

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

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

Download the Cachet source code with Git and checkout the latest tagged release.

cd /var/www/cachet
git clone -b 2.4 --single-branch https://github.com/cachethq/Cachet.git .

Copy .env.example to .env and configure both database and APP_URL settings in the .env file.

cp .env.example .env
vim .env

Install dependencies with Composer.

composer install --no-dev -o

Set the application key.

php artisan key:generate

Install Cachet.

php artisan cachet:install

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

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

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

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

Restart PHP-FPM service.

sudo systemctl restart php-fpm.service

Open your site in a web browser and follow the instructions on the screen to finish the Cachet installation. To access the Cachet dashboard, append /dashboard to your website URL.