WonderCMS installeren met Nginx en Let’s Encrypt op FreeBSD 12

WonderCMS is een gratis en open-source flat-file CMS, bedoeld om extreem klein, licht en eenvoudig te zijn. Het is gebouwd met PHP, jQuery, HTML/CSS en ontwikkeld sinds 2008. Er is geen eerste configuratie nodig. Het installatieproces is vrij eenvoudig – pak uit en upload 5 bestanden. Alle bestanden kunnen gemakkelijk verplaatst, geback-upt en hersteld worden door ze naar een andere plaats te kopiĆ«ren/plakken. Om ze naar een andere host te verplaatsen is geen herconfiguratie nodig. WonderCMS heeft ook geen traditionele/relationele databank zoals MySQL nodig. De flat file technologie stelt WonderCMS in staat alle gegevens op te slaan in een tekstbestand (flat file) genaamd database.js dat gestructureerd is in JSON formaat. In deze handleiding doorlopen we de installatie en setup van WonderCMS op het FreeBSD 12 systeem door Nginx als webserver te gebruiken, 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 WonderCMS zijn:

  • PHP versie 7.1 of hoger met de uitbreidingen curl, mbstring en zip.
  • Webserver (Apache met mod_rewrite module ingeschakeld, Nginx, IIS).

Vereisten

  • FreeBSD 12 besturingssysteem.
  • Een niet-root gebruiker met sudo privileges.

Eerste stappen

Controleer je FreeBSD versie:

uname -ro
# FreeBSD 12.0-RELEASE

Stel de tijdzone in:

tzsetup

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

freebsd-update fetch install
pkg update && pkg upgrade -y

Installeer enkele essentiƫle pakketten die nodig zijn voor het basisbeheer van het FreeBSD 12.0 besturingssysteem:

pkg install -y sudo vim unzip wget bash socat

Stap 1 – Installeer PHP en de nodige PHP uitbreidingen

Installeer PHP, en ook de nodige PHP uitbreidingen:

sudo pkg install -y php72 php72-mbstring php72-curl php72-gd php72-pdo php72-mysqli php72-pdo_mysql php72-json php72-openssl php72-ctype php72-dom php72-hash php72-iconv php72-tokenizer php72-calendar php72-fileinfo php72-session php72-simplexml php72-xml php72-filter

Om PHP gecompileerd in modules te tonen, kun je:

php -m

ctype
curl
exif
fileinfo
. . .
. . .

Controleer de PHP versie:

php --version

# PHP 7.3.6 (cli) (built: May 28 2019 09:32:59) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.6, Copyright (c) 1998-2018 Zend Technologies

Start en schakel de PHP-FPM dienst in:

sudo sysrc php_fpm_enable=yes
sudo service php-fpm start

Stap 2 – Installeer acme.sh client en verkrijg Let’s Encrypt certificaat ( optioneel )

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

Download en installeer acme.sh:

sudo pkg install -y acme.sh

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 valse certificaten wilt om te testen kun je --staging vlag toevoegen aan de bovenstaande commando’s.

Na het uitvoeren van de bovenstaande commando’s staan je certificaten en sleutels in:

  • 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 /etc/letsencrypt directory gebruiken.

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.

Na het verkrijgen van certs verlaat je de root gebruiker en ga je terug naar de gewone sudo gebruiker:

exit

Stap 3 - Installeer en configureer NGINX

WonderCMS kan prima samenwerken met veel populaire web server software. In deze handleiding kiezen we NGINX.

Installeer NGINX:

sudo pkg install -y nginx

Controleer de versie van NGINX:

nginx -v
# nginx version: nginx/1.16.1

Start en schakel NGINX dienst in:

sudo sysrc nginx_enable=yes
sudo service nginx start

Configureer vervolgens NGINX voor WonderCMS. Draai sudo vim /usr/local/etc/nginx/wondercms.conf en voeg de volgende configuratie toe:

server {
  
  listen 80;
listen 443 ssl;

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; server_name example.com; root /usr/local/www/wondercms; index index.php; location / { if (!-e $request_filename) { rewrite ^/(.+)$ /index.php?page=$1 last; } } location ~ database.js { return 403; } location ~ \.php(/|$) { fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

Voer sudo vim /usr/local/etc/nginx/nginx.conf uit en voeg de onderstaande regel toe aan http {} blok om WonderCMS config op te nemen.

include wondercms.conf;

Controleer Nginx configuratie op syntaxfouten:

sudo nginx -t

Herlaad Nginx service:

sudo service nginx reload

Stap 4 - Installeer WonderCMS

Maak een document root directory voor WonderCMS.

sudo mkdir -p /usr/local/www/wondercms

Navigeer naar de document root directory:

cd /usr/local/www/wondercms

Download en pak WonderCMS broncode uit:

sudo wget https://github.com/robiso/wondercms/releases/download/2.7.0/WonderCMS-2.7.0.zip
sudo unzip WonderCMS-2.7.0.zip
sudo rm WonderCMS-2.7.0.zip

Verplaats WonderCMS bestanden naar de document root directory.

sudo mv wondercms/* .
sudo mv wondercms/.* .
sudo rmdir wondercms

Verander het eigendom van de /usr/local/www/wondercms directory in nginx:

sudo chown -R nginx:nginx /usr/local/www/wondercms

Start de PHP-FPM dienst opnieuw:

sudo service php-fpm restart

Open je site in een webbrowser en log in met standaard wachtwoord admin en verander het standaard wachtwoord daarna.

WonderCMS op FreeBSD

Links