Wissensdatenbank
1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Diese Anleitung bezieht sich auf die ODBC-Funktionen von PHP.
Die ODBC-Funktionen von PHP werden nur auf Serveur Cloud unterstützt.
Open Database Connectivity Funktionen
Dabei handelt es sich um Funktionen, die zur Interaktion mit Datenbanken über die ODBC-Schnittstelle (Open Database Connectivity) verwendet werden, einen Standard zum einheitlichen Zugriff auf Datenquellen. Hier sind einige Beispiele für die Verwendung der ODBC-Funktionen von PHP:
- Daten aus einer externen Datenbank lesen und auf Ihrer Website anzeigen
- Daten in eine externe Datenbank einfügen oder ändern
- Komplexe Abfragen an einer externen Datenbank durchführen
Dieser Leitfaden erklärt, wie man ohne das Modul PECL SSH2 client, das auf den Webhostings und Cloud-Servern von Infomaniak nicht verfügbar ist, arbeitet, indem man stattdessen die Bibliothek phpseclib verwendet, die in nativem PHP funktioniert und keine spezielle Erweiterung erfordert.
Vorwort
- Die Verwendung von
PECL SSH2 clientführt zu Fehlern wieNo compatible key exchange algorithms foundoderUnable to exchange encryption keysin der letzten verfügbaren Version. Phpseclibermöglicht:- Die SSH-Authentifizierung per Passwort oder privatem Schlüssel.
- Die Ausführung von Fernbefehlen.
- Den sicheren Dateitransfer (SFTP).
- Das Management von SSH-Schlüsseln.
phpseclib verwenden
Um eine SSH-Verbindung in ein PHP-Skript zu integrieren, verwenden Sie phpseclib wie folgt:
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 führt keine Sicherungen der VPS Cloud / VPS Lite durch.
Sie können jedoch…
- … ein Server-Snapshot erstellen (Sicherung nicht automatisiert)
- … den Server auf Swiss Backup sichern (Sicherung automatisiert)
Diese Anleitung betrifft die Installation von PHP-Erweiterungen auf Webhosting von Infomaniak.
Verwendung von PHP-Erweiterungen Zend
- Zend Guard Loader ist eine PHP-Erweiterung, die das Ausführen von PHP-Skripten ermöglicht, die mit Zend Guard verschlüsselt wurden.
- Zend Guard Loader ist standardmäßig für PHP <= 5.6 auf allen Webhostings installiert und ist nicht für PHP-Versionen >= 5.6 verfügbar.
- Seit PHP 5.3.x wurde das Modul Zend Optimizer durch ZendGuardLoader ersetzt
- Die Erweiterung ZendOPCache erfordert einen Cloud-Server, der mit PHP 5.5 konfiguriert ist
Diese Anleitung betrifft die Erstellung privater Netzwerke zwischen verschiedenen Hosting-Angeboten von Infomaniak wie VPS Cloud / VPS Lite, Public Cloud, NAS Synology, etc.
Ein VLAN zwischen VPS erstellen
Es ist nicht möglich, ein privates Netzwerk (VLAN) zwischen VPS Cloud / VPS Lite und anderen Produkten, wie z.B. NAS Synology, zu erstellen, da sie auf verschiedenen Netzwerken installiert sind.
Es ist jedoch möglich, ein VLAN zwischen mindestens 10 VPS Cloud / VPS Lite zu erstellen, die Ihnen gehören (kontaktieren Sie den Infomaniak-Support), jedoch kann ein dediziertes privates Netzwerk nicht mit einem anderen kommunizieren.
Es wird empfohlen, auf das Angebot Public Cloud zu migrieren, um solche privaten Netzwerke zwischen VMs zu erstellen.
Dieser Leitfaden hilft Ihnen, wenn Sie beispielsweise ein Paket wie pymysql bereitstellen möchten und dieses eine Python-Version benötigt, die höher ist als die auf Ihrem Hosting angebotene.
Vorwort
- Anaconda ist eine kostenlose und Open-Source-Distribution der Programmiersprache Python. Diese Distribution zielt darauf ab, die Verwaltung von Paketen und die Bereitstellung zu vereinfachen.
- Es wird empfohlen, conda zu verwenden, das mit einer aktuellen Version von Python geliefert wird und im Benutzerbereich installiert wird, sodass es keine Konflikte mit dem System-Python gibt (wie in einer virtuellen Umgebung, die immer eine Systeminstallation der gewünschten Version erfordert).
- Nehmen Sie die offizielle Dokumentation zur Kenntnis.
⚠️ Für zusätzliche Hilfe kontaktieren Sie einen Partner oder starten Sie eine kostenlose Ausschreibung — erfahren Sie auch mehr über die Rolle des Hosting-Anbieters.
Installationsprogramm herunterladen
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]Hash überprüfen
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OKInstallation starten
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/miniconda3added / 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_3The 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_3Preparing transaction: done
Executing transaction: done
installation finished.Conda starten
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)pymysql installieren (z.B.)
(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
Diese Anleitung erklärt, wie Sie eine Datei angeben, die vor der gewünschten Seite oder zu Beginn jedes auf Ihrem Server ausgeführten PHP-Skripts geladen wird, als ob sie mit der Funktion require() aufgerufen worden wäre, jedoch globaler mit der PHP-Direktive auto_prepend_file.
Vorwort
- Um beispielsweise die Header einer Website zu deklarieren, können Sie eine Datei
headers.phperstellen, die PHP-Funktionenheader()enthält und die am Anfang jeder PHP-Datei prepend wird…- … über eine Datei
.user.ini(ordnerspezifisch), - … oder über die Konfiguration der Website im Manager (global), wie unten beschrieben.
- … über eine Datei
Eine Datei global vom Manager aus einbinden
Um auf die Verwaltung der Website zuzugreifen:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie direkt auf den Namen des betreffenden Produkts:
- Klicken Sie auf Verwalten unter Erweiterte Einstellungen:

- Klicken Sie auf die Registerkarte PHP / Apache.
- Vervollständigen Sie die betreffende Zeile, indem Sie den Pfad der einzubindenden Datei eingeben.
- Klicken Sie auf die Schaltfläche zum Speichern:

Nachdem Sie diese Direktive definiert haben, werden alle PHP-Seiten auf Ihrem Server automatisch die angegebene Datei einbinden, bevor sie ihren eigenen Code ausführen.
Die in einer Datei .htaccess definierten Header gelten nur für nicht-PHP-Inhalte (also statische).
Infomaniak verwendet php-fpm, das die verschiedenen Header über apache fast_cgi erhält. In der RFC von cgi_www ist der Header Strict-Transport-Security nicht Teil der über CGI übermittelten Header, und die Apache-Dokumentation bestätigt dies. Nehmen Sie Kenntnis von dieser anderen RFC.
⚠️ Für zusätzliche Hilfe kontaktieren Sie einen Partner oder starten Sie kostenlos eine Ausschreibung — erfahren Sie auch mehr über die Rolle des Hosters.
Die Infrastruktur von Infomaniak überträgt keine Virtualisierungsanweisungen an VPS Cloud / VPS Lite; es ist daher nicht möglich, verschachtelte Virtualisierung (Virtualisierung, die innerhalb einer bereits virtualisierten Umgebung ausgeführt würde) durchzuführen, da dies insbesondere bei Live-Migrationen zu Problemen führt.
Um Perl-Module auf einem Infomaniak Cloud-Server zu verwenden, müssen sie im Benutzerverzeichnis installiert und der vollständige Pfad in den Skripten definiert werden.
Sie können Ihre Module somit frei installieren und aktualisieren.
Diese Anleitung bezieht sich auf Redis, ein PHP-Modul für Serveur Cloud Infomaniak.
Vorbemerkung
Rediswird mit PHP verwendet, um die Leistung zu beschleunigen, indem es als Cache für temporäre Daten dient und Benutzersitzungen verwaltet, wodurch die Effizienz von Webanwendungen verbessert wird.Redisermöglicht auch die Einrichtung von Warteschlangensystemen und die temporäre Speicherung von Daten für asynchrone Aufgaben oder Statistiken.
Redis installieren
Redis wird über Fast Installer installiert, die Anwendungen sind in wenigen Klicks auf Serveur Cloud verfügbar:
- Nach der Installation ist
Redisüber die IP/den Portlocalhost:6379oder127.0.0.1:6379erreichbar - Das Passwort für
Redismuss zwischen 15 und 99 Zeichen (einschließlich) lang sein.
Dieser Leitfaden erklärt, wie Sie den Wert max_children auf einem Cloud-Server erhöhen, um die Anzahl der gleichzeitig verwendbaren PHP-Prozesse für Ihre Website zu erhöhen. Dies ist sehr nützlich, um Probleme mit dem endlosen Laden von Seiten Ihrer Website zu beheben.
Vorwort
- Standardmäßig ist die Grenze von
max_childrenauf allen Hostings auf 20 festgelegt.- Obwohl es möglich ist, diesen Wert über den Infomaniak-Manager zu erhöhen, wird die Grenze von
max_childrenautomatisch an die Konfiguration Ihres Cloud-Servers angepasst. - Um diese Grenze auf einem Shared Hosting zu erhöhen, migrieren Sie zu einem Cloud-Server.
- Obwohl es möglich ist, diesen Wert über den Infomaniak-Manager zu erhöhen, wird die Grenze von
- Um zu verstehen, wie Sie die benötigten
max_childrengenau berechnen, lesen Sie diesen Artikel zu diesem Thema.
Erhöhung des Wertes max_children
Voraussetzungen
- Stellen Sie sicher, dass Sie über die notwendigen Ressourcen auf dem Cloud-Server verfügen.
- Stellen Sie sicher, dass nicht alle Ressourcen des Cloud-Servers genutzt werden; wenn diese vollständig genutzt werden, hat die Erhöhung des Wertes
max_childrenkeine Wirkung (Ressourcen des Cloud-Servers ändern). - Überwachen Sie die Ressourcen Ihres Servers, falls die Ressourcen Ihres Servers ausgeschöpft sind, müssen Sie die Optimierung der Prozesse und Ihrer Website überprüfen, bevor Sie den Wert
max_childrenerhöhen. - Überprüfen Sie die PHP-Fehlerberichte im Ordner
/ik-logs(Master-Prozess-PHP-Protokolle - Dateiname: php-fpm.log), um zu überprüfen, ob die Grenze "max_children" überschritten wurde... Beispiel für einen Fehler:[05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it
Um auf die Verwaltung der PHP/Apache-Parameter der Website zuzugreifen, für die der Wert max_children auf einem Cloud-Server erhöht werden soll, lesen Sie diesen anderen Leitfaden.
Sie können insbesondere...
- … einen neuen Wert für
max_childrenauswählen:
Vergessen Sie nicht, die Änderungen am Ende der Seite zu speichern.
Grenzen je nach Server
Grenzen der max_children je nach Ressourcen des Cloud-Servers:
| Konfiguration Cloud-Server | max_children |
|---|---|
| 2 CPU / 6 GB RAM | 20 |
| 4 CPU / 12 GB RAM | 40 |
| 6 CPU / 18 GB RAM | 60 |
| 8 CPU / 24 GB RAM | 80 |
| 12 CPU / 36 GB RAM | 120 |
| 16 CPU / 48 GB RAM | 160 |
| 24 CPU / 72 GB RAM | 240 |
| 32 CPU / 96 oder 128 GB RAM | 320 |
Diese Anleitung erklärt, wie Sie die Variablen der PHP-CLI-Erweiterung ändern, die standardmäßig auf dem Infomaniak Cloud-Server verfügbar ist.
PHP-CLI-Variablen ändern
Um auf die PHP-Erweiterungen des Cloud-Servers zuzugreifen:
- Hier klicken, um auf die Verwaltung Ihres Cloud-Servers im Infomaniak Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie direkt auf den Namen des betreffenden Cloud-Servers.
- Klicken Sie im linken Seitenmenü auf PHP-Erweiterungen.
- Klicken Sie auf das Aktionsmenü ⋮ rechts neben PHP-CLI in der angezeigten Tabelle.
- Klicken Sie auf Konfigurieren:

- Ändern Sie die folgenden Variablen:
allow_url_fopen,allow_url_include,memory_limit,max_execution_time,short_open_tag,allow_local_infile - Klicken Sie auf die blaue Schaltfläche Speichern.
Diese Anleitung erklärt, wie Sie den Wert der Direktive php_value include_path ändern.
Include_path ändern
Wie jeder andere PHP-Parameter wird include_path in der Datei .user.ini definiert.
Hier ist ein Beispiel für einen Pfad, der in der Datei .user.ini verwendet werden kann:
include_path = .:/home/clients/123456789a12345b12fc345d/web/www.domainetest.abc/public/abc/includeNehmen Sie sich diese weitere Anleitung zum Thema phpinfo zu Hilfe, um zu überprüfen, ob Ihre neue Direktive berücksichtigt wird.
Diese Anleitung erklärt, wie bestimmte eingehende und/oder ausgehende Ports in der Firewall (oder Firewall) eines Servers VPS Cloud / VPS Lite freigegeben werden.
Auf das Verwaltungstool zugreifen
Um die Firewall von VPS Cloud / VPS Lite zu verwalten:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Hilfe benötigen?).
- Klicken Sie direkt auf den Namen des betreffenden Produkts.
- Klicken Sie auf Firewall im linken Seitenmenü:

Regel zum Zulassen von Ping auf VPS Cloud / VPS Lite
Um eine Regel für die Firewall hinzuzufügen:
- Klicken Sie auf die blaue Schaltfläche, um eine Regel hinzuzufügen.
- Klicken Sie auf Manuelle Auswahl.
- Wählen Sie ICMP aus:

- Bestätigen Sie unten auf der Seite.
Globale Ausgangsport 25 öffnen
Der ausgehende Port 25 (SMTP-Mail-Port) ist standardmäßig gesperrt.
Es wird empfohlen, eine Lösung für den authentifizierten Versand zu verwenden.
Um diesen Port zu öffnen, kontaktieren Sie den Infomaniak-Support und begründen Sie Ihre Anfrage.
Diese Anleitung erklärt, wie Sie die Konfiguration eines VPS Cloud / VPS Lite ändern.
Konfigurationsänderungen (CPU/RAM) oder Speicher machen den Dienst für etwa 20 Minuten unzugänglich.
Speichergröße auf VPS Cloud / VPS Lite ändern
Um auf VPS Cloud / VPS Lite zuzugreifen:
- Hier klicken, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie auf das Aktionsmenü ⋮ rechts neben dem betreffenden Objekt in der angezeigten Tabelle.
- Klicken Sie auf Angebot ändern:

- Führen Sie die gewünschten Anpassungen aus den Shop-Vorschlägen durch und beenden Sie das Verfahren unten:

- Es ist notwendig, das Volumen nach einer Erhöhung des Speichervolumens zuerweitern.
Infomaniak bietet keine Verschlüsselung der virtuellen Festplatte für VPS Cloud / VPS Lite, stellt aber ein Blockgerät bereit, das Sie formatieren und verschlüsseln können, wenn Sie möchten.
Diese Anleitung bezieht sich auf das Swappen auf einem Cloud-Server.
Swap und RAM-Speicher
Es kann Swap geben, obwohl der RAM-Verbrauch gering ist. Tatsächlich kann das System den Swap jederzeit verwenden, wenn es dies für nützlich hält.
Der Swap ist kein Speicherbereich, der nur dann verwendet wird, wenn kein RAM frei ist, obwohl dies oft seine Hauptanwendung ist.
Wenn Sie mehr erfahren möchten, gibt es einen Parameter "swappiness", der es ermöglicht, die Art und Weise zu definieren, wie das System den Swap verwendet. Der Standardwert ist 60 und er kann nicht geändert werden.
Diese Anleitung erklärt, wie Sie sich nach der Installation auf einem Infomaniak Cloud-Server mit Elasticsearch verbinden.
Voraussetzungen
- Besitzen Sie einen Infomaniak Cloud-Server.
- Installieren Magento.
- Kontaktieren Sie den Infomaniak-Support für die Installation von Elasticsearch.
Anmeldeinformationen
Sobald Sie sich bei Ihrem Magento-Bereich angemeldet haben, müssen Sie die folgenden Informationen angeben, um Elasticsearch zu starten:
- Hostname:
localhostoder127.0.0.1 - Port:
9200 - Präfix:
magento2
⚠️ Für weitere Hilfe kontaktieren Sie einen Partner oder stellen Sie kostenlos eine Ausschreibung ein — erfahren Sie auch mehr über die Rolle des Hosters.
Es ist nicht möglich, auf einem VPS Cloud / VPS Lite mehr IP-Adressen zu bestellen und zu erhalten.
Die möglichen Alternativen wären, …
- … eine Hosting-Lösung vom Typ Public Cloud (es ist möglich, so viele IP-Adressen hinzuzufügen, wie gewünscht),
- … das Tool Newsletter nach Bedarf.
Dieser Leitfaden stellt mehrere Beispiele für die Verwendung von Varnish auf Serveur Cloud Infomaniak vor.
⚠️ Für zusätzliche Hilfe kontaktieren Sie einen Partner oder starten Sie kostenlos eine Ausschreibung — erfahren Sie auch mehr über die Rolle des Hosters.
Varnish-Konfiguration
Nach der Installation umfasst die Konfiguration von Varnish wichtige Regeln für das Caching und das Purging. Achten Sie darauf, keine unerwünschten IP-Adressen versehentlich zu autorisieren.
Hier ist ein Beispiel für eine grundlegende Konfigurationsdatei mit einigen häufigen Fällen und verschiedenen Aktionen/Regeln in einem einzigen Beispiel:
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 von der CLI-Schnittstelle
Ab diesem Punkt gelten die in der obigen Konfiguration festgelegten Regeln für alle Anfragen. Wenn die konfigurierte Website "domain.xyz" ist, können Sie einfach das CLI-Tool "curl" verwenden und folgendes tun:
# 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>Und dort wurde die Startseite geleert. Oder um eine andere URL zu leeren, zeigen Sie einfach die Anfrage auf diese:
# 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>Oder, wie in der VCL-Konfiguration angegeben, alle Bilder löschen:
# 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 von einem CMS
Dies ist ein bisschen schwieriger zu veranschaulichen, da es viele Möglichkeiten gibt, die Caching-Verwaltung von einem Backend aus zu steuern. Im obigen Konfigurationsbeispiel wird eine Kontrolle über den Header "Uncacheable" hinzugefügt, die das Caching deaktiviert. Mit dieser Option könnte jedes CMS einfach diesen Header in der Antwort festlegen, um das Caching dieser Anfrage zu deaktivieren, z.B.
Von jedem PHP-Code aus und mit der obigen Konfiguration können Sie einfach eine HTTP-Anfrage senden und diesen Ausschnitt verwenden, um einen PURGE des Caches durchzuführen:
<?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);
}
?>Mehr erfahren
Nützliche Links zum Konfigurationssprache Varnish (VCL) zur Steuerung der Anforderungsverarbeitung, des Routings, der Caching und mehrere andere Aspekte: