Ghost auf einem Shared Hoster mit Plesk Onyx

Konfiguration eines Ghost Blogs auf einem Shared Hoster mit Plesk Onyx.

Ghost auf einem Shared Hoster mit Plesk Onyx

Wie vielleicht der ein oder andere direkt erkennen kann ist dieses Blog eine Ghost Instanz. Eine NodeJS Anwendung, die ein recht schlankes und einfach zu bedienendes Blog anbietet. Nun ist das Problem, dass gerade solche Anwendungen bei vielen Webhosting Anbietern leider entweder nicht unterstützt werden oder bloß mit Umwegen zu installieren sind.

Wenn man sich die Anleitung zur Installation von Ghost ansieht, stellt man schnell fest, dass die Erklärungen zum einrichten alle von irgendwelchen Konsolenkommandos und ähnlichem handeln. Nun ist es aber so, dass einige Hoster gar nicht anbieten, dass man sich per SSH auf den Webserver verbindet und noch weniger erlauben einen wirklich etwas darauf aufbauend durchzuführen.

Für viele Provider bietet es sich dafür an eine Softwarelösung zu verwenden, welche es erlaubt Webhostings einfach zu verwalten und zuzuordnen. Gleichzeitig soll die Lösung den Benutzern möglichst einfache Verwaltung ihres Hostings ermöglichen. Eine dieser Lösungen ist Plesk Onyx. Diese wird unter anderem auch von Netcup verwendet.

Installation

Grundvoraussetzungen

Ich gehe davon aus, dass das Einrichten einer Domain und das Auswählen eines eurer Dateistruktur entsprechenden Verzeichnisses für den Webservice kein Problem ist. Auch das Einrichten einer mySQL/MariaDB sollte bereits gegeben sein. Trotzdem kurz eine Checklist an Dingen die euch helfen, wenn ihr sie bereitliegen habt.

  • Anwendungsverzeichnis,
  • Login-Daten für die eure Datenbank

In diesem Beitrag stellt das Anwendungsverzeichnis den Pfad /PROJEKTVERZEICHNIS dar. Dieses wird gegebenenfalls auch mit ./ gemeint.

Download

Die offiziellen Release Archive von Ghost findet ihr auf GitHub im Repositorium von Ghost. Ladet am Besten das aktuellste Archiv herunter und ladet es in das vorgesehene Verzeichnis für die Anwendung hoch und entpackt es an diesem Ort.

Webverzeichnis

In eurem Anwendungsverzeichnis solltet ihr ebenfalls ein Verzeichnis für den Dokumentenstamm erstellen. In meinem Fall nenne ich dieses ./www. Dieses Verzeichnis werdet ihr ebenfalls für die Konfiguration des NodeJS Services benötigen.

Datenbankeinstellungen

Hier benötigt ihr nun die Login-Daten eurer Datenbank. Ihr müsst diese in die Konfigurationsdatei unter ./core/server/config/env/config.production.json eintragen, damit Ghost diese verwenden kann. Hierfür einfach die geschweiften Klammern austauschen. Falls euer Datenbankserver einen anderen Port als 3306 verwendet, dies natürlich auch anpassen. Davon bin ich aber nicht ausgegangen.

{
    "url": "{URL}",
    "database": {
        "client": "mysql",
        "connection": {
            "host"     : "{DATENBANKSERVERIP/DOMAIN}",
            "port"     : "3306",
            "user"     : "{DATENBANKBENUTZERNAME}",
            "password" : "{DATENBANKPASSWORT}",
            "database" : "{DATENBANKNAME}"
        }
    },
    "paths": {
        "contentPath": "content/"
    },
    "logging": {
        "level": "info",
        "rotation": {
            "enabled": true
        },
        "transports": ["file", "stdout"]
    }
}

Node.js in Plesk Onyx konfigurieren

Nun machen wir uns an die Konfiguration des Ghost Services. Hierfür öffnet die Konfigurationsseite eurer gewünschten Domain. Diese sieht ungefähr wie folgt aus.

Konfigurationsseite eines Node.js Services in Plesk Onyx

Hier müsst ihr nun die passende NodeJS Version für Ghost auswählen. Diese findet ihr im FAQ der Ghost-Webseite. Ich habe in diesem Fall Version 8.x.x verwendet, weil diese stabil funktionierte.

Im nächsten Schritt müsst ihr prüfen, ob das richtige Verzeichnis für den Anwendungsstamm und auch den Dokumentenstamm gewählt ist. Diese wurden bereits oben erwähnt.

Der Anwendungsmodus production dürfte bereits ausgewählt sein. Ansonsten bitte einstellen.

Abschließend müsst ihr noch die richtige Anwendungsstartdatei auswählen. Dabei handelt es sich um die index.js.

Solltet ihr alle oberen Punkte befolgt und die Werte richtig eingegeben haben, dann könnt ihr nun die npm-Installation durchführen. Diese sollte üblicherweise funktionieren. Es können aber Warnings auftauchen. Wenn alles geklappt hat, könnt ihr die App starten.

Probleme bei der NPM-Installation

Es kann passieren, dass die Abhängigkeiten von NodeJS nicht installiert werden können. In diesem Fall kann es nötig sein folgende Datei in eurem Anwendungsverzeichnis zu installieren.

./.npmrc

Diese benötigt folgenden Inhalt.

scripts-prepend-node-path=true

Einrichtung

Die Einrichtung von Ghost sollte ab jetzt kein großes Problem mehr sein. Einfach die Domain aufrufen und um das Adminpanel für die erste Konfiguration zu erreichen noch /ghost/ anhängen, z.B.: https://example.com/ghost/

Ab hier seid ihr auf euch gestellt. Ihr gebt eure Logindaten ein und richtet das Blog ein, wie es euch gefällt.

Updates

Updates können sehr einfach funktionieren, können aber manchmal durch Änderungen in NodeJS auch Probleme machen. Ich empfehle folgende Schritte

  • Backup des Verzeichnisses machen (mindestens aber deiner Konfigurationsdatei)
  • Ggf. im Adminmenü ein Backup eurer Beiträge ziehen, damit ihr das Blog immer einfach neueinrichten könnt.
  • Das neue Release als Archiv hochladen
  • Danach entpacken
  • Konfigurationsdatei wieder durch die alte überschreiben/bzw. Daten eingeben
  • NPM über die Web GUI aktualisieren
  • Service neustarten

Üblicherweise sollte es nun funktionieren. Manchmal kann NPM aber Probleme machen, dann ist es hilfreich die alten Daten noch parat zu haben, weil man damit gerne die alte funktionierende Version einsetzen kann.

Hinweis: 503 - Site is starting up, please wait a moment then retry.

Falls ihr euch wundert, warum ihr regelmäßig eine Fehlermeldung beim Aufruf eurer Webseite findet. NodeJS wird im Rahmen von Plesk Onyx als ein Service mit Timeout aufgerufen. Dementsprechend wird eure Seite bloß hochgefahren, wenn auch Aufrufe stattfinden und wenn eben keine weiteren Aufrufe kommen, wird sie wieder heruntergefahren. Dementsprechend kann es passieren, dass eure Seite bei wenigen Seitenaufrufen regelmäßig herunterfährt, andererseits sollte der Service bei regelmäßigen Aufrufen aktiv bleiben.