Wie man Ghost CMS auf Rocky Linux 9 einsetzt

Ghost ist eine Open-Source-Blogging-Plattform, mit der du einen professionell aussehenden Blog erstellen kannst. Sie wurde 2013 als Alternative zu WordPress eingeführt, weil es zu komplex wurde. Es ist in JavaScript geschrieben und wird von der Node.js-Bibliothek unterstützt.

In diesem Lernprogramm wird gezeigt, wie du Ghost CMS mit Nginx und MySQL auf einem Server mit Rocky Linux 9 installierst. Wir werden den Nginx-Server zum Hosten des Blogs und das SSL-Zertifikat von Let’s Encrypt zur Sicherung unserer Installation verwenden.

Voraussetzungen

  • Ein Server, auf dem Rocky Linux 9 läuft.
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.
  • Ein vollständig qualifizierter Domainname (FQDN), der auf deinen Server verweist. Für unsere Zwecke werden wir ghost.example.com als Domänennamen verwenden.
  • Stelle sicher, dass alles auf dem neuesten Stand ist.
    $ sudo dnf update
    
  • Installiere grundlegende Hilfspakete. Einige von ihnen sind vielleicht schon installiert.
    $ sudo dnf install wget curl nano unzip yum-utils -y
    

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Rocky Linux verwendet die Firewalld Firewall. Überprüfe den Status der Firewall.

$ sudo firewall-cmd --state
running

Die Firewall arbeitet mit verschiedenen Zonen, wobei die öffentliche Zone die Standardzone ist, die wir verwenden werden. Liste alle Dienste und Ports auf, die auf der Firewall aktiv sind.

$ sudo firewall-cmd --permanent --list-services

Es sollte die folgende Ausgabe angezeigt werden.

cockpit dhcpv6-client ssh

Wiki.js braucht HTTP- und HTTPS-Ports, um zu funktionieren. Öffne sie.

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent

Lade die Firewall neu, um die Änderungen zu übernehmen.

$ sudo firewall-cmd --reload

Schritt 2 – Nginx installieren

Rocky Linux 9 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.

Erstelle und öffne die Datei /etc/yum.repos.d/nginx.repo zur Erstellung des offiziellen Nginx-Repositorys.

$ sudo nano /etc/yum.repos.d/nginx.repo

Füge den folgenden Code in die Datei ein.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Installiere den Nginx-Server.

$ sudo dnf install nginx -y

Überprüfe die Installation.

$ nginx -v
nginx version: nginx/1.22.1

Aktiviere und starte den Nginx-Server.

$ sudo systemctl enable nginx --now

Überprüfe den Status des Servers.

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2022-10-25 08:27:47 UTC; 2s ago
       Docs: http://nginx.org/en/docs/
    Process: 1650 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 1651 (nginx)
      Tasks: 2 (limit: 5912)
     Memory: 1.9M
        CPU: 7ms
     CGroup: /system.slice/nginx.service
             ??1651 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??1652 "nginx: worker process"

Oct 25 08:27:47 ghost.example.com systemd[1]: Starting nginx - high performance web server...

Schritt 3 – Node.js installieren

Ghost Installer braucht Nodejs, um zu funktionieren. Führe die folgenden Befehle aus, um Node 16 zu installieren.

$ curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -

Installiere Node.

$ sudo dnf install -y nodejs

Überprüfe die Node-Installation.

$ node --version
v16.18.0

Zum Zeitpunkt der Erstellung dieses Tutorials ist Node 18 als LTS-Version erschienen. Ghost wird diese Version noch nicht unterstützen. Schau im Ghost-Dokument über Node-Versionen nach, welche Node-Version aktuell unterstützt wird. Wenn Ghost die Unterstützung für Node 18 hinzufügt, installiere Node 18 stattdessen mit den folgenden Befehlen.

$ curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
$ sudo dnf install -y nodejs

Schritt 4 – MySQL installieren

Rocky Linux 9 wird mit der neuesten Version von MySQL ausgeliefert. Du kannst sie mit einem einzigen Befehl installieren.

$ sudo dnf install mysql-server

Überprüfe die Version von MySQL.

$ mysql --version
mysql  Ver 8.0.30 for Linux on x86_64 (Source distribution)

Aktiviere und starte den MySQL-Dienst.

$ sudo systemctl enable mysqld --now

Überprüfe den Status des Dienstes.

$ sudo systemctl status mysqld
? mysqld.service - MySQL 8.0 database server
     Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2022-10-25 09:00:26 UTC; 3s ago
    Process: 2920 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
    Process: 2942 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
   Main PID: 3021 (mysqld)
     Status: "Server is operational"
      Tasks: 39 (limit: 5912)
     Memory: 404.4M
        CPU: 4.686s
     CGroup: /system.slice/mysqld.service
             ??3021 /usr/libexec/mysqld --basedir=/usr

Oct 25 09:00:18 ghost.example.com systemd[1]: Starting MySQL 8.0 database server...
Oct 25 09:00:18 ghost.example.com mysql-prepare-db-dir[2942]: Initializing MySQL database
Oct 25 09:00:26 ghost.example.com systemd[1]: Started MySQL 8.0 database server.

Du kannst dich standardmäßig mit der Unix-Authentifizierung in der MySQL-Shell anmelden. Aber du kannst den Assistenten zur Sicherheitseinrichtung nicht ausführen. Daher ist der folgende Schritt für die MySQL-Versionen 8.0.28 und höher notwendig. Rufe die MySQL-Shell auf.

$ sudo mysql

Führe den folgenden Befehl aus, um das Passwort für deinen Root-Benutzer festzulegen. Achte darauf, dass es eine Mischung aus Zahlen, Groß- und Kleinbuchstaben sowie Sonderzeichen enthält.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Beende die Shell. Dieser Schritt hat den Nachteil, dass du dich nicht mehr mit der Unix-Authentifizierung in der MySQL-Shell anmelden kannst.

mysql> exit

Führe das Skript zur sicheren Installation von MySQL aus.

$ sudo mysql_secure_installation

Du wirst aufgefordert, die Validate Password Component zu installieren. Sie prüft die Stärke der in MySQL verwendeten Passwörter. Drücke Y, um sie zu installieren.

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

Als Nächstes wirst du aufgefordert, die Stufe der Passwortüberprüfung festzulegen. Wähle 2, da dies die stärkste Stufe ist. Dann wirst du aufgefordert, ein Root-Passwort zu erstellen. Gib ein Passwort ein, das den vorgegebenen Anforderungen entspricht. Wenn du gefragt wirst, ob du mit der Eingabe des Passworts fortfahren möchtest, drücke Y, um fortzufahren.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Please set the password for root here.

New password: 

Re-enter new password: 

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

Zum Schluss drückst du Y, um anonyme Benutzer zu entfernen, Remote-Root-Logins zu verbieten, die Testdatenbank zu entfernen und die Berechtigungstabellen neu zu laden.

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Damit ist der Prozess der Installation und Sicherung von MySQL abgeschlossen.

Schritt 5 – Ghost installieren

Die Ghost-Installation besteht aus drei Komponenten – dem Kommandozeilentool Ghost-CLI, das die Updates für den Ghost-Blog installiert und verwaltet, und dem Blog-Paket selbst.

Ghost-CLI installieren

Führe den folgenden Befehl aus, um das Ghost-CLI-Tool zu installieren. Ignoriere alle Warnungen, die du während des Prozesses erhältst.

$ sudo npm install ghost-cli@latest -g

Ghost-Verzeichnis vorbereiten

Erstelle das Ghost-Stammverzeichnis.

$ sudo mkdir -p /var/www/html/ghost

Setze den Eigentümer des Verzeichnisses auf den aktuellen Benutzer.

$ sudo chown $USER:$USER /var/www/html/ghost

Setze die richtigen Verzeichnisberechtigungen.

$ sudo chmod 755 /var/www/html/ghost

Wechsle in das Ghost-Verzeichnis.

$ cd /var/www/html/ghost

Ghost installieren

Die Installation von Ghost ist ein einziger Befehlsvorgang.

$ ghost install

Während der Installation wird das CLI-Tool eine Reihe von Fragen stellen, um den Blog zu konfigurieren.

  • Zum Zeitpunkt der Erstellung dieses Tutorials unterstützt Ghost-CLI außer Ubuntu keine anderen Betriebssysteme. Du wirst gefragt, ob du mit der Installation fortfahren möchtest. Drücke Y, um fortzufahren.
  • Blog-URL: Gib deine vollständige Blog-URL zusammen mit dem https-Protokoll ein. (https://ghost.example.com)
  • MySQL Hostname: Drücke die Eingabetaste, um den Standardwert localhost zu verwenden, da unsere Ghost-Installation und MySQL auf demselben Server liegen.
  • MySQL-Benutzername: Gib root als deinen MySQL-Benutzernamen ein.
  • MySQL-Passwort: Gib dein zuvor erstelltes Root-Passwort ein.
  • Ghost-Datenbankname: Gib einen Namen für deine Ghost-Datenbank ein. (ghostdb)
  • Sudo-Passwort: Gib das sudo-Passwort deines Systems ein, um erweiterte Befehle auszuführen.
  • EinenGhost-MySQL-Benutzer einrichten?: Das Installationsprogramm fragt dich, ob du einen eigenen MySQL-Benutzer für Ghost einrichten möchtest. Drücke Y, um fortzufahren.
  • Nginx einrichten?: Normalerweise erkennt die Ghost-CLI deine Nginx-Installation und konfiguriert sie automatisch für deinen Blog. Unsere Nginx-Installation kann jedoch nicht erkannt werden. Daher überspringt der Installer diesen Schritt automatisch. Wir werden Nginx manuell konfigurieren.
  • SSL einrichten?: Da die Nginx-Konfiguration übersprungen wurde, überspringt das CLI-Tool auch die Einrichtung von SSL.
  • Systemd einrichten?: Ghost wird dich fragen, ob du einen Systemdienst für Ghost einrichten möchtest. Drücke Y, um fortzufahren.
  • Ghost starten?: Drücke Y, um deine Ghost-Installation zu starten. Der Dienst wird gestartet, aber wir müssen noch Nginx und SSL konfigurieren, damit er funktioniert.

Schritt 6 – SSL installieren

Bevor wir fortfahren, müssen wir das Tool Certbot und ein SSL-Zertifikat für unsere Domain installieren.

Um Certbot zu installieren, verwenden wir den Snapd-Paketinstaller. Snapd enthält immer die neueste stabile Version von Certbot, die du verwenden solltest.

Das Snapd-Tool benötigt das Epel-Repository, um zu funktionieren.

$ sudo dnf install epel-release -y

Wir werden Snapd verwenden, um Certbot zu installieren. Installiere Snapd.

$ sudo dnf install snapd -y

Aktiviere und starte den Snap-Dienst.

$ sudo systemctl enable snapd.socket --now

Erstelle die notwendigen Links, damit Snapd funktioniert.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Stelle sicher, dass deine Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core 
$ sudo snap refresh core

Installiere Certbot.

$ sudo snap install --classic certbot

Stelle mit dem folgenden Befehl sicher, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link auf das Verzeichnis /usr/bin erstellst.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Erstelle ein SSL-Zertifikat.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d ghost.example.com

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/ghost.example.com auf deinem Server heruntergeladen.

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Führe einen Probelauf des Prozesses durch, um zu prüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn du keine Fehler siehst, bist du bereit. Dein Zertifikat wird automatisch erneuert.

Schritt 7 – Nginx konfigurieren

Erstelle und öffne die Datei /etc/nginx/conf.d/ghost.conf zum Bearbeiten.

$ sudo nano /etc/nginx/conf.d/ghost.conf

Füge den folgenden Code in die Datei ghost.conf ein. Ersetze alle Instanzen von ghost.example.com durch deine Domain.

## enforce HTTPS
server {
  listen 80;
  listen [::]:80;
  server_name ghost.example.com;
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name ghost.example.com;

  access_log /var/log/nginx/ghost.access.log;
  error_log /var/log/nginx/ghost.error.log;
  client_max_body_size 20m;

  http2_push_preload on; # Enable HTTP/2 Server Push

  ssl_certificate     /etc/letsencrypt/live/ghost.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/ghost.example.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/ghost.example.com/chain.pem;
  ssl_session_timeout 1d;

  # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
  ssl_protocols TLSv1.2 TLSv1.3;

  # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
  # prevent replay attacks.
  #
  # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
  ssl_early_data on;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
  ssl_session_cache shared:SSL:50m;
  ssl_session_tickets off;

  # OCSP Stapling ---
  # fetch OCSP records from URL in ssl_certificate and cache them
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  add_header X-Early-Data $tls1_3_early_data;

  location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:2368;
  }
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Die obige Konfiguration leitet alle HTTP-Anfragen auf HTTPS um und dient als Proxy für den Ghost-Dienst, um ihn über deine Domain zu bedienen.

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Öffne die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; ein.

server_names_hash_bucket_size  64;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe deine Nginx-Konfiguration.

$ sudo nginx -t

Wenn du keine Fehler siehst, bist du startklar. Lade den Nginx-Server neu.

$ sudo systemctl reload nginx

Schritt 8 – SELinux konfigurieren

Erlaube Nginx, sich mit dem Netzwerk zu verbinden.

$ sudo setsebool -P httpd_can_network_connect 1

Schritt 9 – Ausführen der Website

Jetzt kannst du deine Installation überprüfen, indem du https://ghost.example.com in deinem Webbrowser öffnest. Du erhältst die folgende Seite, die eine erfolgreiche Installation anzeigt.

Ghost Homepage

Schritt 10 – Beende die Einrichtung

Um die Einrichtung deines Ghost-Blogs abzuschließen, rufe https://ghost.example.com/ghost in deinem Browser auf. Das zusätzliche /ghost am Ende der Domain deines Blogs leitet dich zum Admin-Panel von Ghost oder, in diesem Fall, zur Einrichtung weiter, da du zum ersten Mal darauf zugreifst.

Du musst ein Administratorkonto anlegen und einen Blogtitel auswählen.

Ghost Setup Details

Gib deine Daten ein und klicke auf die Schaltfläche Konto erstellen & Veröffentlichung starten, um fortzufahren.

Als Nächstes wirst du zum folgenden Bildschirm weitergeleitet, auf dem du Optionen wie das Schreiben deines ersten Beitrags, das Anpassen deiner Seite und das Importieren von Mitgliedern findest.

Ghost Installer Vorschläge

Wir wählen die Option Explore Ghost admin und gehen direkt zum Dashboard. Am Ende der Einrichtung wirst du mit dem Ghost-Administrationsbereich begrüßt.

Ghost Admin Dashboard

Wenn du in den dunklen Modus wechseln möchtest, kannst du das tun, indem du auf den Kippschalter neben dem Zahnradknopf unten auf der Einstellungsseite klickst.

Ghost Dark Mode Toggle

Wechsle zur Seite Beiträge und du wirst einen Standardbeitrag sehen. Du kannst ihn aufheben oder löschen und mit dem Posten beginnen.

Geisterpost-Panel)

Schritt 11 – Mailer konfigurieren

Ghost fungiert nicht nur als Blogging-Plattform, sondern auch als Newsletter-Manager. Für den täglichen Betrieb kannst du jeden Transaktionsmaildienst verwenden, der mit Ghost zusammenarbeitet, um Mails zu versenden. Wenn du jedoch Newsletter über Ghost verschicken willst, wird als einziger offizieller Massenversender Mailgun unterstützt. Du kannst auch einen anderen Newsletter-Dienst verwenden, aber dafür musst du die Zapier-Integrationsfunktion von Ghost nutzen.

Konfigurieren wir zunächst einen SMTP-Dienst für Transaktions-E-Mails. Öffne dazu die Datei /var/www/html/ghost/config.production.json zur Bearbeitung.

$ nano /var/www/html/ghost/config.production.json

Finde die folgenden Zeilen.

 "mail": {
    "transport": "Direct"
  },

Ersetze sie durch den folgenden Code.

"mail": {
    "from": "'Acme Support' name@example.com",
    "transport": "SMTP",
    "options": {
        "host": "YOUR-SES-SERVER-NAME",
        "port": 465,
        "service": "SES",
        "auth": {
            "user": "YOUR-SES-SMTP-ACCESS-KEY-ID",
            "pass": "YOUR-SES-SMTP-SECRET-ACCESS-KEY"
        }
    }
},

Hier verwenden wir den Amazon SES Mail-Dienst, da er sehr günstig und lebenslang kostenlos ist, wenn du den EC2-Dienst nutzt.

Wenn du den Newsletter-Service von Mailgun nutzen willst, gib stattdessen den folgenden Code ein.

"mail": {
  "from": "'Acme Support' name@example.com",
  "transport": "SMTP",
  "options": {
    "service": "Mailgun",
    "host": "smtp.mailgun.org",
    "port": 587,
    "secure": true,
    "auth": {
      "user": "postmaster@example.mailgun.org",
      "pass": "1234567890"
    }
  }
},

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Wenn du fertig bist, starte die Ghost-Anwendung neu, damit die Änderungen wirksam werden.

$ ghost restart

Um die Newsletter-Einstellungen zu konfigurieren, besuche den Bereich Einstellungen >> E-Mail-Newsletter.

Ghost E-Mail Newsletter Einstellungen

Klicke auf den Link Mailgun-Konfiguration, um ihn zu erweitern.

Gib deine Mailgun-Region, deine Domain und deinen API-Schlüssel ein.

Ghost MailGun Newsletter Einstellungen

Klicke oben rechts auf die Schaltfläche Speichern, um die Einstellungen zu speichern.

Um den Versand des Newsletters zu testen, öffne einen beliebigen Beitrag, öffne seine Einstellungen und klicke auf die Option Newsletter versenden. Sende dann eine Test-E-Mail, um zu prüfen, ob es funktioniert. Wenn du keine Fehlermeldungen erhältst, bedeutet das, dass dein Newsletterversand funktioniert.

Schritt 12 – Ghost aktualisieren

Es gibt zwei Arten von Ghost-Updates – Minor Updates und Major Updates.

Wenn du ein Minor-Update durchführen willst, musst du zunächst ein vollständiges Backup erstellen.

$ cd /var/www/html/ghost
$ ghost backup

Führe den Befehl update aus, um das Minor-Update durchzuführen.

$ ghost update

Um ein größeres Update durchzuführen, solltest du der offiziellen, detaillierten Update-Anleitung bei Ghost folgen. Je nachdem, auf welcher Version du dich gerade befindest und auf welche Hauptversion du aktualisieren möchtest, sind die Schritte unterschiedlich.

Fazit

Damit ist unsere Anleitung zum Einrichten von Ghost CMS auf deinem Rocky Linux 9 Server mit Nginx abgeschlossen. Wenn du Fragen oder Anregungen hast, schreibe sie in die Kommentare unten.

Das könnte dich auch interessieren …