Wissensdatenbank
1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Dieser Leitfaden bezieht sich auf das Apache-Modul mod_auth_mysql
, das die Authentifizierung von Benutzern und die Zugriffsberechtigung über eine MySQL-Datenbank ermöglicht.
Bei einem Shared Hosting
Das Modul mod_auth_mysql
ist nicht verfügbar bei den Shared-Hosting-Angeboten; es muss ein Serveur Cloud in Betracht gezogen werden oder PHP-Skripte und Sessions verwendet werden.
Diese Anleitung erklärt, wie man bei Infomaniak auf InnoDB zugreift.
Den MySQL-Speichermotor InnoDB verwenden
Sobald Ihr Infomaniak-Hosting Ihnen Zugriff auf MySQL-/MariaDB-Datenbanken gewährt, ist InnoDB gleichzeitig verfügbar (früher MyISAM).
InnoDB bietet erweiterte Funktionen wie ACID-Transaktionen, Zeilenebene-Sperren, Volltextindizes usw. Sie können diese Funktionen nutzen, indem Sie geeignete SQL-Anweisungen in Ihren Abfragen verwenden.
Der Zugriff auf die Systembefehle who
und users
ist für LDAP-Benutzer auf allen Infomaniak-Servern verboten.
Dieser Leitfaden betrifft YAZ, eine Softwarebibliothek, die zur Implementierung des Z39.50
-Protokolls verwendet wird, ein Informationssuch- und -abrufprotokoll, das die Kommunikation zwischen verschiedenen Bibliotheksmanagementsystemen (BMS) wie PMB ermöglicht, das in Frankreich weit verbreitet ist.
Infomaniak für ein effektives Bibliotheksmanagement
Auf den Webhostings von Infomaniak wird PMB unterstützt und YAZ standardmäßig aktiviert.
Sollten Sie jedoch Fehler wie Call to undefined function yaz_connect()
erhalten, müssen Sie Ports über den Manager öffnen. Der Port 210
ist der Standardport, der für die Z39.50
-Kommunikation verwendet wird, zögern Sie jedoch nicht, die Dokumentation Ihrer Anwendungen zu konsultieren.
Für die alten Infomaniak-Hosting-Tarife sollte ein Angebotswechsel in Betracht gezogen werden.
Dieser Leitfaden hilft Ihnen beispielsweise, wenn Sie ein Paket wie pymysql
bereitstellen möchten und dieses eine höhere Python-Version als die auf Ihrem Hosting angebotene erfordert.
Vorbemerkung
- Anaconda ist eine freie und Open-Source-Distribution der Programmiersprache Python. Diese Distribution zielt darauf ab, die Verwaltung von Paketen und den Einsatz zu vereinfachen.
- Es wird empfohlen, conda zu verwenden, das mit einer aktuellen Version von Python geliefert wird und sich im Benutzerbereich installiert, sodass es zu keinen Konflikten mit dem System-Python kommt (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 kostenlos eine Ausschreibung — erfahren Sie auch mehr über die Rolle des Hosters.
Installer 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]
Die Prüfsumme überprüfen
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OK
Installation 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/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.
Conda starten
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)
pymysql installieren (zum Beispiel)
(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 wurde, aber globaler mit der PHP-Direktive auto_prepend_file
.
Vorbemerkung
- Um beispielsweise die Header einer Website zu deklarieren, können Sie eine Datei
headers.php
erstellen, die PHP-Funktionenheader()
enthält und die am Anfang jeder PHP-Datei eingefügt 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ötigen?).
- Klicken Sie direkt auf den Name des betreffenden Produkts:
- Klicken Sie auf Verwalten unter Erweiterte Einstellungen:
- Klicken Sie auf die Registerkarte PHP / Apache.
- Füllen Sie die betreffende Zeile aus, indem Sie den Pfad zur einzufügenden Datei eingeben.
- Klicken Sie auf die Schaltfläche zum Speichern:
Nach der Definition dieser Direktive 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 Inhalte).
Infomaniak verwendet php-fpm
, das die verschiedenen Header über apache fast_cgi
empfängt. In der RFC von cgi_www gehört der Header Strict-Transport-Security
nicht zu den über CGI übermittelten Headern, und die Apache-Dokumentation bestätigt dies. Nehmen Sie sich diese andere RFC zur Kenntnis.
⚠️ Für zusätzliche Hilfe kontaktieren Sie einen Partner oder starten Sie kostenlos eine Ausschreibung — erfahren Sie auch die Rolle des Hosters.
Diese Anleitung bezieht sich auf die Installation von PHP-Erweiterungen für Webhosting Infomaniak.
Verwendung von Zend PHP-Erweiterungen
- Zend Guard Loader ist eine PHP-Erweiterung, die es ermöglicht, über Zend Guard verschlüsselte PHP-Skripte auszuführen.
- Zend Guard Loader ist standardmäßig für PHP <= 5.6 auf allen Webhostings installiert und für PHP-Versionen >= 5.6 nicht verfügbar.
- Seit PHP 5.3.x wurde das Modul Zend Optimizer durch ZendGuardLoader ersetzt
- Das ZendOPCache Modul erfordert einen Serveur Cloud konfiguriert mit PHP 5.5 mindestens
Diese Anleitung erklärt, wie Sie den Wert max_children
auf dem Serveur Cloud 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.
Vorbemerkung
- Standardmäßig ist die Grenze für
max_children
auf allen Hostings auf 20 festgelegt.- Obwohl es möglich ist, diesen Wert über den Infomaniak Manager zu erhöhen, wird die Grenze für
max_children
automatisch basierend auf der Konfiguration Ihres Serveur Cloud angepasst. - Um diese Grenze auf einem Shared Hosting zu erhöhen, migrieren Sie zu Serveur Cloud.
- Obwohl es möglich ist, diesen Wert über den Infomaniak Manager zu erhöhen, wird die Grenze für
- Um zu verstehen, wie man die benötigten
max_children
genau berechnet, lesen Sie diesen Artikel.
Die max_children-Wert erhöhen
Voraussetzungen
- Stellen Sie sicher, dass Sie über die erforderlichen Ressourcen auf dem Cloud-Server verfügen.
- Stellen Sie sicher, dass nicht alle Ressourcen des Cloud-Servers genutzt werden; wenn dies der Fall ist, hat die Erhöhung des Wertes
max_children
keine Wirkung (Ressourcen des Cloud-Servers ändern). - Überwachen Sie die Ressourcen Ihres Servers, falls die Ressourcen Ihres Servers erschöpft sind, müssen Sie die Optimierung der Prozesse und Ihrer Website überprüfen, bevor Sie die Erhöhung des Wertes
max_children
in Betracht ziehen. - Überprüfen Sie die PHP-Fehlerberichte im Verzeichnis
/ik-logs
(Master-Prozess-PHP-Protokolle - Dateiname: php-fpm.log), um zu überprüfen, ob die Grenze fürmax_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 Serveur Cloud erhöht werden muss, lesen Sie diese Anleitung.
Sie können insbesondere…
- … einen neuen Wert für
max_children
auswählen:
Vergessen Sie nicht, die Änderungen unten auf der Seite zu speichern.
Grenzen je nach Server
Grenze der max_children
je nach Ressourcen des Serveur Cloud:
Server Cloud Konfiguration | 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 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 festgelegt.
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/include
Nehmen Sie diese Anleitung zur Kenntnis, um zu überprüfen, ob Ihre neue Direktive berücksichtigt wird.
Das Apache-Modul mod_userdir
ist nicht verfügbar.
Diese Anleitung richtet sich an Sie, weil Sie sich für Infomaniak als Hosting-Anbieter entschieden haben (oder dies tun werden). Diese Entscheidung ist nicht ohne Bedeutung. Sie sind umweltbewusst und möchten so viel wie möglich tun, um den CO2-Fußabdruck im Internet zu reduzieren.
Infomaniak bedankt sich bereits jetzt dafür, dass Sie diesen Hoster, der sich um den Planeten kümmert gewählt haben und die untenstehenden Möglichkeiten erkunden, um in der ökologischen Gestaltung Ihrer Webumgebung voranzukommen.
Warum handeln?
Websites consume energy to function, and the use of the Internet is one of the main causes of the increase in greenhouse gas emissions.
Neben der Wahl eines ethischen Hosting-Anbieters, der erneuerbare Energiequellen für seine Server nutzt, können Sie auch dazu beitragen, diese Emissionen zu verringern, indem Sie umweltfreundliche Praktiken bei der Gestaltung und Verwaltung Ihrer Websites und Mail-Dienste anwenden.
Wie kann man handeln?
Wie oben erwähnt, handelt Infomaniak auf verschiedenen Ebenen, einschließlich des Support-Teams: Es wird Sie bei der Auswahl von Dienstleistungen unterstützen, die Ihren Bedürfnissen entsprechen und gleichzeitig die Umwelt schützen. Es sammelt Ihr Feedback, um unsere Praktiken zu optimieren und sich von Ihren Erfahrungen inspirieren zu lassen, und kommuniziert die Umweltfragen im Bereich Hosting, um gute digitale Praktiken zu fördern.
Auf Ihrer Ebene gibt es mehrere Möglichkeiten, Ihren CO2-Fußabdruck im Internet zu reduzieren:
Den Energieverbrauch minimieren
Um den Energieverbrauch der Server und der Benutzercomputer zu reduzieren: Optimieren Sie Bilder, verwenden Sie Web-Schriftarten, verwenden Sie minimierte Skripte und Datendekompressionstechnologien. Einfache Designs können helfen, den Bandbreitenbedarf zu reduzieren.
Bieten Sie Optionen an, um den Datenverbrauch zu reduzieren, indem Sie Bilder mit niedrigerer Qualität verwenden oder Videos in verschiedenen Qualitäten zum Streaming anbieten, um Tracker und Werbung zu deaktivieren, die viel Daten verbrauchen.
Für gute Praktiken, die sich an WordPress richten, besuchen Sie die GreenIT-Karten.
Nachhaltige Technologien nutzen
Nachhaltige Technologien wie HTML5, CSS3 und JavaScript sind umweltfreundlicher.
Nachhaltigkeit fördern
Sensibilisieren Sie die Benutzer für die Umweltauswirkungen der Internet-Technologien und laden Sie sie ein, umweltverantwortliche Praktiken zu übernehmen. Inklusive der Lösung WordPress.
Und was ist mit der E-Mail-Kommunikation?
Die gleichen Reflexe können bei Ihrer E-Mail-Kommunikation angewendet werden:
- Verwenden Sie eine umweltfreundliche Signatur, die die Empfänger dazu einlädt, ihren ökologischen Fußabdruck zu verringern, indem sie umweltfreundliche Technologien nutzen oder umweltfreundliche Praktiken anwenden…
- Verwenden Sie umweltfreundliche E-Mail-Management-Tools, die erneuerbare Energiequellen nutzen und umweltfreundliche Richtlinien zur Energieverbrauch haben…
- Verwenden Sie E-Mails im Klartextformat anstelle von HTML-E-Mails, da HTML-E-Mails in der Regel mehr Energie zum Anzeigen verbrauchen…
- Anlagen im PDF-Format anstatt schwererer Formate verwenden…
- Abmeldemöglichkeiten nutzen, um unerwünschte E-Mails zu vermeiden…
- Verwenden Sie Tracking-Tools, um herauszufinden, wie viele Personen Ihre E-Mails öffnen und um zu wissen, ob Sie zu viele oder zu wenige senden…
All diese Maßnahmen können schrittweise umgesetzt und an die jeweilige Website angepasst werden. Es gibt keine einzige Lösung.
Überwachen Sie regelmäßig die Energieverbrauchsstatistiken, um die ökologische Leistung der Website kontinuierlich zu verbessern. Infomaniak wird in Zukunft Tools in dieser Richtung anbieten, aber bis dahin können Sie https://greenframe.io verwenden.
Das Schreiben in die Verzeichnisse /etc
und /lib
ist aus Sicherheitsgründen deaktiviert.
Diese Anleitung stellt die verschiedenen Aktionen vor, die an einer MySQL-Tabelle in Abhängigkeit von den einem Benutzer gewährten Rechten möglich sind.
Aktionen an Tabellen je nach Benutzerrechten…
… auf Webhosting mit gemeinsam genutzter Infrastruktur
Lese + Schreib + Admin
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW
Lese + Schreib
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLE
Lesezugriff
GRANT SELECT
… auf Cloud-Server
Lese + Schreib + Admin
GRANT ALL
Lese + Schreib
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLES
Lesezugriff
GRANT SELECT
Diese Anleitung richtet sich an Personen, die mit der Abstraktionsebene Propel arbeiten möchten (die sich auf eine Schlüsselkomponente der Propel-Bibliothek bezieht, ein ORM (Object-Relational Mapping) für PHP).
Vorwort
- Das ORM (Object-Relational Mapping) ermöglicht es, die Objekte einer Anwendung mit den Tabellen einer relationalen Datenbank zu verknüpfen. Anstatt SQL zu schreiben, werden die Daten über Objekte manipuliert.
- Propel, eine Abstraktionsebene in PHP, erleichtert die Erstellung, Manipulation und Abfrage von Objekten, ohne sich um die SQL-Details kümmern zu müssen. Sie ermöglicht das Verwalten von Beziehungen, Joins und Paginierung und verbessert gleichzeitig die Lesbarkeit und Wartbarkeit des Codes.
Besonderheiten & Einschränkungen
- Propel ist nicht standardmäßig als Pear-Paket installiert; das bedeutet, dass Sie es manuell auf Ihrem Server installieren müssen.
- Die Version "Conventionnal Package" von Propel kann installiert werden; laden Sie diese spezifische Version herunter und installieren Sie sie ordnungsgemäß.
- Da die Propel-Befehlszeilen (
propel-gen
z.B.) nicht zugänglich sind, können Sie diese nicht direkt verwenden. - Das bedeutet, dass Propel nur in der Produktion verwendet werden kann, nachdem Sie die erforderlichen Klassen und Dateien lokal oder in einer anderen Entwicklungsumgebung erstellt haben.
- Alle Manipulationen und Codegenerierungen müssen anderswo durchgeführt werden, bevor die resultierenden Dateien in Ihre Produktionsumgebung übertragen werden.
Abhängigkeiten
- Alle notwendigen Abhängigkeiten für die Verwendung von Propel sind verfügbar, außer Phing.
- Phing ist für die Produktion nicht erforderlich, daher sollte das kein Problem darstellen.
- Stellen Sie sicher, dass alle anderen erforderlichen Abhängigkeiten für Propel korrekt installiert sind.
Dieser Leitfaden stellt Ihnen die offenen Ports zur Verfügung, die für Node.js-Sites (nur) bei Infomaniak gehostet werden.
Ausgehende offene Ports
Web
- HTTP (tcp/80)
- Alternatives HTTP (tcp/8080)
- HTTPS (tcp/443)
- FTP-Daten (tcp/20)
- FTP-Steuerung (tcp/21)
- POP3 (tcp/110)
- IMAP (tcp/143)
- SMTP-Einreichung (+ STARTTLS) (tcp/587)
- SMTPS (tcp/465)
- IMAPS (tcp/993)
- POP3S (tcp/995)
DB
- MySQL (tcp/3306)
- MongoDB (tcp/27017)
- PostgreSQL (tcp/5432)
- Redis (tcp/6379)
- Redis TLS (tcp/6380)
- ElasticSearch (tcp/9200)
Divers
- SSH (tcp/22)
- Git pack transfer (tcp/9418)
Ports ouverts en entrée
- HTTP (tcp/80)
- HTTPS (tcp/443)
- SSH (tcp/22)
Dieser Leitfaden begleitet Sie bei der Installation von Ghost auf Infomaniak, einer idealen Plattform für Blogs (regelmäßiges Schreiben, redaktionelles Format) und inhaltszentrierte Publikationswebsites wie Substack oder Medium.
Basierend auf Node.js und unter Verwendung von Markdown für die Erstellung, zeichnet sich Ghost durch seine Leichtigkeit aus, während WordPress, obwohl flexibler und universeller, schwerfälliger ist.
Für zusätzliche Hilfe kontaktieren Sie einen Partner oder starten Sie kostenlos eine Ausschreibung — erfahren Sie auch mehr über die Rolle des Hosters.
Voraussetzungen
- Ein leeres Node.js-Website auf einer Infomaniak Webhosting installiert haben.
- Erstellen Sie einen SSH-Zugang.
- Erstellen Sie eine Datenbank.
- Über einen gültigen und funktionierenden E-Mail-Account verfügen (insbesondere die Funktion „Passwort vergessen“).
Ghost-Installation
Dazu:
- Melden Sie sich per SSH auf dem Server an (Hilfe benötigt?).
- Navigieren Sie in das Verzeichnis der Website, indem Sie den Befehl „cd pfad-zur-website“ ausführen (z. B.
cd sites/ghost.domain.xyz
). Geben Sie den folgenden Befehl ein:
npx -p ghost-cli ghost install --check-empty=false
und geben Sie die angeforderten Informationen ein (Datenbank-Hostname, Webseite-URL, etc.).
Bearbeiten Sie die Datei
config.production.json
, um die Port- und Host-Einstellungen zu aktualisieren:"server": { "port": 3000, "host": "0.0.0.0" },
Geben Sie auch die Informationen zur E-Mail-Konfiguration an:
"mail": { "transport": "SMTP", "options": { "service": "Infomaniak", "host": "mail.infomaniak.com", "port": 465, "auth": { "user": "<<email_username>>", "pass": "<<email_password>>" } }, "from": "<<email_address>>" },
Node.js-Konfiguration
Um die Anwendung auszuführen, gehen Sie zum Node.js-Dashboard:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Brauchen Sie Hilfe?).
- Klicken Sie direkt auf den Name, der dem betreffenden Produkt zugeordnet ist.
- Klicken Sie auf Verwalten unter Erweiterte Einstellungen:
- Klicken Sie auf die Registerkarte Node.js, um auf die Einstellungen zuzugreifen:
In das Feld Ausführungsbefehl geben Sie ein:
npx -p ghost-cli ghost run
- Klicken Sie auf die Schaltfläche Speichern unten auf der Seite.
- Auf der Hauptseite klicken Sie auf die Schaltfläche Start oder Neustart.
- Beobachten Sie die Protokolle, die die Erstellung der Datenbank und den Start der Anwendung zeigen:
- Gehen Sie dann zur URL Ihrer Website, um zu starten.
Benutzerkonfiguration / E-Mail
Um den ersten Benutzer zu erstellen, fügen Sie /ghost
zur URL Ihrer Website hinzu (z.B. https://ghost.domain.xyz/ghost
) und folgen Sie dem Assistenten.
Sie können auch die "Supportadresse des Mitgliederportals" konfigurieren: Wenn neue Mitglieder sich anmelden möchten, sendet das Portal die Bestätigung der Doppel-Opt-In von einer bestimmten Adresse. Standardmäßig handelt es sich dabei um die „noreply“-Adresse Ihres Domains. Um sie zu aktualisieren, navigieren Sie zu „Einstellungen“, „Mitgliedschaft“, „Portal-Einstellungen“, „Anpassen“ und „Konto-Seite“:
Eine technische Inkompatibilität zwischen Ghost und MariaDB beheben
Es gibt ein Kompatibilitätsproblem zwischen Ghost und der MariaDB-Datenbank. Daraus resultiert dieser Fehler:
[2025-05-26 12:54:28] ERROR "GET /ghost/api/admin/posts/6834625e35802b06f1496305/?formats=mobiledoc%2Clexical&include=tags%2Cauthors%2Cauthors.roles%2Cemail%2Ctiers%2Cnewsletter%2Ccount.conversions%2Ccount.clicks%2Csentiment%2Ccount.positive_feedback%2Ccount.negative_feedback" 400 27ms
Could not understand request.
Error ID:
8f2b0d90-3a30-11f0-a25f-fd9c83e1cf02
Error Code:
ER_BAD_FIELD_ERROR
----------------------------------------
Error: select `posts`.*, (with `k` as (select `member_id` from `members_subscription_created_events` where posts.id = members_subscription_created_events.attribution_id union select `member_id` from `members_created_events` where posts.id = members_created_events.attribution_id) select count(*) from `k`) as `count__conversions`, `posts`.*, (select count(distinct `members_click_events`.`member_id`) from `members_click_events` inner join `redirects` on `members_click_events`.`redirect_id` = `redirects`.`id` where posts.id = redirects.post_id) as `count__clicks`, `posts`.*, (select COALESCE(ROUND(AVG(score) * 100), 0) from `members_feedback` where posts.id = members_feedback.post_id) as `count__sentiment`, `posts`.*, (select count(*) from `members_feedback` where posts.id = members_feedback.post_id AND members_feedback.score = 0) as `count__negative_feedback`, `posts`.*, (select sum(`score`) from `members_feedback` where posts.id = members_feedback.post_id) as `count__positive_feedback` from `posts` where (`posts`.`type` = 'post' and `posts`.`status` in ('draft', 'published', 'scheduled', 'sent')) and `posts`.`id` = '2834125e33802b06e1433305' limit 1 - Unknown column 'posts.id' in 'where clause'
at Child.<anonymous> (/srv/customer/sites/ghost.domain.xyz/versions/5.120.2/core/server/models/base/plugins/crud.js:194:31)
at Packet.asError (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/packets/packet.js:740:17)
at Query.execute (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/commands/command.js:29:26)
at Connection.handlePacket (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:475:34)
at PacketParser.onPacket (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:93:12)
at PacketParser.executeStart (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.<anonymous> (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:100:25)
at Socket.emit (node:events:518:28)
at addChunk (node:internal/streams/readable:561:12)
at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
at Readable.push (node:internal/streams/readable:392:5)
at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
Einige von Ghost generierte SQL-Abfragen, die gemeinsame Tabellenausdrücke (CTE) in skalaren Unterabfragen verwenden, verursachen HTTP 400
Fehler, wenn sie auf MariaDB ausgeführt werden. Diese Abfragen sind in MySQL 8 gültig, das CTE in skalaren Unterabfragen unterstützt, aber nicht in MariaDB bis zur Version 10.6.
Ein Patch ist verfügbar, um das Verhalten von Ghost anzupassen und diese Fehler zu vermeiden (siehe den offiziellen Leitfaden).
Um diesen Patch zu verwenden, geben Sie diesen Befehl ein:
cd current
curl -L https://gist.githubusercontent.com/reneluria/8cbbfbc001e542c77d6d5887fbafe5d3/raw/65e0ce31753b4687d0eb67fc030734a35d3ffbad/ghost-post.patch | patch -p0
Dieser Leitfaden erklärt, wie Sie die Konfiguration einer Node.js-Website anpassen können, die auf der Infomaniak-Infrastruktur gehostet wird, um das Verhalten Ihrer Anwendung an deren Entwicklung, Abhängigkeiten oder technische Präferenzen anzupassen.
Voraussetzungen
- Node.js-Website installieren auf Ihrer Hosting-Umgebung.
- Testen Sie Ihre Änderungen lokal, bevor Sie sie in die Produktion übernehmen.
- Stellen Sie sicher, dass Ihre Skripte (
start
,build
) in Ihrerpackage.json
-Datei korrekt definiert sind. - Wenn Sie die Struktur Ihres Projekts ändern, denken Sie daran, das Ausführungsverzeichnis und die zugehörigen Befehle anzupassen.
- Der im Manager definierte Listening-Port muss unbedingt dem im Anwendungscode verwendeten entsprechen.
Zur Konfiguration zugreifen
Jede Website verfügt über ein eigenes Dashboard zur Steuerung der Anwendung (starten, stoppen, neustarten), die Ausführungsconsole anzeigen, die Node.js-Versionen verwalten, die Domains konfigurieren und die SSL-Zertifikate aktivieren:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Hilfe benötigen?).
- Klicken Sie direkt auf den Name des betreffenden Produkts.
- Sie können die Konsole öffnen, das Projekt stoppen (es wird eine Wartungsseite angewendet) oder es neu starten.
- Um auf die erweiterten Einstellungen zuzugreifen, klicken Sie auf Verwalten unter Erweiterte Einstellungen:
- Klicken Sie auf die Registerkarte Node.js, um auf die Einstellungen zuzugreifen:
Änderungen anwenden
Dafür:
- Speichern Sie die Änderungen über die Manager-Oberfläche.
- Starten Sie Ihre Anwendung neu, damit die Änderungen wirksam werden.
Nehmen Sie sich diese andere Anleitung zur Kenntnis, falls Probleme auftreten.
Hauptbefehle
Ausführungsverzeichnis
Das Ausführungsverzeichnis gibt den Speicherort auf dem Server an, an dem die Build- und Startbefehle ausgeführt werden. Es muss auf das Stammverzeichnis Ihrer Anwendung verweisen, d.h. dort, wo sich Ihre Datei package.json
befindet.
Zum Beispiel können Sie für das Projektverzeichnis angeben:
./
oder wenn sich Ihre Anwendung in einem Unterordner namens app
befindet:
./app
oder wenn sie sich in einem Ordner backend
befindet:
./backend
Build Command (optional)
Falls Ihre Node.js-Anwendung einen Kompilierungsschritt vor der Ausführung benötigt, geben Sie einen Build-Befehl im dafür vorgesehenen Feld ein. Dieser Befehl wird automatisch vor dem Start der Anwendung ausgeführt.
Zum Beispiel können Sie angeben:
npm install && npm run build
oder, wenn Sie yarn :
yarn install && yarn build
Falls Ihr Projekt keine Kompilierung erfordert, kann dieses Feld leer gelassen werden.
Startbefehl
Der Startbefehl entspricht dem Befehl, der verwendet wird, um Ihre Anwendung zu starten. Er muss identisch mit dem sein, den Sie lokal verwenden, um das Projekt auszuführen.
Zum Beispiel können Sie angeben:
node index.js
npm start
oder
yarn start
Dieser Befehl muss es ermöglichen, den Server oder den Einstiegspunkt Ihrer Anwendung direkt zu starten, wie er in Ihrer Entwicklungsumgebung definiert ist.
Hörport
Ihre Anwendung muss auf einem bestimmten Port lauschen, der im Manager definiert ist. Dieser Port wird Ihrer Anwendung über eine Umgebungsvariable PORT
übermittelt.
Beispiel in Ihrem Node.js-Code:
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log(`Application lancée sur le port ${port}`);
});
Stellen Sie sicher, dass dieser Port in Ihrem Code berücksichtigt wird.
Node.js-Version
Sie können die Node.js-Version auswählen, die Ihre Website verwenden soll. Es wird empfohlen, eine stabile und immer unterstützte Version zu verwenden, um die Sicherheit und Kompatibilität Ihrer Anwendung zu gewährleisten.
Dieser Leitfaden betrifft die OAuth2-Anwendungen, um sich über Ihre Infomaniak-Anmeldeinformationen bei Ihren externen Diensten anzumelden.
Infomaniak OAuth2-Anwendungen verwalten
Dazu:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie auf die blaue Schaltfläche Neue Anwendung erstellen:
- Wählen Sie den Typ entsprechend Ihrem Bedarf und Ihrem aktuellen Projekt aus.
- Geben Sie der Anwendung einen Namen.
- Geben Sie die URL der Anwendung gemäß den Ihnen zur Verfügung stehenden technischen Informationen ein.
- Klicken Sie auf die Schaltfläche, um die Anwendung zu erstellen:
- Kopieren Sie die Informationen (
Client ID
,Client Secret
) an einen sicheren Ort - sie sind danach nicht mehr zugänglich:
Dieser Leitfaden bezieht sich auf das WordPress-Modul "Infomaniak Connect for OpenID" das es Benutzern ermöglicht, sich bei Ihrer WordPress-Website (unabhängig davon, ob sie bei Infomaniak gehostet wird oder nicht) anzumelden, indem sie ihre Infomaniak-Anmeldeinformationen verwenden.
Vorwort
- Die Aktivierung der Anmeldung über ein Infomaniak-Konto auf Ihrer WordPress-Website ermöglicht es Ihren Besuchern, Kommentare zu hinterlassen, sich für Kurse anzumelden oder auf Inhalte zuzugreifen, die nur für Mitglieder zugänglich sind, mit nur einem Klick, ohne ein neues Konto erstellen zu müssen.
- Das spart ihnen Zeit und ist für Sie eine sicherere Methode, da Sie keine zusätzlichen Passwörter verwalten müssen.
- Die Funktionsweise dieses externen Moduls ist identisch mit den Optionen "Anmelden mit Google", "Anmelden mit Facebook" oder "Anmelden mit Apple"; es verwendet die Standardprotokolle OAuth2 und OpenID Connect, um eine Single Sign-On (SSO)-Authentifizierung zu ermöglichen.
A. Eine Anwendung mit Auth Infomaniak erstellen
Dazu:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts Auth im Infomaniak Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie auf die Schaltfläche, um eine neue Anwendung zu erstellen:
- Wählen Sie den Typ "Web Front-End".
- Geben Sie Ihrer Anwendung einen Namen.
- Geben Sie im URL-Feld die Domain Ihres WordPress-Site ein, gefolgt von
/openid-connect-authorize
(siehe GitHub-Dokumentation falls erforderlich). - Klicken Sie auf die Schaltfläche, um die Erstellung der App abzuschließen:
- Notieren Sie sich sorgfältig die 2 Informationen, die Sie bei der Fertigstellung Ihrer Anwendung OAuth2 erhalten:
B. Das WordPress-Plugin konfigurieren
Dazu:
- Suchen Sie das Plugin
Infomaniak Connect for OpenID
auf der WordPress-Plugin-Plattform von Ihrer Website aus. - Installieren und aktivieren Sie das Plugin:
- Konfigurieren Sie das Plugin über das Menü Einstellungen:
- Die einzigen Felder, die ausgefüllt werden müssen, sind Client ID und Client Secret Key und stammen von den im obigen Punkt A erhaltenen Informationen:
- Vergessen Sie nicht, die vorgenommenen Änderungen an den Plugin-Einstellungen zu speichern.
- Eine zusätzliche Schaltfläche für eine Verbindung über eine Infomaniak-Kennung ist nun auf Ihrer Anmeldeseite für Benutzer (
/wp-admin
) (/wp-login.php
) sichtbar:
Diese Anleitung hilft Ihnen, ein Problem mit dem CMS Prestashop und insbesondere mit seinem Modul „Faceted Search“ (Facetten-Suche) zu lösen, das die Verwaltung von Filtern auf den Seiten der Produktkategorien ermöglicht.
Das Problem
Dieses spezielle Suchmodul von Prestashop erstellt einen Cache in der Datenbank, um die Suche zu beschleunigen. Allerdings wird die entsprechende Tabelle nie bereinigt, was Probleme für die Hosting-Infrastruktur verursacht.
Erste Lösung
Die erste Lösung besteht darin, den vorgeschlagenen Cache zu deaktivieren.
Wenn Sie ein Cache-Modul haben, wie z.B. Ultimate Cache
, gibt es keine negativen Auswirkungen.
Dazu:
- Gehen Sie im PrestaShop-Administrationspanel zu Module → Modul-Manager.
- Wählen Sie Module aus und verwenden Sie das Suchfeld, um „facet“ zu finden.
- Klicken Sie auf Konfigurieren neben dem im Ergebnis erhaltenen Modul:
- Deaktivieren Sie die Schaltfläche dazu:
Zweite Lösung
Die zweite Lösung besteht darin, einen Cronjob zu erstellen, der die Tabelle reinigt, z.B. jeden Abend:
- Kopieren Sie aus den Moduleinstellungen die bestehende URL auf der Schaltfläche
Clear cache
:
Erstellen Sie dann im Infomaniak Manager einen Webcron (nehmen Sie sich diesen anderen Leitfaden dazu zur Kenntnis), um die im Punkt 1 oben kopierte URL auszuführen, z.B. 1 Mal pro Tag und Nacht.