Comment accélérer Apache avec le cache HTTP Varnish sur Ubuntu 18.04 LTS
Varnish est un serveur proxy axé sur la mise en cache HTTP. Il est conçu comme un accélérateur HTTP et peut agir comme un reverse proxy pour ton serveur Web (Apache ou Nginx). Varnish a été utilisé pour des sites Web très connus et à fort trafic, notamment Wikipedia, The Guardian et le New York Times.
Dans ce tutoriel, nous allons te montrer comment installer et configurer l’accélérateur HTTP Varnish comme proxy inverse pour le serveur Web Apache. Le véritable serveur Web Apache fonctionnera sous un port HTTP non standard (sur le port 8080). Et Varnish fonctionnera en tant que reverse proxy sur le port HTTP 80. Pour ce guide, nous utiliserons le serveur Ubuntu 18.04 LTS.
Ce que nous allons faire
- Installer le serveur Web Apache
- Modifier le port par défaut d’Apache
- Installer Varnish
- Configurer Varnish
- Tester l’installation
Conditions préalables
- Ubuntu 18.04 LTS
- Privilèges de racine
Étape 1 – Installer le serveur Web Apache
Pour commencer, installe le serveur Web Apache. Par défaut, il est disponible dans le dépôt d’Ubuntu.
Mets à jour le dépôt Ubuntu, puis installe Apache à l’aide de la commande apt.
apt update
apt install -y apache2
Une fois l’installation terminée, démarre le service Apache et active son exécution automatique au démarrage du système à l’aide des commandes systemctl suivantes.
systemctl start apache2
systemctl enable apache2
Le serveur Web Apache a été installé.
Ensuite, pour permettre à tout le monde d’accéder au serveur Web, nous devons autoriser HTTP et HTTPS sur notre règle de pare-feu. Par défaut, Ubuntu est livré avec un paquet de pare-feu nommé UFW.
Ouvre de nouveaux ports SSH, HTTP et HTTPS à l’aide des commandes UFW suivantes.
ufw allow ssh
ufw allow http
ufw allow https
Maintenant, démarre le service de pare-feu et active-le pour qu’il se lance automatiquement au démarrage du système.
ufw enable
Tape ‘y’ et appuie sur Entrée pour confirmer.
Les nouveaux ports pour HTTP, HTTPS et SSH ont été ouverts et sont accessibles depuis l’extérieur du réseau.
Si tu veux tester le serveur Web Apache, tu peux utiliser la commande netstat et t’assurer qu’Apache fonctionne sous le port 80.
netstat -plntu
Ou tu peux utiliser la commande curl suivante.
curl -I hakase-labs.co
Tu devrais obtenir le résultat indiqué ci-dessous.
Étape 2 – Modifier le port par défaut d’Apache
Dans ce tutoriel, nous utiliserons Apache comme serveur dorsal, et il ne fonctionnera pas sous le port HTTP standard 80. Le serveur Web Apache fonctionnera sur le port 8080 en tant que backend, et le port HTTP standard 80 sera utilisé par ‘Varnish’.
Pour modifier le port Apache par défaut, nous devons modifier la configuration d’Apache ‘ports.conf’ et toute la configuration des hôtes virtuels dans le répertoire ‘sites-available’.
Va dans le répertoire de configuration d’Apache.
cd /etc/apache2
Remplace le port ’80’ par ‘8080’ dans la configuration Apache ‘ports.conf’ et dans tous les fichiers d’hôtes virtuels du répertoire ‘sites-available’. Nous pouvons le faire en exécutant les commandes sed suivantes.
sed -i -e 's/80/8080/g' ports.conf
sed -i -e 's/80/8080/g' sites-available/*
Ensuite, teste la configuration d’Apache et assure-toi qu’il n’y a pas d’erreur, puis redémarre le service Apache.
apachectl configtest
systemctl restart apache2
Apache fonctionne maintenant sur le port HTTP ‘8080’, vérifie-le à l’aide de la commande ‘netstat’ comme indiqué ci-dessous.
netstat -plntu
Assure-toi que tu as le résultat ci-dessous.
Tu peux donc voir que le serveur Web Apache fonctionne sur le port ‘8080’.
Étape 3 – Installer l’accélérateur HTTP Varnish
Dans cette étape, nous allons installer Varnish à partir du dépôt Ubuntu. Et pour ce guide, nous utiliserons Varnish 5.2.
Installe Varnish à l’aide de la commande apt suivante.
apt install -y varnish
Une fois l’installation terminée, démarre Varnish et active-le pour qu’il se lance automatiquement au démarrage du système.
systemctl start varnish
systemctl enable varnish
Varnish a été installé sur le système Ubuntu 18.04.
Par défaut, il fonctionne sous les ports ‘6081’ pour l’adresse publique et ‘6082’ pour l’adresse localhost. Vérifie-le en utilisant la commande netstat ci-dessous.
netstat -plntu
Et tu obtiendras le port varnish par défaut.
Étape 4 – Configurer Varnish comme proxy inverse pour Apache
Dans cette étape, nous allons configurer varnish sur le front du serveur Web Apache. Varnish fonctionnera sous le port http 80, et chaque demande des clients sera traitée par lui, avant d’être envoyée au serveur Web Apache fonctionnant sur le port 8080.
– Configuration du backend
Va dans le répertoire de configuration de ‘varnish’ et sauvegarde le fichier par défaut ‘default.vcl’.
cd /etc/varnish/
cp default.vcl default.vcl.aseli
Modifie la configuration de varnish ‘default.vcl’ à l’aide de l’éditeur vim.
vim default.vcl
Définis la configuration ‘backend’ à la ligne 16. Le backend de notre installation est Apache, et il fonctionne sur le port 8080. La configuration de varnish pour notre installation Apache doit donc être la suivante :
backend default {
.host = "127.0.0.1";
.port = "8080";
}
Sauvegarde et quitte.
– Exécuter Varnish sur le port 80
Ensuite, nous devons modifier les ports par défaut de varnish. Les ports par défaut de varnish sont ‘6081’ et ‘6082’, et nous devons changer le port pour le port HTTP 80 (uniquement pour l’adresse publique).
Modifie la configuration des paramètres de varnish dans le répertoire ‘/etc/default’.
cd /etc/default/
vim varnish
Modifie la ligne ‘DAEMON_OPTS’, remplace le port par défaut ‘6081’ pour l’adresse publique par le port HTTP standard ’80’ comme indiqué ci-dessous.
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
Sauvegarde et quitte.
Ensuite, nous devons modifier le fichier de service varnish ‘varnish.service’. Va dans le répertoire ‘/lib/systemd/system’ et modifie le fichier de service à l’aide de vim.
cd /lib/systemd/system/
vim varnish.service
Sur la ligne ‘ExecStart’, modifie la commande de démarrage de varnish comme ci-dessous.
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
Sauvegarde et quitte.
Recharge la configuration du service systemd, puis redémarre varnish.
systemctl daemon-reload
systemctl restart varnish
Vérifie maintenant varnish et assure-toi qu’il fonctionne sur le port HTTP 80.
netstat -plntu
Varnish fonctionne donc maintenant sous le port HTTP 80 en tant que frontal pour le serveur Web Apache, qui est sur le port 8080.
Étape 5 – Test
Fais un test en utilisant la commande curl.
curl -I hakase-labs.co
Vérifie que tu obtiens l’en-tête HTTP comme indiqué ci-dessous.
En vérifiant depuis le navigateur Web, l’URL de mon serveur de test esthttp://hakase-labs.co/. Choisis l’URL de ton serveur ici.
Et nous obtenons toujours le contenu d’Apache.
Vérifie le journal varnish à l’aide de la commande ‘varnishncsa’.
varnishncsa
Et nous obtenons le journal juste à partir du journal d’accès d’Apache.
L’installation et la configuration de Varnish pour le serveur Web Apache sont terminées.