Varnish configureren
Om gebruik te maken van Varnish caching zijn er een aantal benodigdheden:
- Eigen VPS met ten minste 1 GB RAM (Aanbevolen is minimaal 2)
- Eigen IP-Adres
- Aangekocht SSL certificaat
Allereerst beginnen we met het installeren van de laatste stable nginx versie en PHP 7.2.
1. Open en zet onderaan het bestand de volgende regel:
deb http://nginx.org/packages/mainline/debian/ stretch nginx
2. Import de signing key van de officiële nginx repository
sudo wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
3. Installeer nginx
sudo apt-get update
sudo apt-get install nginx
4. Installeer de benodigdheden voor PHP 7.2
sudo apt install ca-certificates apt-transport-https
5. Activeer de repository en importeer de signing key
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
sudo echo "deb https://packages.sury.org/php/ jessie main" | tee /etc/apt/sources.list.d/php.list
6. Installeer PHP 7.2
sudo apt-get update
sudo apt-get install php7.2 php7.2-cgi php7.2-cli php7.2-common php7.2-curl php7.2-fpm php7.2-gd php7.2-intl php7.2-json php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-xml php7.2-xmlrpc php7.2-zip
7. Installeer varnish
sudo apt-get install varnish
8. Activeer Varnish
sudo nano /etc/default/varnish
9. Varnish configureren
Zoek naar de sectie ‘Alternative 2’, en vervang de DAEMON_OPS naar het volgende:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/custom.vcl \
-S /etc/varnish/secret \
-s malloc,1G"
Let op!
Pas 1G naar de hoeveelheid cache-ruimte, op een server van 1GB mag dit niet hoger dan “256m” zijn.
10. Zorgen dat Varnish volgens de juiste manier op start
sudo nano /lib/systemd/system/varnish.service
Vervang de regels die beginnen met ExecStartPre en ExecStart door de volgende, waar je ook het geheugen weer aanpast:
ExecStartPre=/usr/sbin/varnishd -C -f /etc/varnish/custom.vcl
ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/custom.vcl -S /etc/varnish/secret -s malloc,1G
11. Configuratiebestand voor Varnish aanmaken
sudo touch /etc/varnish/custom.vcl
Plak hier vervolgens de inhoud van dit snippet in: https://gitlab.ci.sddev.nl/snippets/3 en vervang het server ip en de domeinnaam.
12. Nginx configureren
De nginx configuratie is anders dan normaal, dit heeft er vooral mee te maken dat Varnish eigenlijk geen SSL ondersteund, en we er dus door middel van een reverse proxy voor moeten zorgen dat dit toch werkt.
Pas het gewenste configuratiebestand aan en zorg dat de volgende inhoud in het bestand wordt geplaatst: https://gitlab.ci.sddev.nl/snippets/4
13. Project configureren voor varnish
Pas in het betreffende project het bestand /config/environments/production.php aan, en zet de volgende code onderaan het bestand:
// Enable SSL termination
if( $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
$_SERVER['HTTPS'] = 'on';
}
// Enable fail2ban with varnish
define( 'WP_FAIL2BAN_PROXIES','127.0.0.1' );