Learn How To Installing Fork CMS on Ubuntu 16.04 LTS
Table of Contents
- Requirements
- Before you begin
- Step 1 – Install PHP and required PHP extensions, MySQL and NGINX
- Step 2 – Configure NGINX
- Step 3 – Download and install Composer
- Step 4 – Download and install Fork CMS via Composer
If you are using a different system, please check our other tutorials.
Installing Fork CMS on CentOS 7
Installing Fork CMS on Debian 9
Installing Fork CMS on Fedora 28
Installing Fork CMS on FreeBSD 12
Fork is an open source CMS written in PHP. Fork’s source code is hosted on GitHub. This guide will show you how to install Fork CMS on a fresh Ubuntu 16.04 LTS IT Web Services instance.
Requirements
- PHP 7.1 or higher.
- MySQL 5.0 or higher.
- NGINX or Apache 2.0 with
.htaccess
,mod rewrite
,mod expires
(optional but recommended) andmod deflate
(optional) enabled.
Before you begin
Check Ubuntu version.
lsb_release -ds
# Ubuntu 16.04.3 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 and required PHP extensions, MySQL and NGINX
Ubuntu does not provide the latest PHP version in its default software repositories. We’ll need to add a community maintained Personal Package Archive (PPA) instead.
Download and install PHP 7.1 and required PHP extensions.
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
sudo apt install -y php7.1 php7.1-cli php7.1-fpm php7.1-curl php7.1-mbstring php7.1-gd php7.1-intl php7.1-mysql php7.1-xml
Check PHP version.
php --version
# PHP 7.1.11-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Oct 27 2017 13:49:56) ( NTS )
# Copyright (c) 1997-2017 The PHP Group
# Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
# with Zend OPcache v7.1.11-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies
Because there are many existing IT Web Services Docs detailing the installation of MySQL and NGINX, this article will only cover the configuration of NGINX.
Step 2 – Configure NGINX
Run sudo vim /etc/nginx/sites-available/fork.conf
and copy/paste the following.
server {
listen 80;
root /var/www/fork;
index index.php index.html;
server_name example.com;
location / {
# Checks whether the requested url exists as a file $uri or directory $uri/ in the root, else redirect to /index.php.
try_files $uri $uri/ @redirects;
}
location @redirects {
rewrite ^ /index.php;
}
location ~ .php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; # Make sure to doublecheck this!
fastcgi_index index.php;
fastcgi_read_timeout 60;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# Don't pollute the logs with common requests
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# As Fork CMS has the app_root as doc_root, we need to restrict access to a few things for security purposes!
location ~* ^/(composer..*|vendor/.*|Procfile$|.git/.*|src/Console.*|.*.gitignore|.editorconfig|.travis.yml|autoload.php|bower.json|phpunit.xml.dist|.*.md|app/logs/.*|app/config/.*|src/Frontend/Cache/CompiledTemplates.*|src/Frontend/Cache/Locale/.*.php|src/Frontend/Cache/Navigation/.*.php|src/Frontend/Cache/Search/.*|src/Backend/Cache/CompiledTemplates/.*|src/Backend/Cache/Locale/.*.php)$ {
deny all;
access_log off;
log_not_found off;
}
# Deny access to dot-files.
location ~ /. {
deny all;
access_log off;
log_not_found off;
}
}
A summary of the changes that you will be making are as follows.
- Change the value of the
root
directive to point to the correct location of your website, such as/var/www/fork
. - Change the value of the
server_name
directive to point to your domain name or IP address. - Make sure you check if
fastcgi_pass
is set correctly.
Activate the new fork.conf
configuration by linking the file to the sites-enabled
directory.
sudo ln -s /etc/nginx/sites-available/fork.conf /etc/nginx/sites-enabled/
Test the NGINX configuration.
sudo nginx -t
Reload NGINX and restart PHP7.1-FPM
.
sudo systemctl reload nginx.service
sudo systemctl restart php7.1-fpm.service
Step 3 – Download and install Composer
Download Composer dependencies.
sudo apt install -y curl git unzip
Download and install Composer, the dependency manager for PHP.
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 Composer version.
composer --version
# Composer version 1.5.2 2017-09-11 16:59:25
Step 4 – Download and install Fork CMS via Composer
Create a document root directory.
sudo mkdir -p /var/www/fork
Change ownership of the /var/www/fork
directory to johndoe
.
sudo chown -R johndoe:johndoe /var/www/fork
Download the latest stable release of Fork CMS from the command line.
cd /var/www/fork
composer create-project forkcms/forkcms .
Change ownership of the /var/www/fork
directory to www-data
.
sudo chown -R www-data:www-data /var/www/fork
Edit the app/config/parameters.yml.dist
file and set database information.
sudo vim /var/www/fork/app/config/parameters_install.yml
Using your preferred web browser, open your site and follow the Fork CMS
installer. After following the installer you should have Fork up and running. To access the Fork admin area just append /private
to your site URL.
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!