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:

Stel gegevens over de verbinding met de databank in

Daarna zie je de standaard login pagina:

Log in pagina

Dit is het ExpressionEngine administratie dashboard:

Beheerders dashboard

En hier is de frontend pagina:

Standaard website

Dat is het! De ExpressionEngine installatie is voltooid.

Links