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 --stagingvlag 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:

Grav CMS Inloggen

Bij het aanmaken van een admin account word je doorverwezen naar het Grav admin dashboard:

Grav CMS Dashboard

Dat is alles. De installatie van Grav CMS is voltooid.