Grav CMS installeren op CentOS 7

Grav is een snel, eenvoudig, enflexibel, op bestanden gebaseerd CMS platform. Grav wordt geleverd met een krachtig Package Management Systeem om eenvoudige installatie en opwaardering van plugins en thema’s mogelijk te maken, en ook eenvoudige bijwerking van Grav zelf.

De onderliggende architectuur van Grav is ontworpen met behulp van gevestigde en best-in-classtechnologieën om ervoor te zorgen 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 eenvoudig maken van inhoud
  • YAML: voor eenvoudige configuratie
  • Parsedown: voor snelle Markdown en Markdown Extra ondersteuning
  • Doctrine Cache: laag voor prestatie
  • Pimple Dependency Injection Container: voor uitbreidbaarheid en onderhoudbaarheid
  • Symfony Event Dispatcher: voor plugin event afhandeling
  • Symfony Console: voor CLI interface
  • Gregwar Image Library: voor dynamische beeldmanipulatie

Vereisten

Grav is opzettelijk ontworpen met weinig eisen. Gravwordt gebouwd met platte tekst bestanden voor je inhoud. Er is geen databank nodig.

Zorg ervoor dat je systeem aan de volgende eisen voldoet:

  • Webserver (Apache, Nginx, LiteSpeed, Lightly, IIS, enz.) We zullen NGINX gebruiken.
  • PHP versie 7.1.3 of hoger

Vereisten

  • Een besturingssysteem met CentOS 7.
  • Een niet-root gebruiker met sudo rechten.

Eerste stappen

Controleer je CentOS versie:

cat /etc/centos-release
# CentOS Linux release 7.6.1810 (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 de nodige PHP uitbreidingen

Installeer de Webtatic YUM repo:

sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Installeer PHP, en ook de nodige PHP uitbreidingen:

sudo yum install -y php72w php72w-cli php72w-fpm php72w-common php72w-curl php72w-gd php72w-json php72w-mbstring php72w-xml php72w-zip php72w-opcache php72w-pecl-apcu

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.17 (cli) (built: May 13 2019 18:03:04) ( 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, Copyright (c) 1999-2018, by Zend Technologies

Start en schakel de PHP-FPM dienst in:

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

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 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.0

Verkrijg RSAen ECC/ECDSAcertificaten voorje 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 de--stagingvlag aan de bovenstaande commando’s toevoegen.

Na het uitvoeren van de bovenstaande commando’s staan jecertificaten 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/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 gewone sudo gebruiker:

exit

Stap 3 – Installeer en configureer NGINX

Installeer NGINX:

sudo yum install -y nginx

Controleer de versie van NGINX:

nginx -v
# nginx version: nginx/1.12.2

Start en schakel NGINX service in:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Configureer NGINXvoor Grav.Voersudo vim /etc/nginx/conf.d/grav.confuit en voegde volgende configuratie toe.

server {
  
  listen 80;
  listen 443 ssl;
  server_name example.com;
  root /var/www/grav;
  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;
  index index.html index.php;
  
  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 127.0.0.1:9000;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
  }

}

ControleerNGINXconfiguratie op syntaxisfouten:

sudo nginx -t

HerlaadNGINXdienst:

sudo systemctl reload nginx.service

Stap 4 – Installeer Grav CMS

Maak een document root directory:

sudo mkdir -p /var/www/grav

Verander het eigendom van de map/var/www/gravinjohndoe:

sudo chown -R johndoe:johndoe /var/www/grav

Navigeer naar de document root map:

cd /var/www/grav

Download Grav en pak het uit:

wget https://getgrav.org/download/core/grav-admin/1.6.9
unzip 1.6.9
mv grav-admin/* . && mv grav-admin/.* .
rm -rf grav-admin 1.6.9

OPMERKING:Versie 1.6.9 is de huidige versie en kan anders zijn tegen de tijd dat je dit leest. Kijk op de Grav website voor de meest recente informatie.

Verander het eigendom van de/var/www/grav directoryinnginx:

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

Startsudo vim /etc/php-fpm.d/www.confen stelgebruiker en groep in opnginx. Aanvankelijk zal dit ingesteld zijn op gebruiker en groepapache:

sudo vim /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx

Start de PHP-FPM dienst opnieuw.

sudo systemctl restart php-fpm.service

Maak de map/var/lib/php/session/aan en verander het eigendom innginx:

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

Openhttp://example.comin jewebbrowser en volg de aanwijzingen op het scherm. Om Grav admin te openen voeg je/admintoe aan jeURL.

Stap 5 – Voltooi de Grav setup

Maak een Grav admin gebruiker aan:

Voeg Grav admin gebruiker toe

Na het aanmaken word je doorgestuurd naar het admin dashboard:

Grav CMS Dashboard

Links