Grav CMS met Nginx en Let’s Encrypt te installeren op Ubuntu 18.04 LTS
Grav is een snel, eenvoudig en flexibel, op bestanden gebaseerd CMS en platform. Grav is gebouwd met platte tekst bestanden voor je inhoud. Er is geen database nodig. De onderliggende architectuur van Grav is ontworpen met behulp van gevestigde technologieën om te verzekeren dat Grav eenvoudig te gebruiken en gemakkelijk uit te breiden is. Enkele van deze sleuteltechnologieën zijn – Twig Templating voor krachtige controle over de gebruikersinterface , Markdown voor het maken van inhoud, YAML voor eenvoudige configuratie, Parsedown voor snelle Markdown en Markdown Extra ondersteuning, Doctrine Cache laag voor prestatie, Gregwar Image Library voor dynamische beeldmanipulatie, en Symfony Console voor CLI interface. Deze handleiding leidt je door de Grav CMS installatieprocedure op een verse Ubuntu 18.04 server met Nginx als webserver en we beveiligen de website met een Let’s encrypt SSL certificaat.
Vereisten
Zorg ervoor dat je systeem voldoet aan de volgende Grav systeemeisen:
- Webserver (Apache, Nginx, LiteSpeed, Lightly, IIS, enz.)
- PHP versie 7.1.3 of hoger met de volgende PHP extensies:
curl,
ctype,
dom,
gd,
json,
mbstring,
openssl,
session,
simplexml
,xml,
zip, apcu, opcache, yaml
Vereisten
- Een besturingssysteem met Ubuntu 18.04 LTS.
- Een niet-root gebruiker met sudo privileges.
Eerste stappen
Controleer je Ubuntu versie:
lsb_release -ds
# Ubuntu 18.04.2 LTS
Stel de tijdzone in:
sudo 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 hebt voor de standaard softwarepakketten van je besturingssysteem:
sudo apt update && sudo apt upgrade -y
Installeer enkele essentiële pakketten die nodig zijn voor het basisbeheer van het Ubuntu besturingssysteem:
sudo apt install -y curl wget vim git unzip socat bash-completion
Stap 1 – Installeer PHP en de vereiste PHP uitbreidingen
Installeer PHP, en ook de nodige PHP uitbreidingen:
sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-xml php7.2-zip php7.2-opcache php-apcu
Om PHP gecompileerd in modules te laten zien, kun je:
php -m
ctype
curl
exif
fileinfo
. . .
. . .
Controleer de PHP versie:
php --version
# PHP 7.2.17-0ubuntu0.18.04.1 (cli) (built: Apr 18 2019 14:12: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.17-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies
De PHP-FPM dienst wordt op het Ubuntu 18.04 systeem automatisch gestart en ingeschakeld bij het opnieuw opstarten, dus je hoeft hem niet handmatig te starten en in te schakelen. We kunnen verder met de volgende stap, namelijk de installatie en instelling van de databank.
Stap 2 – Installeer acme.sh client en verkrijg Let’s Encrypt certificaat (optioneel)
Je website beveiligen met HTTPS 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 gebruiken we acme.sh client. 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 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.1
Verkrijg RSA en ECC/ECDSA certificaten voor je domein/hostname:
# 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 de --staging
vlag aan de bovenstaande commando’s toevoegen.
Na het uitvoeren van de bovenstaande commando’s staan je certificaten en sleutels in:
- Voor RSA:
/home/username/example.com
map. - Voor ECC/ECDSA:
/home/username/example.com_ecc
map.
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 de /etc/letsencrypt
directory gebruiken.
mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Installeer/kopieer certificaten naar/etc/letsencryptmap.
# 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 de certs de root gebruiker en ga terug naar de normale sudo gebruiker:
exit
Stap 3 - Installeer en configureer Nginx
Grav CMS kan prima werken met veel webservers. In deze handleiding kiezen we Nginx.
Installeer Nginx:
sudo apt install -y nginx
Controleer de Nginx versie:
sudo nginx -v
# nginx version: nginx/1.14.0 (Ubuntu)
Configureer Nginx voor Grav door te draaien:
sudo vim /etc/nginx/sites-available/grav.conf
En vul het bestand met de volgende configuratie:
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com;
root /var/www/grav;
index index.php;
ssl_certificate /etc/letsencrypt/status.example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/status.example.com/status.example.com.key;
ssl_certificate /etc/letsencrypt/status.example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/status.example.com_ecc/status.example.com.key;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
}
Activeer de nieuwe grav.conf
configuratie door het bestand te koppelen aan de sites-enabled
directory:
sudo ln -s /etc/nginx/sites-available/grav.conf /etc/nginx/sites-enabled/
Test de NGINX configuratie:
sudo nginx -t
Herlaad Nginx:
sudo systemctl reload nginx.service
Stap 4 - Installeer Grav CMS
Maak een document root directory waar Grav in moet komen te staan:
sudo mkdir -p /var/www/grav
Verander het eigendom van de /var/www/grav
directory in {jour_user}
:
sudo chown -R {your_user}:{your_user} /var/www/grav
OPMERKING: Vervang {jour_user}
door je aanvankelijk aangemaakte gebruikersnaam voor niet-rootgebruikers.
Navigeer naar de document root directory:
cd /var/www/grav
Download de Grav broncode via wget en pak hem uit:
wget https://getgrav.org/download/core/grav-admin/1.6.8
unzip 1.6.8
mv grav-admin/* . && mv grav-admin/.* .
rm -rf grav-admin 1.6.8
Verander eigendom van de /var/www/grav
directory in www-data:
sudo chown -R www-data:www-data /var/www/grav
Open je site in een webbrowser en volg de instructies op het scherm om de Grav installatie te voltooien.
Stap 5 - Voltooi de Grav CMS installatie
Maak een admin account aan:
Bij het aanmaken van een admin account word je doorverwezen naar het Grav admin dashboard:
Dat is alles. De installatie van Grav CMS is voltooid.