Fork CMS met NGINX installeren op CentOS 8

Fork is een gemakkelijk te gebruiken open-source CMS, gebouwd met behulp van Symfony Components. 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 zelfstudie doorlopen we de installatie en setup van Fork CMS op het CentOS 8 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 CentOS 8.
  • Een niet-root gebruiker met sudo privileges.

Eerste stappen

Controleer je CentOS versie:

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

Stel de tijdzone in:

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

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

sudo yum update -y

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

sudo yum install -y curl wget vim git unzip socat bash-completion epel-release

Stap 1 – Installeer PHP en PHP uitbreidingen

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

sudo yum install -y php php-cli php-fpm php-common php-mysqlnd php-curl php-json php-zip php-gd php-xml php-mbstring php-opcache php-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.11 (cli) (built: Oct 9 2018 15:09:36) ( NTS )

Start en schakel de PHP-FPM dienst in:

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

We kunnen overgaan tot de volgende stap, namelijk de installatie en inrichting van de databank.

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

Installeer MariaDB databaseserver:

sudo yum install -y mariadb-server

Controleer de MariaDB versie:

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

Start de MariaDB dienst en schakel die in:

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

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 databank 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 en password door je eigen namen.

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 yum install -y nginx

Controleer de NGINX versie:

nginx -v
# nginx version: nginx/1.14.1

Configureer NGINX voor Fork CMS. Voer sudo vim /etc/nginx/conf.d/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 127.0.0.1:9000; 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; } }

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') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { 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.9.0 2019-08-02 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 map /var/www/fork in www-data.

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

Bewerk het app/config/parameters.yml.dist bestand en stel database informatie in.

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

Voer sudo vim /etc/php-fpm.d/www.conf uit en stel gebruiker en groep in op nginx:

sudo vim /etc/php-fpm.d/www.conf

Maak de map /var/lib/php/session aan en verander het eigendom in gebruiker nginx:

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

Herstart php-fpm.service:

sudo systemctl restart php-fpm.service

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:

Taalinstellingen

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.

Database instellingen

Maak gebruiker aan en voltooi de installatie:

Gebruiker aanmaken

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

Installatie voltooid

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

Links