So stellen Sie einen Ghost-Blog mit Docker bereit

0
75

Ghost ist eine beliebte Plattform zur Erstellung von Inhalten, die in JavaScript mit Node.js geschrieben ist. Die Open-Source-Software enthält alles, was Sie zum Verfassen, Gestalten, Veröffentlichen und Pflegen Ihres eigenen Blogs benötigen.

Ghost ist eine Open-Source-Software, die vom offiziellen gehosteten Dienst von Ghost(Pro) unterstützt wird. Sie können es auf Ihrem eigenen Server installieren, indem Sie Node.js hinzufügen und die Ghost-CLI verwenden, um Ihren Stack einzurichten. Ghost ist auch als Docker-Image verfügbar, das alle Abhängigkeiten für Sie bündelt.

In dieser Anleitung verwenden wir Docker, um schnell einen neuen Ghost-Blog in Betrieb zu nehmen. Installieren Sie Docker und Docker Compose auf Ihrem Host, bevor Sie fortfahren. Während Sie Ghost allein mit Docker bereitstellen können, macht es Compose einfacher, die Konfigurationswerte bereitzustellen und zu verwalten, die Ihre Website zum Starten benötigt.

Starten eines Ghost-Containers

Sie können eine einfache Ghost-Site mit einem einzigen Docker-Befehl starten:

docker run -d -p 2368:2368 –name simple-ghost ghost:4

Dadurch wird Ghost auf seinem Standardport 2368 aufgerufen. Besuchen Sie http://localhost:2368, um Ihre Website anzuzeigen, oder http://localhost:2368/ghost, um auf das Ghost-Admin-Panel zuzugreifen. Sie müssen einige Erstausführungseinstellungen angeben, um Ihre Ghost-Installation abzuschließen und ein anfängliches Benutzerkonto zu erstellen.

Werbung

Dieser Ansatz eignet sich hervorragend zum schnellen Experimentieren, wenn Sie Ghost nur ausprobieren. Wir haben jedoch noch keinen dauerhaften Speicher eingerichtet, sodass Ihre Daten verloren gehen, wenn der Container stoppt.

Hier ist ein vollständigeres Beispiel, das Docker Compose verwendet, um Ghost mit einem Docker-Volume einzurichten. Hängen Sie ein Volume in das Verzeichnis /var/lib/ghost/content ein, um die Daten von Ghost außerhalb des Containers zu speichern.

Version: "3" Dienste: Ghost: Bild: Ghost:4 Ports: – 8080:2368 Umgebung: URL: https://ghost.example.com Volumes: – Ghost:/var/lib/ghost/content Neustart: sofern nicht gestoppt Volumes: Ghost:

Diese Compose-Datei weist einige weitere Änderungen an der Konfiguration des Containers auf. Port 2368, der vom Container verfügbar gemacht wird, wird Port 8080 auf Ihrem Host zugeordnet, sodass Sie localhost:8080 verwenden können, um auf Ghost zuzugreifen. Die Neustartrichtlinie wurde in „Unbeendet gestoppt“ geändert, um sicherzustellen, dass Ihre Website nach dem Neustart Ihres Hosts automatisch gestartet wird.

Verwenden Sie jetzt Compose, um Ihre Website aufzurufen:

docker-compose up -d

Ghost konfigurieren

Ghost unterstützt mehrere Konfigurationsparameter, um seinen Betrieb anzupassen und Ihre Site einzurichten. Wenn Sie Docker verwenden, können Sie diese Werte als Umgebungsvariablen bereitstellen.

Die Konfigurationsdateien von Ghost verwenden verschachtelte JSON-Objekte zum Speichern von Werten. Sie können JSON-Schlüssel in ihre Gegenstücke zu Umgebungsvariablen konvertieren, indem Sie jede Baumebene durch __-Zeichen (doppelter Unterstrich) ersetzen:

# in einer JSON-Konfigurationsdatei { “mail”: { “transport”: “SMTP” } } # as eine Umgebungsvariable mail__transport=SMTP

Verwenden Sie das Umgebungsfeld in Ihrer docker-compose.yml-Datei, um diese Parameter für Ihren Ghost-Container bereitzustellen:

version: "3" Dienste: Ghost: Umgebung: Mail__Transport: SMTP-Ankündigung

Eine vollständige Liste der unterstützten Optionen finden Sie in der Ghost-Dokumentation. Sie können ein E-Mail-System einrichten, eine separate URL verwenden, um auf das Admin-Panel zuzugreifen, Verzeichnispfade überschreiben und Datenschutzoptionen über die verfügbaren Umgebungsvariablen umschalten.

Die URL-Option ist besonders wichtig, da sie für Live-Produktionsseiten erforderlich ist. Dies definiert die URL, die externe Besucher verwenden, um auf Ihre Website zuzugreifen. Setzen Sie dies auf den Domänennamen Ihrer Website in Ihrer docker-compose.yml:

-Umgebung: url: https://ghost.example.com

Verwendung einer externen Datenbank

Ghost verwendet standardmäßig eine SQLite-Datenbank, die als Datei im Inhaltsverzeichnis Ihrer Website gespeichert ist. Es wird als Teil des oben erstellten Docker-Volumes beibehalten. Sie können stattdessen eine externe MySQL-Datenbank verwenden, indem Sie Verbindungsdetails über Umgebungsvariablen mit Datenbankpräfix bereitstellen:

services: ghost: # … environment: database__client: mysql database__connection__host: ghost_mysql database__connection__user: root database__connection__password: databasePw database__connection__database: ghost ghost_mysql: Bild: mysql:5.7 exponiert: – 3306 Umgebung: MYSQL_DATABASE: Ghost MYSQL_ROOT_PASSWORD: databasePw Volumes: – mysql:/var/lib/mysql Neustart: sofern nicht gestoppt Volumes: mysql:

Diese Compose-Datei enthält einen weiteren Dienst, der MySQL in einem zusätzlichen Container ausführt. Umgebungsvariablen werden auf dem Ghost-Dienst gesetzt, um die MySQL-Verbindungsdetails bereitzustellen. Ein separates MySQL-Volume wird erstellt, um die Datenbankspeicherdateien zu speichern.

Compose verknüpft Dienste automatisch mit einem Docker-Netzwerk. Ghost kann den Ghost_mysql-Container erreichen, indem er den Dienstnamen als Hostnamen verwendet. Wenn Sie eine vorhandene nicht Docker-basierte MySQL-Datenbank verwenden möchten, können Sie die Dienstdefinition ghost_mysql entfernen und stattdessen die IP-Adresse Ihres MySQL-Servers, den Namen des Datenbankschemas und die Benutzeranmeldeinformationen angeben.

Proxying-Traffic an Ihren Container

Jetzt sollte Ihre Ghost-Site betriebsbereit sein, aber sie ist immer noch auf Port 8080 verfügbar. Wenn Sie nichts anderes auf Ihrem Host ausführen, können Sie stattdessen Port 80 oder 443 binden, um ihn direkt über Ihren Server zugänglich zu machen& #8217;s Domainname. Verwenden Sie in anderen Situationen einen Reverse-Proxy wie NGINX, um Datenverkehr aus dem Web an Ihren Ghost-Container weiterzuleiten.

Fügen Sie NGINX zu Ihrem Host hinzu:

sudo apt update sudo apt install nginx # Allow HTTP/HTTPS-Verkehr durch die Firewall sudo ufw allow 80 sudo ufw allow 443

Definieren Sie einen NGINX-Host für Ihre Site in /etc/nginx/sites-available/ghost.example.com:

server { Servername ghost.example.com; indexindex.html; access_log /var/log/nginx/ghost_access.log error_log /var/log/nginx/ghost_error.log error; Standort/{ Proxy_Pass http://127.0.0.1:8080; Proxy-Weiterleitung aus; Proxy_set_header Host $http_host; Proxy_Set_Header X-Original-IP $remote_addr; } } Advertisement

Diese Datei konfiguriert NGINX so, dass es Datenverkehr an ghost.example.com an Port 8080 auf localhost weiterleitet, der zuvor an Ihren Ghost-Container gebunden war. Aktivieren Sie die neue Konfigurationsdatei, indem Sie sie in das Verzeichnis „sites-enabled“ von NGINX verlinken:

sudo ln -s /etc/nginx/sites-available/ghost.example.com /etc/nginx/sites-enabled/ghost.example.com

Starten Sie NGINX neu, um Ihre Änderungen zu übernehmen:

sudo service nginx restart

Jetzt können Sie SSL mit dem kostenlosen Dienst Let’s Encrypt einrichten. Fügen Sie Certbot von Let’s Encrypt hinzu, um die Ausstellung und Erneuerung von Zertifikaten zu automatisieren:

sudo apt install certbot

Verwenden Sie Certbot, um Zertifikate für Ihre NGINX-Site zu erhalten:

sudo certbot –nginx < p>Certbot liest Ihre NGINX-Sites und generiert Zertifikate für ihre server_name-Konfigurationsfelder. NGINX wird automatisch neu konfiguriert, um das Zertifikat mit Ihrer Site bereitzustellen. Sie sollten jetzt in der Lage sein, auf Ihren Ghost-Blog zuzugreifen, indem Sie Ihren Domainnamen über HTTPS aufrufen.

Während wir uns in diesem Artikel auf NGINX konzentriert haben, gibt es andere Optionen, um Web-Traffic an Ihren Ghost weiterzuleiten Container. Traefik ist ein führender Anwärter, der erstklassige Unterstützung für Docker bietet. Durch die Bereitstellung einer Traefik-Instanz können Sie Routing und automatisches SSL über Docker-Labels konfigurieren, die Sie für Ihren Ghost-Container festgelegt haben.

Ghost-Updates verwalten

< p>Sie können Ghost aktualisieren, indem Sie den Docker-Container Ihrer Site durch einen neuen ersetzen, auf dem eine aktualisierte Version des Ghost-Images ausgeführt wird. Da der Inhalt Ihrer Website sicher in einem separaten Docker-Volume gespeichert ist, bleibt er erhalten, wenn das Volume wieder an den neuen Container angehängt wird.

Wenn Sie einen Major markieren Bildversion in Ihrer docker-compose.yml, wie etwa ghost:4, können Sie auf die neueste Nebenversion aktualisieren, indem Sie docker-compose up mit dem Flag –pull ausführen:

docker-compose up -d –pull Werbung

Dadurch wird Compose angewiesen, nach Änderungen im Bild-Tag zu suchen und eine aktualisierte Version abzurufen, sobald diese verfügbar ist. Es ersetzt Ihre Container durch neue Instanzen unter Verwendung der neuesten Image-Version, die dem Tag entspricht.

Wenn Sie das verwendete Tag ändern möchten, aktualisieren Sie die Bildreferenz in Ihrer docker-compose.yml-Datei. Wiederholen Sie docker-compose up -d, um das Image abzurufen und neue Container zu starten. Wenn beispielsweise Ghost v5 in der Zukunft veröffentlicht wird, könnten Sie Ihre docker-compose.yml in image: ghost:5 ändern, um auf die neue Hauptversion umzusteigen.

Docker macht es einfach, Ghost-Updates zu erhalten indem Sie das neueste Image ziehen und Ihre Container ersetzen. Trotzdem sollten Sie auf die von Ihnen vorgenommenen Änderungen achten. Konsultieren Sie das Ghost-Änderungsprotokoll, bevor Sie ein größeres Upgrade durchführen, falls Sie zusätzliche Schritte unternehmen müssen, um die Migration abzuschließen.

Verwendung von Ghost-Cli

ghost-cli ist im Ghost-Docker-Image verfügbar. Dieses Dienstprogramm wird verwendet, um Ghost einzurichten und zu warten, wenn es in herkömmlichen Umgebungen ohne Container installiert ist.

Sie können über Docker auf Ghost-Cli zugreifen, indem Sie den Ghost-Befehl mit docker exec verwenden. Hier ist ein Beispiel, das den Unterbefehl version verwendet, um die von Ihnen verwendete Ghost-Version anzuzeigen:

docker exec -it my-ghost-container Ghost-Version

Obwohl viele Ghost-Cli-Komponenten funktionieren, werden einige in Docker-Umgebungen nicht unterstützt. Befehle wie install, setup, update und deinstall sind entweder defekt, bedeutungslos oder widersprechen Best Practices, wenn sie mit dem Docker-Image von Ghost verwendet werden. Ghost und alle seine Abhängigkeiten sind in das Image integriert und müssen nicht “installiert” Updates sollten wie oben gezeigt durch Starten eines neuen Containers angewendet werden.

Zusammenfassung

Ghost ist eine moderne Blogging-Plattform, die ein sauberes Dashboard und umfangreiche Funktionen zur Erstellung von Inhalten bietet , und erweiterte Design- und Anpassungsunterstützung. Die Verwendung von Docker zum Hosten von Ghost vereinfacht das Setup-Verfahren, reduziert die Anzahl der benötigten Betriebssystempakete und trägt dazu bei, dass Ihre Site umgebungsübergreifend portierbarer wird.

Werbung

Sobald Ihr Docker-Blog betriebsbereit ist, verwenden Sie den Standard Ghost-Entwicklungsdokumentation zur Verwaltung Ihrer Website und ihres Inhalts. Mit den integrierten Funktionen der Plattform können Sie Mitgliedschaften, Newsletter, benutzerdefinierte Designs und API-Integrationen einrichten.