Wie man Ghost Blog mit Nginx unter Ubuntu 20.04 einsetzt

Ghost ist eine kostenlose, quelloffene und leichtgewichtige Blogging-Plattform, die auf Node.js basiert. Sie ist einfach, anpassbar und ermöglicht es Ihnen, Ihre Inhalte zu erstellen und im Internet zu veröffentlichen. Es wurde speziell für das Bloggen entwickelt und ist daher viel schneller als andere Blogging-Plattformen. Sie bietet eine Vielzahl von Funktionen, von denen einige im Folgenden aufgeführt sind:

  • Markdown-Editor
  • Geplantes Veröffentlichen
  • Bereitstellung von Anwendungen für Linux, Mac und Windows
  • Bietet Hunderte von kostenlosen und Premium-Themen
  • Eingebaute Analytik
  • Bietet ein Migrations-Plugin für die Migration von WordPress zu Ghost

In diesem Tutorial wird erklärt, wie Sie Ghost mit Nginx und Let’s Encrypt SSL auf Ubuntu 20.04 installieren.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Ein gültiger Domain-Name, der auf Ihre Server-IP zeigt.
  • Ein Root-Passwort ist auf Ihrem Server konfiguriert.

Erste Schritte

Es wird empfohlen, zunächst den APT-Paket-Cache auf die neueste Version zu aktualisieren. Sie können ihn mit dem folgenden Befehl aktualisieren:

apt-get update -y

Sobald der APT-Cache aktualisiert ist, installieren Sie weitere erforderliche Abhängigkeiten mit dem folgenden Befehl:

apt-get install gnupg2 curl unzip git acl -y

Als nächstes müssen Sie auch die Node.js auf Ihrem System installieren.

Fügen Sie zunächst das Node.js-Repository mit dem folgenden Befehl hinzu:

curl -sL https://deb.nodesource.com/setup_12.x | bash -

Sobald das Repository installiert ist, führen Sie den folgenden Befehl aus, um Node.js auf Ihrem System zu installieren.

apt-get install nodejs -y

Sobald die Installation abgeschlossen ist, überprüfen Sie die Node.js-Version mit dem folgenden Befehl:

node -v

Sie sollten die folgende Ausgabe erhalten:

v12.22.1

Als nächstes überprüfen Sie die NPM-Version mit dem folgenden Befehl:

npm -v

Sie sollten die folgende Ausgabe erhalten:

6.14.12

Nginx und MariaDB installieren

Als nächstes müssen Sie den Webserver Nginx und den Datenbankserver MariaDB auf Ihrem System installieren. Sie können beide Pakete mit dem folgenden Befehl installieren:

apt-get install mariadb-server nginx -y

Sobald die Installation abgeschlossen ist, sichern Sie die MariaDB-Installation und setzen das MariaDB-Root-Passwort mit dem folgenden Befehl:

mysql_secure_installation

Beantworten Sie alle Fragen, um die MariaDB-Installation zu sichern:

Enter current password for root (enter for none): 
Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Melden Sie sich anschließend mit folgendem Kommando bei MariaDB an:

mysql -u root -p

Nach der Anmeldung erstellen Sie eine Datenbank und einen Benutzer für Ghost mit dem folgenden Befehl:

MariaDB [(none)]> CREATE DATABASE ghostdb;
MariaDB [(none)]> CREATE USER 'ghostuser'@'localhost' IDENTIFIED BY 'password';

Erteilen Sie als Nächstes der Ghost-Datenbank mit dem folgenden Befehl alle Berechtigungen:

MariaDB [(none)]> GRANT ALL ON ghostdb.* TO 'ghostuser'@'localhost';

Legen Sie anschließend die Berechtigungen fest und beenden Sie MariaDB mit dem folgenden Befehl:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Wenn Sie damit fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Ghost Cli installieren

Als nächstes müssen Sie den Ghost Cli installieren, um Ghost zu installieren und zu verwalten. Sie können ihn wie unten gezeigt mit dem NPM installieren:

npm install -g [email protected]

Nach der Installation überprüfen Sie die installierte Version von Ghost Cli mit dem folgenden Befehl:

ghost version

Sie sollten die folgende Ausgabe sehen:

Ghost-CLI version: 1.16.3

Ghost installieren

Erstellen Sie zunächst einen separaten Benutzer für Ghost mit dem folgenden Befehl:

adduser user1

Fügen Sie als Nächstes den Benutzer user1 mit dem folgenden Befehl zur Gruppe sudo und www-data hinzu:

adduser user1 sudo
adduser user1 www-data

Melden Sie sich dann mit user1 an und erstellen Sie ein Verzeichnis für Ghost mit folgendem Befehl:

su - user1
sudo mkdir /var/www/ghost

Legen Sie als Nächstes mit folgendem Befehl die richtigen Rechte und Eigentümer fest:

sudo chown -R www-data:www-data /var/www/ghost
sudo chown -R www-data:www-data /var/www/
sudo chmod 775 /var/www/ghost
sudo setfacl -R -m u:user1:rwx /var/www/ghost/

Ändern Sie als Nächstes das Verzeichnis in ghost und installieren Sie die Blogging-Plattform Ghost mit dem folgenden Befehl:

cd /var/www/ghost
ghost install

Sie werden aufgefordert, die Blog-URL, den Datenbanknamen, den Benutzernamen, das Kennwort und andere Informationen wie unten gezeigt anzugeben:

? Enter your blog URL: https://ghost.linuxbuz.com
? Enter your MySQL hostname: localhost
? Enter your MySQL username: ghostuser
? Enter your MySQL password: [hidden]
? Enter your Ghost database name: ghostdb
? Configuring Ghost
? Setting up instance
+ sudo useradd --system --user-group ghost
+ sudo chown -R ghost:ghost /var/www/ghost/content
? Setting up "ghost" system user
? Setting up "ghost" mysql user [skipped]
? Do you wish to set up Nginx? Yes
+ sudo mv /tmp/ghost-linuxbuz-com/ghost.linuxbuz.com.conf /etc/nginx/sites-available/ghost.linuxbuz.com.conf
+ sudo ln -sf /etc/nginx/sites-available/ghost.linuxbuz.com.conf /etc/nginx/sites-enabled/ghost.linuxbuz.com.conf
+ sudo nginx -s reload
? Setting up SSL [skipped]
? Do you wish to set up Systemd? Yes
+ sudo mv /tmp/ghost-linuxbuz-com/ghost_ghost-linuxbuz-com.service /lib/systemd/system/ghost_ghost-linuxbuz-com.service
+ sudo systemctl daemon-reload
? Setting up Systemd
+ sudo systemctl is-active ghost_ghost-linuxbuz-com
? Do you want to start Ghost? (Y/n) 

An diesem Punkt ist Ghost installiert und gestartet.

Ghost mit Let’s Encrypt SSL sichern

Als nächstes müssen Sie Ghost mit Let’s Encrypt SSL absichern.

Installieren Sie zunächst den Certbot-Client mit dem folgenden Befehl:

sudo apt-get install certbot python3-certbot-nginx -y

Nach der Installation führen Sie den folgenden Befehl aus, um Let’s Encrypt SSL herunterzuladen und Nginx für die Verwendung dieses Zertifikats zu konfigurieren:

sudo certbot --nginx -d ghost.linuxbuz.com

Sie werden aufgefordert, Ihre E-Mail-Adresse anzugeben und die Nutzungsbedingungen zu akzeptieren, wie unten gezeigt:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for ghost.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/ghost.linuxbuz.com.conf

Wählen Sie als Nächstes, ob der HTTP-Verkehr auf HTTPS umgeleitet werden soll oder nicht:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Geben Sie 2 ein und drücken Sie die Eingabetaste, um die Installation abzuschließen.

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/ghost.linuxbuz.com.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://ghost.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=ghost.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/ghost.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/ghost.linuxbuz.com/privkey.pem
   Your cert will expire on 2021-07-13. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Jetzt können Sie die Ghost-Website mit dem folgenden Befehl überprüfen;

ghost ls

Sie sollten die folgende Ausgabe sehen:

+ sudo systemctl is-active ghost_ghost-linuxbuz-com
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? Name               ? Location       ? Version ? Status               ? URL                        ? Port ? Process Manager ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? ghost-linuxbuz-com ? /var/www/ghost ? 4.2.1   ? running (production) ? https://ghost.linuxbuz.com ? 2368 ? systemd         ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Sie können auch den Ghost-Dienst mit dem folgenden Befehl überprüfen:

sudo systemctl status ghost_ghost-linuxbuz-com

Sie sollten die folgende Ausgabe sehen:

? ghost_ghost-linuxbuz-com.service - Ghost systemd service for blog: ghost-linuxbuz-com
     Loaded: loaded (/lib/systemd/system/ghost_ghost-linuxbuz-com.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-04-14 07:05:33 UTC; 9min ago
       Docs: https://ghost.org/docs/
   Main PID: 7546 (node)
      Tasks: 22 (limit: 2353)
     Memory: 134.3M
     CGroup: /system.slice/ghost_ghost-linuxbuz-com.service
             ??7546 ghost run
             ??7590 /usr/bin/node current/index.js

Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/assets/img/dashboard/start-membership-baafa2c6558d118ae59cb1fddab045>
Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/assets/img/dashboard/the-browser-f5e7e199fe82d8435913e84d022fa7e1.pn>
Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/assets/img/dashboard/join-community-bb5478f7dca6c04a2d0baf2b02f880fb>
Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/api/canary/admin/members/?filter=status%3Apaid&order=created_at%20as>
Apr 14 07:14:11 ubuntu node[7590]: [2021-04-14 07:14:11] INFO "GET /" 200 475ms
Apr 14 07:14:11 ubuntu node[7590]: [2021-04-14 07:14:11] INFO "GET /" 200 480ms
Apr 14 07:14:15 ubuntu node[7590]: [2021-04-14 07:14:15] INFO "GET /members/api/site/" 200 12ms
Apr 14 07:14:18 ubuntu node[7590]: [2021-04-14 07:14:18] INFO "GET /" 304 142ms
Apr 14 07:14:25 ubuntu node[7590]: [2021-04-14 07:14:25] INFO "GET /members/api/site/" 304 4ms
Apr 14 07:14:26 ubuntu node[7590]: [2021-04-14 07:14:26] INFO "GET /members/api/member/" 401 4ms

Zugriff auf Ghost Admin Interface

Öffnen Sie nun Ihren Webbrowser und greifen Sie über die URL https://ghost.linuxbuz.com/ghost/ auf die Ghost-Admin-Oberfläche zu. Sie sollten die folgende Seite sehen:

Ghost Blog-Installationsprogramm

Klicken Sie auf die Schaltfläche Create your account, um Ihr erstes Konto zu erstellen:

Ihr Konto erstellen

Geben Sie Ihre Kontodaten ein und klicken Sie auf die Schaltfläche Ich mache das später am unteren Rand des Bildschirms. Auf der folgenden Seite sollten Sie die Ghost-Admin-Oberfläche sehen:

Ghost CMS Dashboard

Sie können Ihre Ghost-Website auch über die URL https://ghost.linuxbuz.com/ aufrufen. Sie sollten die folgende Seite sehen:

Ghost CMS Frontend

Fazit

Herzlichen Glückwunsch! Sie haben die Blogging-Plattform Ghost erfolgreich auf Ubuntu 20.04 installiert. Sie können nun Ihre eigenen Inhalte über die Ghost-Oberfläche erstellen und veröffentlichen.

Das könnte dich auch interessieren …