Base de connaissances
1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Ce guide concerne les fonctions ODBC de PHP.
Les fonctions ODBC de PHP ne sont supportées que sur Serveur Cloud.
Fonctions Open Database Connectivity
Il s'agit des fonctions utilisées pour interagir avec des bases de données via l'interface ODBC (Open Database Connectivity), un standard pour accéder à des sources de données de manière uniforme. Voici quelques exemples d'utilisation des fonctions ODBC de PHP :
- Pouvoir lire des données d'une base de données externe, et les afficher sur votre site Web
- Insérer ou modifier des données dans une base de données externe
- Effectuer des requêtes complexes sur une base de données externe
Ce guide explique comment travailler sans le module PECL SSH2 client
indisponible sur les hébergements Web et Serveurs Cloud Infomaniak, en utilisant plutôt la bibliothèque phpseclib
, qui fonctionne en PHP natif sans nécessiter d’extension spécifique.
Préambule
- L’utilisation de
PECL SSH2 client
entraine des erreurs de typeNo compatible key exchange algorithms found
ouUnable to exchange encryption keys
dans sa derniere version disponible. Phpseclib
permet :- L'authentification SSH par mot de passe ou clé privée.
- L'exécution de commandes à distance.
- Le transfert de fichiers sécurisés (SFTP).
- La gestion des clés SSH.
Utiliser phpseclib
Pour intégrer une connexion SSH dans un script PHP, utilisez phpseclib
comme suit :
use phpseclib3\Net\SSH2;
use phpseclib3\Crypt\PublicKeyLoader;
$ssh = new SSH2('domain.xyz');
$key = PublicKeyLoader::load(file_get_contents('/path/to/private_key'));
if (!$ssh->login('utilisateur', $key)) {
exit('Authentication Failed');
}
echo $ssh->exec('ls -la');
Infomaniak n'effectue aucune sauvegarde des VPS Cloud / VPS Lite.
Vous pouvez néanmoins…
- … créer un instantané (snapshot) du serveur (sauvegarde non automatisée)
- … sauvegarder le serveur sur Swiss Backup (sauvegarde automatisée)
Ce guide explique comment spécifier un fichier qui sera chargé avant même la page voulue ou au début de chaque script PHP exécuté sur votre serveur, inclus comme s'il avait été appelé avec la fonction require()
, mais plus globalement en utilisant la directive auto_prepend_file
de PHP.
Préambule
- Pour par exemple déclarer les headers d'un site Web, il est possible de faire un fichier
headers.php
qui contient des fonctions PHPheader()
et qui soit prepend au début de chaque fichier PHP…- … via un fichier
.user.ini
(propre à un dossier), - … ou via la configuration du site du Manager (global) comme expliqué ci-dessous.
- … via un fichier
Inclure un fichier globalement depuis le Manager
Pour accéder à la gestion du site Web :
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné:
- Cliquez sur Gérer sous Paramètres avancés:
- Cliquez sur l'onglet PHP / Apache.
- Complétez la ligne concernée en entrant le chemin du fichier à inclure.
- Cliquez sur le bouton pour sauvegarder:
Après avoir défini cette directive, toutes les pages PHP sur votre serveur incluront automatiquement le fichier spécifié avant d'exécuter leur propre code.
Les headers définis dans un fichier .htaccess
ne sont valables que pour le contenu non PHP (donc statique).
Infomaniak utilise php-fpm
qui reçoit les différents headers via apache fast_cgi
. Dans la RFC de cgi_www le header Strict-Transport-Security
ne fait pas partie des headers passés via CGI et la documentation Apache le confirme. Prenez connaissance de cette autre RFC.
⚠️ Pour de l'aide supplémentaire contactez un partenaire ou lancez gratuitement un appel d'offres — découvrez aussi le rôle de l'hébergeur.
Ce guide vous aidera si par exemple vous souhaitez déployer un package comme pymysql
et que celui-ci requiert une version de python supérieure à celle proposée sur votre hébergement.
Préambule
- Anaconda est une distribution libre et open source des langages de programmation Python. Cette distribution vise à simplifier la gestion des paquets et de déploiement.
- Il est recommandé alors d'utiliser conda livré avec une version récente de python et qui s'installe dans l'espace utilisateur, de sorte qu'il n'y a pas de conflit avec le système python (comme dans un environnement virtuel, qui nécessite toujours une installation système de la version souhaitée).
- Prenez connaissance de la documentation officielle.
⚠️ Pour de l'aide supplémentaire contactez un partenaire ou lancez gratuitement un appel d'offres — découvrez aussi le rôle de l'hébergeur.
Télécharger l'installateur
uid165116@od-12345:~$ wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
--2021-07-28 18:21:10-- https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
Resolving repo.anaconda.com (repo.anaconda.com)... 2606:4700::6810:8303, 2606:4700::6810:8203, 104.16.131.3, ...
Connecting to repo.anaconda.com (repo.anaconda.com)|2606:4700::6810:8303|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89026327 (85M) [application/x-sh]
Saving to: ‘Miniconda3-py37_4.10.3-Linux-x86_64.sh’
Miniconda3-py37_4.10.3-Linux-x86_64.sh 100% [==============================================>] 84.90M 203MB/s in 0.4s
18:21:11 (100 MB/s) - ‘Miniconda3-py37_4.10.3-Linux-x86_64.sh’ saved [89026327/89026327]
Contrôler le hash
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OK
Lancer l'installation
uid165116@od-12345:~$ bash Miniconda3-py37_4.10.3-Linux-x86_64.sh -b
PREFIX=/home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
added / updated specs:
- _libgcc_mutex==0.1=main
- _openmp_mutex==4.5=1_gnu
- brotlipy==0.7.0=py37h27cfd23_1003
- ca-certificates==2021.7.5=h06a4308_1
- certifi==2021.5.30=py37h06a4308_0
- cffi==1.14.6=py37h400218f_0
- chardet==4.0.0=py37h06a4308_1003
- conda-package-handling==1.7.3=py37h27cfd23_1
- conda==4.10.3=py37h06a4308_0
- cryptography==3.4.7=py37hd23ed53_0
- idna==2.10=pyhd3eb1b0_0
- ld_impl_linux-64==2.35.1=h7274673_9
- libffi==3.3=he6710b0_2
- libgcc-ng==9.3.0=h5101ec6_17
- libgomp==9.3.0=h5101ec6_17
- libstdcxx-ng==9.3.0=hd4cf53a_17
- ncurses==6.2=he6710b0_1
- openssl==1.1.1k=h27cfd23_0
- pip==21.1.3=py37h06a4308_0
- pycosat==0.6.3=py37h27cfd23_0
- pycparser==2.20=py_2
- pyopenssl==20.0.1=pyhd3eb1b0_1
- pysocks==1.7.1=py37_1
- python==3.7.10=h12debd9_4
- readline==8.1=h27cfd23_0
- requests==2.25.1=pyhd3eb1b0_0
- ruamel_yaml==0.15.100=py37h27cfd23_0
- setuptools==52.0.0=py37h06a4308_0
- six==1.16.0=pyhd3eb1b0_0
- sqlite==3.36.0=hc218d9a_0
- tk==8.6.10=hbc83047_0
- tqdm==4.61.2=pyhd3eb1b0_1
- urllib3==1.26.6=pyhd3eb1b0_1
- wheel==0.36.2=pyhd3eb1b0_0
- xz==5.2.5=h7b6447c_0
- yaml==0.2.5=h7b6447c_0
- zlib==1.2.11=h7b6447c_3
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
brotlipy pkgs/main/linux-64::brotlipy-0.7.0-py37h27cfd23_1003
ca-certificates pkgs/main/linux-64::ca-certificates-2021.7.5-h06a4308_1
certifi pkgs/main/linux-64::certifi-2021.5.30-py37h06a4308_0
cffi pkgs/main/linux-64::cffi-1.14.6-py37h400218f_0
chardet pkgs/main/linux-64::chardet-4.0.0-py37h06a4308_1003
conda pkgs/main/linux-64::conda-4.10.3-py37h06a4308_0
conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.7.3-py37h27cfd23_1
cryptography pkgs/main/linux-64::cryptography-3.4.7-py37hd23ed53_0
idna pkgs/main/noarch::idna-2.10-pyhd3eb1b0_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9
libffi pkgs/main/linux-64::libffi-3.3-he6710b0_2
libgcc-ng pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17
libgomp pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17
ncurses pkgs/main/linux-64::ncurses-6.2-he6710b0_1
openssl pkgs/main/linux-64::openssl-1.1.1k-h27cfd23_0
pip pkgs/main/linux-64::pip-21.1.3-py37h06a4308_0
pycosat pkgs/main/linux-64::pycosat-0.6.3-py37h27cfd23_0
pycparser pkgs/main/noarch::pycparser-2.20-py_2
pyopenssl pkgs/main/noarch::pyopenssl-20.0.1-pyhd3eb1b0_1
pysocks pkgs/main/linux-64::pysocks-1.7.1-py37_1
python pkgs/main/linux-64::python-3.7.10-h12debd9_4
readline pkgs/main/linux-64::readline-8.1-h27cfd23_0
requests pkgs/main/noarch::requests-2.25.1-pyhd3eb1b0_0
ruamel_yaml pkgs/main/linux-64::ruamel_yaml-0.15.100-py37h27cfd23_0
setuptools pkgs/main/linux-64::setuptools-52.0.0-py37h06a4308_0
six pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
sqlite pkgs/main/linux-64::sqlite-3.36.0-hc218d9a_0
tk pkgs/main/linux-64::tk-8.6.10-hbc83047_0
tqdm pkgs/main/noarch::tqdm-4.61.2-pyhd3eb1b0_1
urllib3 pkgs/main/noarch::urllib3-1.26.6-pyhd3eb1b0_1
wheel pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
xz pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
yaml pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
zlib pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
Preparing transaction: done
Executing transaction: done
installation finished.
Lancer conda
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)
Installer pymysql (par exemple)
(base) uid165116@od-12345:~$ python3 -V
Python 3.7.10
(base) uid165116@od-12345:~$ pip3 install pymysql --user
Collecting pymysql
Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
|████████████████████████████████| 43 kB 892 kB/s
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2
L'infrastructure Infomaniak ne transmet pas d'instructions de virtualisation aux VPS Cloud / VPS Lite ; il n'est donc pas possible de faire de la virtualisation imbriquée (virtualisation qui s'exécuterait à l'intérieur d'un environnement déjà virtualisé) car cela pose des problèmes notamment lors des migrations en direct.
Ce guide concerne la création de réseaux privés entre différentes offres d'hébergement Infomaniak comme VPS Cloud / VPS Lite, Public Cloud, NAS Synology, etc.
Créer un VLAN entre VPS
Il n'est pas possible de créer un réseau privé (VLAN) entre VPS Cloud / VPS Lite et d'autres produits, comme NAS Synology p.ex, car ils sont installés sur des réseaux distincts.
Cependant il est possible de créer un VLAN entre minimum 10 VPS Cloud / VPS Lite vous appartenant (contactez le support Infomaniak) cependant un réseau privé dédié ne pourra pas communiquer avec un autre.
Il est recommandé de migrer vers l'offre Public Cloud pour créer de tels réseaux privés entre VM.
Ce guide concerne l'installation d'extension PHP sur Hébergements Web Infomaniak.
Utilisation d'extensions PHP Zend
- Zend Guard Loader est une extension PHP qui permet d'exécuter des scripts PHP chiffrés via Zend Guard.
- Zend Guard Loader est installé de base pour PHP <= 5.6 sur tous les hébergements Web et n'est pas disponible pour les versions de PHP >= 5.6.
- Depuis PHP 5.3.x, le module Zend Optimizer a été remplacé par ZendGuardLoader
- L'extension ZendOPCache nécessite un Serveur Cloud configuré avec PHP 5.5 minimum
Afin d'utiliser des modules Perl
sur un Serveur Cloud Infomaniak, il est nécessaire de les installer dans l'arborescence utilisateur et d'en définir le chemin complet au sein des scripts.
Vous pourrez ainsi installer et mettre à jour librement vos modules.
Ce guide concerne Redis
, un module PHP pour Serveur Cloud Infomaniak.
Préambule
Redis
est utilisé avec PHP pour accélérer les performances en servant de cache pour des données temporaires et pour gérer les sessions utilisateur, améliorant ainsi l'efficacité des applications Web.Redis
permet également de mettre en place des systèmes de file d'attente et de stocker temporairement des données pour des tâches asynchrones ou des statistiques.
Installer Redis
Redis
s'installe depuis Fast Installer, les applications disponibles en quelques clics sur Serveur Cloud:
- Après installation,
Redis
est accessible via l'IP/portlocalhost:6379
ou127.0.0.1:6379
- Le mot de passe pour
Redis
doit faire entre 15 et 99 caractères (inclus).
Ce guide explique comment augmenter la valeur max_children
sur Serveur Cloud afin d'augmenter le nombre de processus PHP simultanés qui peuvent être utilisés par votre site. Cela sera très utile pour résoudre des problèmes de chargement infini des pages de votre site.
Préambule
- Par défaut sur tout hébergement, la limite de
max_children
est fixée à 20.- Bien qu'il soit possible d'augmenter cette valeur depuis le Manager Infomaniak, la limite de
max_children
est automatiquement ajustée en fonction de la configuration de votre Serveur Cloud. - Pour augmenter cette limite sur hébergement mutualisé, migrez sur Serveur Cloud.
- Bien qu'il soit possible d'augmenter cette valeur depuis le Manager Infomaniak, la limite de
- Pour comprendre comment calculer au plus juste les
max_children
nécessaires, prenez connaissance de cet article à ce sujet.
Augmenter la valeur max_children
Prérequis
- S'assurer que vous disposez des ressources nécessaires sur le serveur Cloud.
- S'assurer que l'ensemble des ressources du serveur Cloud ne soient pas utilisées ; s'il s'avère que celles-ci sont totalement utilisées, l'augmentation de la valeur
max_children
n'aura aucun effet (Modifier les ressources du Serveur Cloud). - Contrôler le monitoring des ressources de votre serveur, dans le cas où les ressources de votre serveur sont atteintes, il sera nécessaire de vérifier l'optimisation des processus et de votre site avant d'envisager d'augmenter la valeur
max_children
. - Consulter les rapports d'erreur PHP depuis le dossier
/ik-logs
(master process php logs - nom du fichier : php-fpm.log) pour vérifier si la limite "max_children
" a été dépassée... exemple d'erreur:[05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it
Pour accéder à la gestion des paramètres PHP / Apache du site dont il faut augmenter la valeur max_children
sur Serveur Cloud, prenez connaissance de cet autre guide.
Vous pourrez notamment…
- … choisir une nouvelle valeur de
max_children
:
N'oubliez pas d'enregistrer les changements en bas de page.
Limites en fonction du serveur
Limite des max_children
en fonction des ressources du Serveur Cloud:
Configuration Serveur Cloud | max_children |
---|---|
2 CPU / 6 Go RAM | 20 |
4 CPU / 12 Go RAM | 40 |
6 CPU / 18 Go RAM | 60 |
8 CPU / 24 Go RAM | 80 |
12 CPU / 36 Go RAM | 120 |
16 CPU / 48 Go RAM | 160 |
24 CPU / 72 Go RAM | 240 |
32 CPU / 96 ou 128 Go RAM | 320 |
Ce guide explique comment modifier les variables de l'extension PHP-CLI qui est disponible par défaut sur Serveur Cloud Infomaniak.
Modifier les variables PHP_CLI
Pour accéder aux extensions PHP du Serveur Cloud :
- Cliquez ici afin d'accéder à la gestion de votre Serveur Cloud sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au Serveur Cloud concerné.
- Cliquez sur Extensions PHP dans le menu latéral gauche.
- Cliquez sur le menu d'action ⋮ à droite de PHP-CLI dans le tableau qui s'affiche.
- Cliquez sur Configurer:
- Modifiez les variables suivantes :
allow_url_fopen
,allow_url_include
,memory_limit
,max_execution_time
,short_open_tag
,allow_local_infile
- Cliquez sur le bouton bleu Enregistrer.
Ce guide explique comment modifier la valeur de la directive php_value include_path
.
Modifier le include_path
Comme tout autre paramètre PHP, include_path est défini dans le fichier .user.ini.
Voici un exemple de chemin à utiliser dans le fichier .user.ini
:
include_path = .:/home/clients/123456789a12345b12fc345d/web/www.domainetest.abc/public/abc/include
Prenez connaissance de cet autre guide au sujet du phpinfo afin de vérifier la prise en compte de votre nouvelle directive.
Ce guide explique comment modifier la configuration d'un VPS Cloud / VPS Lite.
Modifier la taille de stockage sur VPS Cloud / VPS Lite
Pour accéder au VPS Cloud / VPS Lite :
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez sur le menu d'action ⋮ à droite de l'objet concerné dans le tableau qui s'affiche.
- Cliquez sur Modifier l'offre:
- Effectuez les ajustements souhaités et terminez la procédure en bas:
- Il est nécessaire d'étendre le volume après une augmentation du volume de stockage.
Ce guide explique comment autoriser certains ports entrants et/ou sortants dans le pare-feu (ou firewall) d'un serveur VPS Cloud / VPS Lite.
Accéder à l'outil de gestion
Pour gérer le pare-feu VPS Cloud / VPS Lite:
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné.
- Cliquez sur Firewall dans le menu latéral gauche:
Règle pour autoriser le ping sur VPS Cloud / VPS Lite
Pour ajouter une règle sur le pare-feu:
- Cliquez sur le bouton bleu pour Ajouter une règle.
- Cliquez sur Sélection manuelle.
- Sélectionnez ICMP:
- Validez en bas de page.
Ouvrir le port sortant 25 de façon globale
Le port sortant 25
(port SMTP Mail) est bloqué par défaut.
Il est recommandé d'utiliser une solution d'envoi mail authentifié.
Pour ouvrir ce port, contactez le support Infomaniak en justifiant votre demande.
Infomaniak ne propose pas de chiffrement de disque virtuel sur VPS Cloud / VPS Lite mais fournit un périphérique bloc que vous pouvez formater et chiffrer si vous le souhaitez.
Ce guide concerne le swap sur Serveur Cloud.
Swap et mémoire RAM
Il peut y avoir du swap alors que la consommation de RAM est faible. En effet le système peut utiliser le swap à tout moment s'il le juge utile.
Le swap n'est pas un espace mémoire dédié à être utilisé s'il n'y a pas de RAM libre, bien que ce soit souvent son utilisation principale.
Si vous souhaitez en savoir plus, il existe un paramètre "swappiness" qui permet de définir la manière dont le système utilisera le swap. La valeur par défaut est 60
et elle ne peut pas être modifiée.
Ce guide explique comment se connecter à Elasticsearch après l'avoir installé sur Magento depuis un Serveur Cloud Infomaniak.
Prérequis
- Posséder un Serveur Cloud Infomaniak.
- Installer Magento.
- Prendre contact avec le support Infomaniak pour l'installation d'Elasticsearch.
Informations de connexion
Une fois connecté à votre espace Magento, il sera nécessaire d'indiquer les informations suivantes pour démarrer Elasticsearch :
- Hostname :
localhost
ou127.0.0.1
- Port :
9200
- Préfixe :
magento2
⚠️ Pour de l'aide supplémentaire contactez un partenaire ou lancez gratuitement un appel d'offres — découvrez aussi le rôle de l'hébergeur.
Ce guide présente plusieurs exemples d'utilisation de Varnish sur Serveur Cloud Infomaniak.
⚠️ Pour de l'aide supplémentaire contactez un partenaire ou lancez gratuitement un appel d'offres — découvrez aussi le rôle de l'hébergeur.
Configuration de Varnish
Après installation, la configuration de Varnish inclut des règles importantes pour la mise en cache et le purging. Soyez attentif à ne pas autoriser accidentellement des adresses IP non souhaitées.
Voici à quoi pourrait ressembler un fichier de configuration de base avec quelques cas courants et différentes actions/règles dans un seul exemple:
vcl 4.0;
# Configuration du backend par défaut
backend default {
.host = "127.0.0.80"; # Adresse IP du backend
.port = "80"; # Port du backend
}
# Définition d'une liste de contrôle d'accès (ACL) pour les IPs autorisées à purger le cache
acl purge {
"localhost"; # IP locale
"1.2.3.4"; # IP de votre domicile
"42.42.42.0"/24; # Plage d'IP publique de votre entreprise
! "42.42.42.7"; # Exclusion d'une IP spécifique (ex : un collègue gênant)
}
# Traitement des requêtes à leur réception par Varnish
sub vcl_recv {
# Autoriser les requêtes de purge
if (req.method == "PURGE") {
# Vérification si l'IP du client est autorisée à purger
if (!client.ip ~ purge) { # 'purge' fait référence à l'ACL définie plus haut
# Retourne une page d'erreur si l'IP n'est pas autorisée
return (synth(405, "Cette IP n'est pas autorisée à envoyer des requêtes PURGE."));
}
# Si l'IP est autorisée, purger le cache pour cette requête
return (purge);
}
# Autoriser la purge de toutes les images via une requête PURGEALL
if (req.method == "PURGEALL" && req.url == "/images") {
if (!client.ip ~ purge) {
return (synth(405, "Cette IP n'est pas autorisée à envoyer des requêtes PURGE."));
}
# Invalider tous les objets en cache correspondant à des images
ban("req.url ~ \.(jpg|png|gif|svg)$");
return (synth(200, "Images purgées."));
}
# Ne pas mettre en cache les pages avec une autorisation (header Authorization)
if (req.http.Authorization) {
# Passer la requête directement au backend sans la mettre en cache
return (pass);
}
}
# Traitement de la réponse du backend avant de la renvoyer au client
sub vcl_backend_response {
# Mise en cache des images pour une durée de 1 jour
if (beresp.http.content-type ~ "image") {
set beresp.ttl = 1d;
}
# Si le backend indique que la réponse ne doit pas être mise en cache, respecter cette consigne
if (beresp.http.uncacheable) {
set beresp.uncacheable = true;
}
}
Purge à partir de l'interface CLI
À partir de là, les règles énoncées dans la configuration ci-dessus fonctionnent sur toutes les demandes, donc si le site configuré est "domain.xyz", vous pouvez simplement utiliser l'outil CLI "curl
" et faire ce qui suit:
# Envoyer une requête PURGE pour purger la page d'accueil de "domain.xyz"
$ curl -X PURGE https://domain.xyz/
# Réponse renvoyée par le serveur Varnish
<!DOCTYPE html>
<html>
<head>
<title>200 Purged</title>
</head>
<body>
<h1>Erreur 200 : Purge effectuée</h1>
<p>La page a été purgée avec succès.</p>
<h3>Guru Meditation:</h3>
<p>XID: 2</p>
<hr>
<p>Serveur de cache Varnish</p>
</body>
</html>
Et là, la page d'accueil a été purgée. Ou pour purger une autre URL, il suffit de faire pointer la requête vers cette dernière:
# Envoyer une requête PURGE pour purger un fichier spécifique à "domain.xyz"
$ curl -X PURGE https://domain.xyz/some_path/some_file.html
# Réponse renvoyée par le serveur Varnish
<!DOCTYPE html>
<html>
<head>
<title>200 Purged</title>
</head>
<body>
<h1>Erreur 200 : Purge effectuée</h1>
<p>Le fichier a été purgé avec succès.</p>
<h3>Guru Meditation:</h3>
<p>XID: 4</p>
<hr>
<p>Serveur de cache Varnish</p>
</body>
</html>
Ou, comme indiqué dans la configuration VCL, purger toutes les images:
# Envoyer une requête PURGEALL pour purger toutes les images dans "domain.xyz"
$ curl -X PURGEALL https://domain.xyz/images
# Réponse renvoyée par le serveur Varnish
<!DOCTYPE html>
<html>
<head>
<title>200 Purged images</title>
</head>
<body>
<h1>Erreur 200 : Images purgées</h1>
<p>Toutes les images ont été purgées avec succès.</p>
<h3>Guru Meditation:</h3>
<p>XID: 32770</p>
<hr>
<p>Serveur de cache Varnish</p>
</body>
</html>
Purge à partir d'un CMS
C'est un peu plus difficile d'illustrer ce cas car il existe de nombreuses façons de gérer la mise en cache depuis un backend. Dans l'exemple de configuration ci-dessus, un contrôle sur l'en-tête "Uncacheable
" est ajouté, qui désactive la mise en cache. Avec cette option, n'importe quel CMS pourrait simplement définir cet en-tête sur la réponse pour désactiver la mise en cache de cette requête par exemple.
A partir de n'importe quel code PHP et avec la configuration ci-dessus, vous pouvez simplement envoyer une requête HTTP et utiliser cet extrait pour effectuer un PURGE du cache:
<?php
if ($curl = curl_init("http://127.0.0.1/some_url")) {
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "PURGE",
CURLOPT_HTTPHEADER => [
"Host: {$_SERVER['HTTP_HOST']}"
]
]);
curl_exec($curl);
if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == 200) {
echo "Cache purged!";
}
curl_close($curl);
}
?>
En savoir plus
Liens utiles concernant le langage de configuration Varnish (VCL) pour contrôler le traitement des demandes, le routage, la mise en cache et plusieurs autres aspects:
Il n'est pas possible de commander et d'obtenir davantage d'adresses IP sur un VPS Cloud / VPS Lite.
Les alternatives possibles seraient d'utiliser…
- … un hébergement de type Public Cloud (il est possible d'y ajouter autant d'adresses IP que désiré),
- … l'outil Newsletter selon vos besoins.