Fork CMS met NGINX installeren op Debian 9

Fork is een gemakkelijk te gebruiken open-source CMS dat gebruik maakt van Symfony Componenten. Het heeft een intuïtieve en gebruiksvriendelijke interface, krachtige apps die je kunt downloaden om je site uit te breiden, eneen ruime collectie mooie thema’s.In deze handleiding doorlopen we de installatie en setup van Fork CMS op een Debian 9 systeem door Nginx als webserver te gebruiken, MariaDB als database engine, en optioneel kun je de transportlaag beveiligen door Acme.sh client en Let’s Encrypt certificaat autoriteit te gebruiken om SSL ondersteuning toe te voegen.

Vereisten

Vereisten voor het installeren en draaien van Fork CMS zijn:

  • PHP versie 7.1 of hoger.
  • De volgende PHP uitbreidingen moeten geïnstalleerd en ingeschakeld zijn: cURL, libxml, DOM, SimpleXML, SPL, PDO (met MySQL driver), mb_string, iconv, GD2 grafische bibliotheek, JSON, PCRE, intl.
  • MySQL 5.0 of hoger.
  • NGINX of Apache met .htaccess, mod_rewrite, mod_expires (optioneel maar aanbevolen), mod_deflate(optioneel) ingeschakeld.

Vereisten

  • Een besturingssysteem met Debian 9.
  • Een niet-root gebruiker met sudo privileges.

Eerste stappen

Controleer je Debian versie:

lsb_release -ds
# Debian GNU/Linux 9.9 (stretch)

Stel de tijdzone in:

dpkg-reconfigure tzdata

Werk je besturingssysteem pakketten (software) bij. Dit is een belangrijke eerste stap omdat je er zeker van bent dat je de laatste updates en beveiligingsfixes voor de standaard softwarepakketten van je besturingssysteem hebt:

apt update && apt upgrade -y

Installeer enkele essentiële pakketten die nodig zijn voor het basisbeheer van het Debian besturingssysteem:

apt install -y curl wget vim git sudo unzip socat bash-completion dirmngr apt-transport-https

Stap 1 – Installeer PHP en PHP uitbreidingen

Debian biedt in zijn standaard software repositories niet de nieuwste PHP versie aan. We zullen een gemeenschap moeten toevoegen die de repository van derden onderhoudt.

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update

Installeer PHP, en ook de nodige PHP uitbreidingen voor Fork CMS:

sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-mysql php7.2-curl php7.2-json php7.0-zip php7.2-gd php7.2-xml php7.2-mbstring php7.2-opcache php7.2-intl

Om PHP gecompileerd in modules te tonen, kun je uitvoeren:

php -m

ctype
curl
exif
fileinfo
. . .
. . .

Controleer de PHP versie:

php --version
# PHP 7.2.19-1+0~20190531112637.22+stretch~1.gbp75765b (cli) (built: May 31 2019 11:26:38) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.2.19-1+0~20190531112637.22+stretch~1.gbp75765b, Copyright (c) 1999-2018, by Zend Technologies

De PHP-FPM dienst wordt automatisch gestart en ingeschakeld bij het herstarten op een Debian 9 systeem, dus je hoeft hem niet handmatig te starten en in te schakelen. We kunnen overgaan tot de volgende stap, namelijk de installatie en instelling van de databank.

Stap 2 – Installeer MariaDB en maak een databank voor Fork CMS

Installeer de databaseserver MariaDB:

sudo apt install -y mariadb-server

Controleer de MariaDB versie:

mysql --version
# mysql Ver 15.1 Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Voer mysql_secure installation script uit om MariaDB beter te beveiligen en het wachtwoord voor de MariaDB root gebruiker in te stellen:

sudo mysql_secure_installation

Beantwoord elk van de vragen:

Would you like to setup VALIDATE PASSWORD plugin? N
New password: your_secure_password
Re-enter new password: your_secure_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

Maak verbinding met MariaDB shell als de root gebruiker:

sudo mysql -u root -p
# Enter password

Maak een lege MariaDB database en gebruiker voor Fork CMS en onthoud de credentials:

mysql> CREATE DATABASE dbname;
mysql> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'mypassword';
mysql> FLUSH PRIVILEGES;

Vervang het woord mypassword door een veilig wachtwoord naar keuze. Sluit MariaDB af:

mysql> exit

Vervang dbname, username and password with your own names.

Stap 3 – Installeer Acme.sh client en verkrijg het Let’s Encrypt certificaat (optioneel)

Je website met HTTPS beveiligen is niet noodzakelijk, maar het is een goed gebruik om je site verkeer te beveiligen. Om een SSL certificaat van Let’s Encrypt te verkrijgen zullen we Acme.sh client gebruiken. Acme.sh is een zuivere Unix shell software voor het verkrijgen van TLS certificaten van Let’s Encrypt zonder afhankelijkheden.

Download en installeer acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Controleer de versie van acme.sh:

acme.sh --version
# v2.8.2

Verkrijg RSA en ECC/ECDSA certificaten voor je domein/hostnaam:

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Als je nep certificaten wilt om te testen kun je toevoegen --staging flag to the above commands.

Na het uitvoeren van de bovenstaande commando’s zijn je certificaten en sleutels binnen:

  • Voor RSA: /home/username/example.com directory.
  • Voor ECC/ECDSA: /home/username/example.com_ecc directory.

Om je uitgegeven certs op te sommen kun je uitvoeren:

acme.sh --list

Maak een directory om je certs in op te slaan. We zullen een directory gebruiken /etc/letsencrypt.

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Installeer/kopieer certificaten naar /etc/letsencrypt directory.

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

Alle certificaten worden om de 60 dagen automatisch vernieuwd.

Verlaat na het verkrijgen van certs de root gebruiker en ga terug naar de gewone sudo gebruiker:

exit

Stap 4 - Installeer en configureer NGINX

Installeer de NGINX webserver:

sudo apt install -y nginx

Controleer de NGINX versie:

sudo nginx -v
# nginx version: nginx/1.10.3

Configureer NGINX voor Fork CMS. Voer sudo vim /etc/nginx/sites-available/fork.conf uit en voeg de volgende configuratie toe:

server {
    listen 80;
    listen 443 ssl;
root /var/www/fork; index index.php index.html; server_name example.com;

ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key; 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.2-fpm.sock; 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; } }

Activeer de nieuwe fork.conf configuratie door het bestand te koppelen aan desites-enabled directory:

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

Controleer de NGINX configuratie op syntaxfouten:

sudo nginx -t

Herlaad de NGINX dienst:

sudo systemctl reload nginx.service

Stap 5 - Installeer Composer

Installeer Composer, de PHP dependency manager globaal:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { 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

Controleer de versie van Composer:

composer --version
# Composer version 1.8.5 2019-04-09 17:46:47

Stap 6 - Installeer Fork CMS

Maak een document root directory.

sudo mkdir -p /var/www/fork

Verander het eigendom van de /var/www/fork directory in de gebruiker waarmee je nu bent ingelogd, in mijn geval is die gebruikersnaam johndoe.

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

Vervang johndoe door je inlog-gebruikersnaam in het bovenstaande commando! Download de laatste stabiele release van Fork CMS vanaf de commandoregel.

cd /var/www/fork
composer create-project forkcms/forkcms .

Verander het eigendom van de /var/www/fork directory in www-data.

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

Bewerk het app/config/parameters.yml.dist bestand en stel de databankinformatie in.

sudo vim /var/www/fork/app/config/parameters_install.yml

Open met de webbrowser van je voorkeur je site en volg de Fork CMS installer. Na het volgen van het installatieprogramma zou je Fork aan de praat moeten hebben. Om toegang te krijgen tot het Fork beheergebied voeg je gewoon /private toe aan je site URL.

Stap 7 - Voltooi de installatie van Fork CMS

Controleer of je server aan alle eisen voldoet en ga verder:

Vork CMS installateur

Kies taal en klik op volgende:

Kies taal

Kies de instellingen zoals je wilt en klik op volgende:

Instellingen

Voer je database instellingen in en klik op volgende. Zorg ervoor dat je de database al gemaakt hebt.

Gegevensbestand

Maak gebruiker aan en voltooi de installatie:

Installatie afwerken

Je ziet de volgende pagina nadat je alle bovenstaande stappen voltooid hebt:

Inloggen op Fork CMS

Je hebt Fork CMS met succes geïnstalleerd. Veel plezier met je nieuwe CMS!

Links