So installierst du Strapi CMS auf Rocky Linux 9

Strapi ist ein quelloffenes, headless Content Management System (CMS), das mit der Programmiersprache JavaScript entwickelt wurde. Wie andere Headless CMS kommt Strapi nicht mit einem Frontend aus der Box. Es nutzt eine API für sein Frontend, die es dir ermöglicht, die Website mit gängigen Frameworks wie React und Next.js zu erstellen. Strapi basiert auf einem Plugin-System und ist ein flexibles CMS, dessen Admin-Panel und API erweiterbar sind – und dessen einzelne Teile an jeden Anwendungsfall angepasst werden können. Strapi verfügt außerdem über ein eingebautes Benutzersystem, mit dem du detailliert verwalten kannst, worauf die Administratoren und Endnutzer Zugriff haben.

In diesem Tutorial lernst du, wie du die Community-Version von Strapi CMS auf einem Rocky Linux 9 Server zusammen mit Nginx als Reverse-Proxy-Server installierst.

Voraussetzungen

  • Ein Server mit Rocky Linux 9 mit mindestens 2 GB RAM und 1 CPU-Kern.
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.
  • Ein vollständig qualifizierter Domainname (FQDN) wie strapi.example.com.
  • Stelle sicher, dass alles auf dem neuesten Stand ist.
    $ sudo dnf update
    
  • Einige wenige Pakete, die dein System benötigt.
    $ sudo dnf install wget curl nano unzip yum-utils -y
    

    Einige dieser Pakete sind vielleicht schon auf deinem System installiert.

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

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

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

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

$ sudo firewall-cmd --reload

Liste alle Dienste erneut auf.

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

Du solltest die folgende Ausgabe erhalten.

cockpit dhcpv6-client http https ssh

Schritt 2 – PostgreSQL installieren und konfigurieren

Strapi funktioniert mit PostgreSQL 11 und höher. Rocky Linux 9 wird standardmäßig mit PostgreSQL 13 ausgeliefert. Wir werden PostgreSQL 15 für unser Tutorial verwenden.

Führe den folgenden Befehl aus, um den PostgreSQL GPG-Schlüssel hinzuzufügen.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Installiere die RPM-Datei des PostgreSQL-Repositorys.

$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Deaktiviere das integrierte PostgreSQL-Modul.

$ sudo dnf -qy module disable postgresql

Jetzt kannst du PostgreSQL mit folgendem Befehl installieren.

$ sudo dnf install -y postgresql15-server

Initialisiere die Datenbank.

$ sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

Aktiviere den PostgreSQL-Dienst.

$ sudo systemctl enable postgresql-15

Starte den PostgreSQL-Dienst.

$ sudo systemctl start postgresql-15

Überprüfe den Status des PostgreSQL-Dienstes.

$ sudo systemctl status postgresql-15
? postgresql-15.service - PostgreSQL 15 database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql-15.service; enabled; vendor preset: disabled)
     Active: active (running) since Wed 2023-02-01 13:21:27 UTC; 41min ago
       Docs: https://www.postgresql.org/docs/15/static/
    Process: 53088 ExecStartPre=/usr/pgsql-15/bin/postgresql-15-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 53093 (postmaster)
      Tasks: 7 (limit: 5727)
     Memory: 45.7M
        CPU: 1.112s
     CGroup: /system.slice/postgresql-15.service
             ??53093 /usr/pgsql-15/bin/postmaster -D /var/lib/pgsql/15/data/
             ??53094 "postgres: logger "
             ??53095 "postgres: checkpointer "
             ??53096 "postgres: background writer "
             ??53098 "postgres: walwriter "
             ??53099 "postgres: autovacuum launcher "
             ??53100 "postgres: logical replication launcher "

Starte die PostgreSQL-Shell.

$ sudo -i -u postgres psql

Erstelle die Strapi-Datenbank.

postgres=# CREATE DATABASE strapidb;

Erstelle den Strapi-Benutzer und wähle ein sicheres Passwort.

postgres-# CREATE USER strapiuser WITH PASSWORD 'Your_Password';

Ändere den Eigentümer der Datenbank auf den Strapi-Benutzer.

postgres-# ALTER DATABASE strapidb OWNER TO strapiuser;

Beende die Shell.

postgres-# \q

Überprüfe, ob deine Anmeldedaten funktionieren.

$ psql --username strapiuser --password --host localhost strapidb
Password:
psql (15.1)
Type "help" for help.

strapidb=>

Beende die Shell, indem du \q eingibst.

Schritt 3 – Installiere Node.js

Rocky Linux 9 wird mit Node v16 ausgeliefert, das nicht mehr aktuell ist. Wir werden die neueste LTS-Version von Node installieren, die zum Zeitpunkt der Erstellung dieses Tutorials v18 ist.

Hol dir den Node v18 Installer von Nodesource.

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

Installiere Node.js.

$ sudo dnf install nodejs -y

Überprüfe die Node.js-Version.

$ node -v
v18.13.0

Schritt 4 – Strapi installieren

Führe den folgenden Befehl aus, um Strapi zu installieren.

$ npx create-strapi-app@latest howtoforge-project
Need to install the following packages:
  create-strapi-app@4.6.0
Ok to proceed? (y) y

Gib y ein, um mit der Installation fortzufahren. Als Nächstes wirst du aufgefordert, den Installationstyp zu wählen. Wähle Benutzerdefiniert, um fortzufahren und beantworte die folgenden Fragen.

? Choose your installation type Custom (manual settings)
? Choose your preferred language JavaScript
? Choose your default database client postgres
? Database name: strapidb
? Host: 127.0.0.1
? Port: 5432
? Username: strapiuser
? Password: Your_Password
? Enable SSL connection: No

Je nach deinen Anforderungen kannst du entweder Typescript oder JavaScript als Sprache für Strapi wählen.

Sobald die Installation abgeschlossen ist, kannst du dein Strapi-Projekt erstellen.

Wechsle in das Projektverzeichnis.

$ cd howtoforge-project

Führe den folgenden Befehl aus, um das Projekt zu erstellen, einschließlich der Strapi Admin UI.

$ NODE_ENV=production npm run build

Starte den Strapi-Server mit dem folgenden Befehl.

$ node ~/howtoforge-project/node_modules/.bin/strapi start

Deine Anwendung sollte unter der URL http://<yourserverIP>:1337 sichtbar sein. Aber zuerst musst du den Port in der Firewall öffnen.

$ sudo firewall-cmd --permanent --add-port=1337/tcp
$ sudo firewall-cmd --reload

Sobald du die URL geöffnet hast, solltest du den folgenden Bildschirm erhalten.

Strapi CMS Startseite

Drücke Strg + C im Terminal, um den Server zu stoppen. Du solltest die Firewall-Regel löschen, weil wir sie nicht mehr brauchen.

$ sudo firewall-cmd --permanent --remove-port=1337/tcp
$ sudo firewall-cmd --reload

Schritt 5 – PM2 installieren und konfigurieren

Anstatt den Server manuell zu starten, können wir PM2 (Process Manager 2) verwenden, um den Prozess zu verwalten und einen systemd-Dienst dafür zu erstellen.

Wechsle in das Home-Verzeichnis.

$ cd ~

Installiere PM2.

$ sudo npm install pm2@latest -g

Erstelle und öffne die PM2-Konfigurationsdatei zum Bearbeiten.

$ sudo nano ecosystem.config.js

Füge den folgenden Inhalt in die Datei ein. Achte darauf, dass du den richtigen Verzeichnisnamen und die Postgres-Zugangsdaten eingibst.

module.exports = {
  apps: [
    {
      name: 'strapi',
      cwd: '/home/navjot/howtoforge-project',
      script: 'npm',
      args: 'start',
      env: {
        NODE_ENV: 'production',
        DATABASE_HOST: 'localhost',
        DATABASE_PORT: '5432',
        DATABASE_NAME: 'strapidb',
        DATABASE_USERNAME: 'strapiuser',
        DATABASE_PASSWORD: 'Your_Password',
      },
    },
  ],
};

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

Führe deine Strapi-Instanz mit PM2 im Hintergrund aus.

$ pm2 start ecosystem.config.js

Du wirst die folgende Ausgabe erhalten.

                        -------------

__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
 _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
  _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
   _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
    _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
     _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
      _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
       _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
        _\///______________\///______________\///__\///////////////__


                          Runtime Edition

        PM2 is a Production Process Manager for Node.js applications
                     with a built-in Load Balancer.

                Start and Daemonize any application:
                $ pm2 start app.js

                Load Balance 4 instances of api.js:
                $ pm2 start api.js -i 4

                Monitor in production:
                $ pm2 monitor

                Make pm2 auto-boot at server restart:
                $ pm2 startup

                To go further checkout:
                http://pm2.io/


                        -------------

[PM2] Spawning PM2 daemon with pm2_home=/home/navjot/.pm2
[PM2] PM2 Successfully daemonized
[PM2][WARN] Applications strapi not running, starting...
[PM2] App [strapi] launched (1 instances)
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? id  ? name      ? namespace   ? version ? mode    ? pid      ? uptime ? ?    ? status    ? cpu      ? mem      ? user     ? watching ?
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? 0   ? strapi    ? default     ? N/A     ? fork    ? N/A      ? 0s     ? 0    ? online    ? 0%       ? 0b       ? navjot   ? disabled ?
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Anwendungen, die unter PM2 laufen, werden automatisch neu gestartet, wenn sie abstürzen oder beendet werden.

Erstelle ein systemd-Startskript mit dem folgenden Befehl.

$ pm2 startup

Du erhältst die folgende Ausgabe.

[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot

Kopiere den Befehl aus der obigen Ausgabe und führe ihn aus.

$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot

Du erhältst die folgende Ausgabe.

                        -------------

__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
 _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
  _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
   _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
    _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
     _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
      _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
       _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
        _\///______________\///______________\///__\///////////////__


                          Runtime Edition

        PM2 is a Production Process Manager for Node.js applications
                     with a built-in Load Balancer.

                Start and Daemonize any application:
                $ pm2 start app.js

                Load Balance 4 instances of api.js:
                $ pm2 start api.js -i 4

                Monitor in production:
                $ pm2 monitor

                Make pm2 auto-boot at server restart:
                $ pm2 startup

                To go further checkout:
                http://pm2.io/


                        -------------

[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=navjot
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/home/navjot/.local/bin:/home/navjot/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/navjot/.pm2
PIDFile=/home/navjot/.pm2/pm2.pid
Restart=on-failure

ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

Target path
/etc/systemd/system/pm2-navjot.service
Command list
[ 'systemctl enable pm2-navjot' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-navjot.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-navjot...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-navjot.service ? /etc/systemd/system/pm2-navjot.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd

Speichere die PM2-Prozessliste.

$ pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /home/navjot/.pm2/dump.pm2

Dein Strapi-Dienst läuft jetzt im Hintergrund im Produktionsmodus.

Schritt 6 – 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 -y nginx

Ü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 Wed 2023-02-01 15:01:29 UTC; 7s ago
       Docs: http://nginx.org/en/docs/
    Process: 4637 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 4638 (nginx)
      Tasks: 2 (limit: 10884)
     Memory: 1.9M
        CPU: 8ms
     CGroup: /system.slice/nginx.service
             ??4638 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??4639 "nginx: worker process"

Schritt 7 – SSL installieren

Wir müssen Certbot installieren, um das SSL-Zertifikat zu erstellen.

Dazu verwenden wir den Snapd-Paketinstaller. Da Rocky Linux nicht mit diesem Paket ausgeliefert wird, installiere den Snapd-Installer. Er benötigt das EPEL-Repository, um zu funktionieren.

$ sudo dnf install -y epel-release

Installiere Snapd.

$ sudo dnf install -y snapd

Aktiviere und starte den Snap-Dienst.

$ sudo systemctl enable snapd --now

Installiere das Snap-Kernpaket und stelle sicher, dass deine Snapd-Version auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

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

Gib den folgenden Befehl ein, um Certbot zu installieren.

$ sudo snap install --classic certbot

Stelle mit folgendem 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

Überprüfe die Installation.

$ certbot --version
certbot 2.2.0

Führe den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen.

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

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

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

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

Um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert, führe einen Probelauf des Prozesses durch.

$ sudo certbot renew --dry-run

Wenn du keine Fehler siehst, ist alles in Ordnung. Dein Zertifikat wird automatisch erneuert.

Schritt 8 – Nginx konfigurieren

Ö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.

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

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

Füge den folgenden Code in die Datei ein.

server {
  # Redirect any http requests to https
  listen         80;
  listen         [::]:80;
  server_name    strapi.example.com;
  return 301     https://$host$request_uri;
}

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

  access_log                /var/log/nginx/strapi.access.log;
  error_log                 /var/log/nginx/strapi.error.log;

  # TLS configuration
  ssl_certificate           /etc/letsencrypt/live/strapi.example.com/fullchain.pem;
  ssl_certificate_key       /etc/letsencrypt/live/strapi.example.com/privkey.pem;
  ssl_trusted_certificate   /etc/letsencrypt/live/strapi.example.com/chain.pem;
  ssl_protocols             TLSv1.2 TLSv1.3;

  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_session_cache         shared:SSL:50m;
  ssl_session_timeout       1d;

  # 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;

  location / {
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_set_header	    X-Forwarded-Host $http_host;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass              http://127.0.0.1:1337;
  }
}

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

Überprüfe die Syntax der Nginx-Konfigurationsdatei.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte den Nginx-Dienst neu.

$ sudo systemctl restart nginx

Du kannst nun über die URL https://strapi.example.com auf Strapi CMS zugreifen. Du wirst die folgende Seite sehen, die zeigt, dass Strapi im Produktionsmodus läuft.

Strapi Production Home

Besuche die URL https://strapi.example.com/admin, um einen Administrator-Benutzer anzulegen.

Strapi Admin Benutzer erstellen Seite

Gib deine Administratorendaten ein und klicke auf die Schaltfläche Los geht ’s, um zum Administrator-Dashboard zu gelangen.

Strapi Admin Dashboard

Von hier aus kannst du mit der Erstellung von Inhalten in Strapi beginnen.

Schritt 9 – Strapi aktualisieren

Der erste Schritt beim Upgrade von Strapi ist das Beenden des Servers.

$ cd ~
$ pm2 stop ecosystem.config.js

Wechsle in das Projektverzeichnis und öffne die Datei package.json zur Bearbeitung.

$ cd howtoforge-project
$ nano package.json

Aktualisiere alle Versionsnummern der Strapi-Pakete auf die neueste stabile Strapi-Version. Die neueste verfügbare Version findest du auf der GitHub-Releaseseite von Strapi.

"devDependencies": {},
  "dependencies": {
    "@strapi/strapi": "4.5.5",
    "@strapi/plugin-users-permissions": "4.5.5",
    "@strapi/plugin-i18n": "4.5.5",
    "pg": "8.6.0"
  },

Hier musst du 4.5.5 auf die neueste stabile Version ändern. Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du danach gefragt wirst.

Installiere die aktualisierte Version.

$ npm install

Erstelle das Administrationspanel neu.

$ NODE_ENV=production npm run build

Starte den Server erneut.

$ cd ~
$ pm2 start ecosystem.config.js

Deine Strapi-Installation ist nun aktualisiert und läuft.

Fazit

Damit ist unsere Anleitung zur Installation von Strapi CMS auf einem Rocky Linux 9 Server zusammen mit Nginx als Reverse Proxy Server abgeschlossen. Wenn du noch Fragen hast, schreibe sie in die Kommentare unten.

Das könnte dich auch interessieren …