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,
enusername
door je eigen namen.
password
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:
Kies taal en klik op volgende:
Kies de instellingen zoals je wilt en klik op volgende:
Voer je database instellingen in en klik op volgende. Zorg ervoor dat je de database al gemaakt hebt.
Maak gebruiker aan en voltooi de installatie:
Je ziet de volgende pagina nadat je alle bovenstaande stappen voltooid hebt:
Je hebt Fork CMS met succes geïnstalleerd. Veel plezier met je nieuwe CMS!