ExpressionEngine CMS installeren op CentOS 8
ExpressionEngine is een volwassen, flexibel, veilig, gratis open-source inhoudbeheersysteem (CMS) geschreven in PHP. De broncode ervan wordt gehost op Github. Met ExpressionEngine kun je volwaardige websites bouwen, een web app maken, of inhoud aan mobiele toepassingen serveren. Allemaal zonder dat je complexe programmeerkennis nodig hebt. Deze gids leidt je door het installatieproces van ExpressionEngine op een verse CentOS 8 met PHP, MariaDB als databank, en Nginx als webserver.
Vereisten
ExpressionEngine vereist een webserver met PHP en MySQL/MariaDB. De aanbevolen software stack en versies zijn:
- PHP versie 7.0 of hoger, draaiend met PHP-FPM en met de volgende PHP extensies (
gd
,fileinfo
,intl
,mbstring
). - MySQL versie 5.6 of hoger of Percona versie 5.6 of hoger. Dezehandleiding zal MariaDB gebruiken.
- Een webserver zoals Nginx of Apache. Deze handleiding zal Nginx gebruiken.
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 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 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
Installeer PHP, en ook de nodige PHP uitbreidingen:
sudo yum install -y php-cli php-fpm php-common php-mbstring php-gd php-intl php-mysql php-json php-zip
Controleer de PHP versie:
php --version
# PHP 7.2.19 (cli) (built: Jun 2 2019 09:49:05) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
Om te laten zien dat PHP in modules gecompileerd is, kun je uitvoeren:
php -m
ctype
curl
exif
fileinfo
. . .
. . .
Start en schakel de PHP-FPM dienst in:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service
Stap 2 – Installeer MariaDB
Installeer de 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 en schakel de MariaDB dienst in:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Voer het mysql_secure_installation
script uit om je MariaDB installatie beter te beveiligen:
sudo mysql_secure_installation
Log in MariaDB in als de root gebruiker:
sudo mysql -u root -p
# Enter password:
Maak een nieuwe MariaDB database en database gebruiker, en onthoud de inloggegevens:
CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit
OPMERKING: Vervang dbname
en username
door passende namen voor je opstelling. Vervang password
door een sterk wachtwoord.
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.3
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.
Na het verkrijgen van certs verlaat je de root gebruiker en ga je terug naar de normale sudo gebruiker:
exit
Stap 4 - Installeer Nginx
Installeer Nginx webserver:
sudo yum install -y nginx
Controleer de Nginx versie:
nginx -v
# nginx version: nginx/1.12.2
Start Nginx en schakel het in:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Configureer Nginx voor ExpressionEngine. Voer sudo vi /etc/nginx/conf.d/expressionengine.conf
uit en vul het bestand met de volgende configuratie.
server {
listen 443 ssl;
listen 80;
server_name example.com;
root /var/www/expressionengine;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
index index.php;
location / {
index index.php;
try_files $uri $uri/ @ee;
}
location @ee {
rewrite ^(.*) /index.php?$1 last;
}
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Controleer de NGINX configuratie op syntaxfouten:
sudo nginx -t
Herlaad de NGINX dienst:
sudo systemctl reload nginx.service
Stap 5 - Installeer ExpressionEngine
Maak een document root map waar ExpressionEngine in moet komen te staan:
sudo mkdir -p /var/www/expressionengine
Navigeer naar de document root map:
cd /var/www/expressionengine
Download de laatste versie van ExpressionEngine en pak de bestanden uit naar een map op je server:
sudo wget -O ee.zip --referer https://expressionengine.com/ 'https://expressionengine.com/?ACT=243'
sudo unzip ee.zip
sudo rm ee.zip
Verander het eigendom van de /var/www/expressionengine
map in nginx:
sudo chown -R nginx:nginx /var/www/expressionengine
Start sudo vim /etc/php-fpm.d/www.conf
en stel de gebruiker en groep in op nginx
. Aanvankelijk zullen ze ingesteld zijn op apache:
sudo vi /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx
Herstart de PHP-FPM dienst:
sudo systemctl restart php-fpm.service
Richt je browser op de URL van het admin.php
bestand dat je uploadde. Bijvoorbeeld: http://example.com/admin.php
. Volg de instructies op het scherm om ExpressionEngine te installeren. Als de installatiewizard klaar is, moet je de map system/ee/installer/
hernoemen of verwijderen van je server.
Stap 6 - Voltooi de ExpressionEngine installatie
Voltooi de ExpressionEngine installatie door de gegevens van de database en de beheerdersaccount in te voeren:
Daarna zie je de standaard login pagina:
Dit is het ExpressionEngine administratie dashboard:
En hier is de frontend pagina:
Dat is het! De ExpressionEngine installatie is voltooid.