CMS Installation · 21 min read · Sep 11, 2025

So installieren Sie Craft CMS auf Rocky Linux 9

Craft CMS ist ein Open-Source-Content-Management-System zur Erstellung von Websites. Es ist ein sicheres und skalierbares CMS mit einem umfangreichen Plugin-Ökosystem und hochwertigen kostenlosen und kostenpflichtigen Plugins. Es verfügt über ein intuitives, benutzerfreundliches Kontrollfeld für die Inhaltserstellung und administrative Aufgaben. Es basiert auf dem Yii PHP-Framework. Die Twig-Template-Engine treibt sein Templating-System an. Es kann sowohl mit MySQL- als auch mit PostgreSQL-Datenbanken für die Speicherung arbeiten und verwendet die Redis-Datenbank für Caching und Sitzungsverwaltung.

In diesem Tutorial lernen Sie, wie Sie Craft CMS auf einem Debian 12-Server installieren. Sie lernen auch, wie Sie Redis aktivieren, um damit zu arbeiten, und wie Sie eine mit Craft CMS erstellte Website sichern und wiederherstellen.

Voraussetzungen

  • Ein Server, der Rocky Linux 9 mit mindestens 1 GB RAM ausführt.
  • Ein Nicht-Root-Benutzer mit Sudo-Rechten.
  • Ein vollständig qualifizierter Domainname (FQDN) wie craftcms.example.com, der auf Ihren Server verweist.
  • Ein SMTP-Konto mit einem E-Mail-Dienst wie Amazon SES oder Mailgun.
  • Alles ist aktualisiert. $ sudo dnf update
  • Einige essentielle Pakete sind erforderlich, damit das Tutorial und Craft CMS ausgeführt werden können. Einige davon sind möglicherweise bereits auf Ihrem Server vorhanden. $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y

Schritt 1 - Firewall konfigurieren

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

$ sudo firewall-cmd --state
running

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

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

Es sollte die folgende Ausgabe anzeigen.

cockpit dhcpv6-client ssh

Erlauben Sie HTTP- und HTTPS-Ports.

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

Überprüfen Sie den Status der Firewall erneut.

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

Sie sollten eine ähnliche Ausgabe sehen.

cockpit dhcpv6-client http https ssh

Laden Sie die Firewall neu, um die Änderungen zu aktivieren.

$ sudo firewall-cmd --reload

Schritt 2 - Nginx installieren

Rocky Linux 9 wird mit einer älteren Version von Nginx ausgeliefert. Sie müssen das offizielle Nginx-Repository verwenden, um die neueste Version zu installieren.

Erstellen und öffnen Sie die Datei /etc/yum.repos.d/nginx.repo zur Bearbeitung.

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

Fügen Sie den folgenden Code 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

Sobald Sie fertig sind, speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Installieren Sie Nginx.

$ sudo dnf install nginx -y

Überprüfen Sie die Installation.

$ nginx -v
nginx version: nginx/1.24.0

Aktivieren und starten Sie den Nginx-Serverdienst.

$ sudo systemctl enable nginx --now

Überprüfen Sie den Dienststatus.

$ sudo systemctl status nginx
? nginx.service - nginx - Hochleistungs-Webserver
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
     Active: active (running) since Mon 2023-12-04 14:01:19 UTC; 3s ago
       Docs: http://nginx.org/en/docs/
    Process: 59396 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 59397 (nginx)
      Tasks: 2 (limit: 10866)
     Memory: 1.9M
        CPU: 10ms
     CGroup: /system.slice/nginx.service
             ??59397 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??59398 "nginx: worker process"

Schritt 3 - PHP und Erweiterungen installieren

Rocky Linux 9 wird standardmäßig mit PHP 8.1 ausgeliefert. Um immer auf der neuesten Version von PHP zu bleiben oder wenn Sie mehrere Versionen von PHP installieren möchten, müssen wir das REMI-Repository verwenden.

Der erste Schritt besteht darin, das Epel-Repository zu holen.

$ sudo dnf install epel-release -y

Installieren Sie als Nächstes das Remi-Repository.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Überprüfen Sie die verfügbaren PHP-Streams.

$ dnf module list php -y
Name    Stream              Profiles                                      Summary
php     8.1                 common [d], devel, minimal                    PHP-Skriptsprache

Remis Modular-Repository für Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP-Skriptsprache
php     remi-8.0            common [d], devel, minimal                    PHP-Skriptsprache
php     remi-8.1            common [d], devel, minimal                    PHP-Skriptsprache
php     remi-8.2            common [d], devel, minimal                    PHP-Skriptsprache
php     remi-8.3            common [d], devel, minimal                    PHP-Skriptsprache

Hinweis: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Die Standardversion ist 8.1. Zum Zeitpunkt des Schreibens dieses Tutorials ist Craft CMS mit PHP 8.2 kompatibel. Aktivieren Sie daher Remis PHP 8.2-Repository.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

Installieren Sie PHP und seine Erweiterungen, die von Craft CMS benötigt werden.

$ sudo dnf install php php-cli php-common php-json php-gmp php-fpm php-xmlrpc php-bcmath php-imagick php-curl php-zip php-gd php-mysql php-xml php-mbstring php-xmlrpc php-intl php-pgsql

Überprüfen Sie die installierte PHP-Version.

$ php --version
PHP 8.2.13 (cli) (built: Nov 21 2023 09:55:59) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.13, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.13, Copyright (c), by Zend Technologies

Aktivieren und starten Sie den PHP-FPM-Dienst.

$ sudo systemctl enable php-fpm --now

Überprüfen Sie den Status des PHP-Dienstes.

$ sudo systemctl status php-fpm
? php-fpm.service - Der PHP FastCGI-Prozessmanager
     Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled)
     Active: active (running) since Mon 2023-12-04 14:05:58 UTC; 6s ago
   Main PID: 61410 (php-fpm)
     Status: "Bereit, Verbindungen zu bearbeiten"
      Tasks: 6 (limit: 10866)
     Memory: 16.6M
        CPU: 96ms
     CGroup: /system.slice/php-fpm.service
             ??61410 "php-fpm: master process (/etc/php-fpm.conf)"
             ??61411 "php-fpm: pool www"
             ??61412 "php-fpm: pool www"
             ??61413 "php-fpm: pool www"
             ??61414 "php-fpm: pool www"
             ??61415 "php-fpm: pool www"

Schritt 4 - PHP-FPM konfigurieren

Öffnen Sie php.ini zur Bearbeitung.

$ sudo nano /etc/php.ini

Um die Dateiuploadgrößen festzulegen, ändern Sie die Werte der Variablen upload_max_filesize und post_max_size. Dieser Wert entscheidet über die Dateigröße, die Sie in Craft CMS hochladen können. Für unsere Zwecke setzen wir ihn auf 128 MB. Sie können ihn nach Belieben festlegen.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/' /etc/php.ini

Konfigurieren Sie das PHP-Speicherlimit je nach Ihren Serverressourcen und Anforderungen.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php.ini

Öffnen Sie die Datei /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.d/www.conf

Wir müssen den Unix-Benutzer/die Gruppe der PHP-Prozesse auf nginx setzen. Suchen Sie die Zeilen user=www-data und group=www-data in der Datei und ändern Sie sie in nginx.

...
; Unix-Benutzer/-gruppe der Prozesse
; Hinweis: Der Benutzer ist obligatorisch. Wenn die Gruppe nicht festgelegt ist, wird die Gruppe des Standardbenutzers verwendet.
;       wird verwendet.
; RPM: apache-Benutzer, der gewählt wurde, um Zugriff auf dieselben Verzeichnisse wie httpd zu gewähren
user = nginx
; RPM: Halten Sie eine Gruppe, die im Protokollverzeichnis schreiben darf.
group = nginx
...

Suchen Sie die Zeilen listen.owner = nobody, listen.group = nobody, listen.mode = 0660 in der Datei und ändern Sie sie wie folgt, nachdem Sie sie auskommentiert haben.

; Setzen Sie Berechtigungen für den Unix-Socket, falls einer verwendet wird. In Linux müssen Lese-/Schreibberechtigungen festgelegt werden, um Verbindungen von einem Webserver zuzulassen. Viele BSD-abgeleitete Systeme erlauben Verbindungen unabhängig von den Berechtigungen. Der Besitzer und die Gruppe können entweder nach Name oder nach ihren numerischen IDs angegeben werden.
; Standardwerte: Benutzer und Gruppe sind als laufender Benutzer festgelegt
;                 Modus ist auf 0660 festgelegt
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Starten Sie den PHP-fpm-Prozess neu. Stellen Sie sicher, dass Sie Nginx installiert haben, bevor Sie den PHP-Dienst neu starten, da er sonst fehlschlägt, da er die nginx-Gruppe nicht finden kann.

$ sudo systemctl restart php-fpm

Ändern Sie die Gruppe des PHP-Sitzungsverzeichnisses in Nginx.

$ sudo chgrp -R nginx /var/lib/php/session

Schritt 5 - Composer installieren

Composer fungiert als Abhängigkeitsmanager für PHP. Es ist auch der Abhängigkeitsmanager des Laravel-PHP-Frameworks, das Craft CMS antreibt.

Laden Sie das Composer-Installationsskript herunter.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Überprüfen Sie den heruntergeladenen Installer.

$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verifiziert'; } else { echo 'Installer beschädigt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Sie erhalten die folgende Ausgabe.

Installer verifiziert

Führen Sie das Installationsskript aus, um die neueste Version von Composer herunterzuladen.

$ php composer-setup.php

Entfernen Sie das Installationsskript.

$ php -r "unlink('composer-setup.php');"

Verschieben Sie die heruntergeladene Binärdatei in das Verzeichnis /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Bestätigen Sie die Installation.

$ composer --version
Composer version 2.6.5 2023-10-06 10:11:52

Schritt 6 - PostgreSQL installieren und konfigurieren

Rocky Linux 9 wird standardmäßig mit PostgreSQL 13 ausgeliefert. Wir werden jedoch PostgreSQL 16 aus dem offiziellen Repository verwenden.

Installieren Sie das PostgreSQL RPM-Repository.

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

Deaktivieren Sie das integrierte PostgreSQL-Modul.

$ sudo dnf -qy module disable postgresql

Jetzt können Sie PostgreSQL mit dem folgenden Befehl installieren.

$ sudo dnf install -y postgresql16-server postgresql16-contrib

Das Paket postgresql-contrib enthält einige zusätzliche Dienstprogramme.

Überprüfen Sie die Version.

$ psql --version
psql (PostgreSQL) 16.1

Initialisieren Sie die PostgreSQL-Datenbank.

$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
Initialisiere Datenbank ... OK

Aktivieren Sie den PostgreSQL-Dienst.

$ sudo systemctl enable postgresql-16

Starten Sie den PostgreSQL-Dienst.

$ sudo systemctl start postgresql-16

Überprüfen Sie den Status des PostgreSQL-Dienstes.

$ sudo systemctl status postgresql-16
? postgresql-16.service - PostgreSQL 16-Datenbankserver
     Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled)
     Active: active (running) since Mon 2023-12-04 22:28:34 UTC; 2s ago
       Docs: https://www.postgresql.org/docs/16/static/
    Process: 72143 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 72148 (postgres)
      Tasks: 7 (limit: 10866)
     Memory: 17.4M
        CPU: 45ms
     CGroup: /system.slice/postgresql-16.service
             ??72148 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
             ??72149 "postgres: logger "
             ??72150 "postgres: checkpointer "
             ??72151 "postgres: background writer "
             ??72153 "postgres: walwriter "
             ??72154 "postgres: autovacuum launcher "
             ??72155 "postgres: logical replication launcher "

Dec 04 22:28:33 craftcms.nspeaks.com systemd[1]: Starting PostgreSQL 16-Datenbankserver...
Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] LOG:  Protokollausgabe wird an den Protokollsammlerprozess umgeleitet
Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] HINWEIS:  Zukünftige Protokollausgaben erscheinen im Verzeichnis "log".
Dec 04 22:28:34 craftcms.nspeaks.com systemd[1]: PostgreSQL 16-Datenbankserver gestartet.

Sie können sehen, dass der Dienst standardmäßig aktiviert und ausgeführt wird.

Starten Sie die PostgreSQL-Shell.

$ sudo -i -u postgres psql

Erstellen Sie die Craft CMS-Datenbank.

postgres=# CREATE DATABASE craftcms;

Erstellen Sie den Craft CMS-Benutzer und wählen Sie ein sicheres Passwort.

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

Ändern Sie den Datenbankbesitzer in den Craft CMS-Benutzer.

postgres-# ALTER DATABASE craftcms OWNER TO craftuser;

Gewähren Sie dem Craft CMS-Benutzer alle Berechtigungen auf der Datenbank.

postgres-# GRANT ALL PRIVILEGES ON DATABASE craftcms TO craftuser;

Verlassen Sie die Shell.

postgres-# \q

Überprüfen Sie, ob Ihre Anmeldeinformationen funktionieren.

$ psql --username craftuser --password --host localhost craftcms
Password:
psql (16.1)
Type "help" for help.

craftcms=>

Verlassen Sie die Shell, indem Sie \q eingeben.

Schritt 7 - Redis installieren und konfigurieren

Rocky Linux 9 wird standardmäßig mit Redis 6.2 ausgeliefert. Wir werden jedoch Redis 7.0 verwenden, das wir über das Remi-Repository installieren werden.

Da wir das Remi-Repository während der Installation von PHP installiert haben, können wir diesen Teil überspringen. Listen Sie alle verfügbaren Redis-Module auf.

$ sudo dnf module list redis
Rocky Linux 9 - AppStream
Name                                       Stream             Profiles                       Summary
redis                                      7                  common [d]                     Redis persistente Schlüssel-Wert-Datenbank

Remis Modular-Repository für Enterprise Linux 9 - x86_64
Name                                       Stream             Profiles                       Summary
redis                                      remi-5.0           common [d]                     Redis persistente Schlüssel-Wert-Datenbank
redis                                      remi-6.0           common [d]                     Redis persistente Schlüssel-Wert-Datenbank
redis                                      remi-6.2           common [d]                     Redis persistente Schlüssel-Wert-Datenbank
redis                                      remi-7.0           common [d]                     Redis persistente Schlüssel-Wert-Datenbank
redis                                      remi-7.2           common [d]                     Redis persistente Schlüssel-Wert-Datenbank

Hinweis: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Aktivieren Sie das neueste Redis 7.2-Modul.

$ sudo dnf module enable -y redis:remi-7.2

Installieren Sie Redis.

$ sudo dnf install redis

Überprüfen Sie die Version.

$ redis-server --version
Redis server v=7.2.3 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=7bd3173e4e30c3e4

Aktivieren Sie den Redis-Dienst.

$ sudo systemctl enable redis

Starten Sie den Redis-Dienst.

$ sudo systemctl start redis

Überprüfen Sie den Status des Dienstes.

$ sudo systemctl status redis
? redis.service - Redis persistente Schlüssel-Wert-Datenbank
     Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; preset: disabled)
    Drop-In: /etc/systemd/system/redis.service.d
             ??limit.conf
     Active: active (running) since Mon 2023-12-04 22:36:25 UTC; 1min 32s ago
   Main PID: 72877 (redis-server)
     Status: "Bereit, Verbindungen zu akzeptieren"
      Tasks: 5 (limit: 10866)
     Memory: 7.5M
        CPU: 176ms
     CGroup: /system.slice/redis.service
             ??72877 "/usr/bin/redis-server 127.0.0.1:6379"

Dec 04 22:36:25 craftcms.nspeaks.com systemd[1]: Starting Redis persistente Schlüssel-Wert-Datenbank...
Dec 04 22:36:25 craftcms.nspeaks.com systemd[1]: Started Redis persistente Schlüssel-Wert-Datenbank.

Der nächste Schritt besteht darin, die Authentifizierung für den Redis-Server hinzuzufügen. Da Redis v6.0, ist der beste Weg, um Authentifizierung hinzuzufügen, die Verwendung von ACL (Access Control Lists). Öffnen Sie die Datei /etc/redis/redis.conf zur Bearbeitung.

$ sudo nano /etc/redis/redis.conf

Suchen Sie die Zeile # aclfile /etc/redis/users.acl und kommentieren Sie sie aus, indem Sie das Hash-Zeichen (#) davor entfernen.

aclfile /etc/redis/users.acl

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Erstellen und öffnen Sie die Datei /etc/redis/users.acl zur Bearbeitung.

$ sudo nano /etc/redis/users.acl

Fügen Sie die folgende Zeile hinzu.

user navjot on +@all ~* >yourpassword

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Starten Sie den Redis-Server neu, um die Änderung zu implementieren.

$ sudo systemctl restart redis

Öffnen Sie die Redis-Shell.

$ redis-cli

Verwenden Sie den Befehl PING. Es wird ein Authentifizierungsfehler angezeigt.

127.0.0.1:6379> PING
(error) NOAUTH Authentifizierung erforderlich.

Verwenden Sie den Befehl AUTH, um sich anzumelden.

127.0.0.1:6379> AUTH navjot yourpassword
OK

Verwenden Sie den Befehl PING erneut.

127.0.0.1:6379> PING
OK

Verlassen Sie die Shell.

127.0.0.1:6379> exit

Sie müssen auch die PHP-Redis-Erweiterung installieren.

$ sudo apt install php-redis

Schritt 8 - Craft CMS installieren

Bevor Sie Craft CMS installieren, können Sie überprüfen, ob Sie alle Serveranforderungen für die Ausführung mit dem folgenden Befehl erfüllen.

$ curl -Lsf https://raw.githubusercontent.com/craftcms/server-check/HEAD/check.sh | bash

Sie erhalten die folgende Ausgabe.

Führe Craft Server Check aus…

Craft CMS-Anforderungsprüfer

Dieses Skript überprüft, ob Ihre Webserverkonfiguration die Anforderungen für die Ausführung einer Craft CMS-Installation erfüllt.
Es überprüft, ob der Server die richtige Version von PHP ausführt, ob die entsprechenden PHP-Erweiterungen geladen wurden und ob die Einstellungen der php.ini-Datei korrekt sind.


Ergebnisse:
--------

PHP 8.2+: OK

BCMath-Erweiterung: OK

ctype-Erweiterung: OK

cURL-Erweiterung: OK

DOM-Erweiterung: OK

Fileinfo-Erweiterung: OK

GD-Erweiterung oder ImageMagick-Erweiterung: OK

iconv-Erweiterung: OK

Intl-Erweiterung: OK

JSON-Erweiterung: OK

Multibyte-String-Erweiterung (mit deaktivierter Funktionsüberladung): OK

OPcache-Erweiterung (mit save_comments): OK

OpenSSL-Erweiterung: OK

PCRE-Erweiterung (mit UTF-8-Unterstützung): OK

PDO-Erweiterung: OK

Reflection-Erweiterung: OK

SPL-Erweiterung: OK

Zip-Erweiterung: OK

ignore_user_abort(): OK

password_hash(): OK

proc_close(): OK

proc_get_status(): OK

proc_open(): OK

proc_terminate(): OK

allow_url_fopen: OK

ini_set-Aufrufe: OK

Speicherlimit: OK

------------------------------------------
Fehler: 0   Warnungen: 0   Gesamtprüfungen: 27

Sobald alles in Ordnung ist, können Sie fortfahren. Erstellen Sie das Web-Stammverzeichnis.

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

Setzen Sie den aktuell angemeldeten Benutzer als Eigentümer dieses Verzeichnisses.

$ sudo chown -R $USER:$USER /var/www/html/craftcms

Wechseln Sie in das Verzeichnis.

$ cd /var/www/html/craftcms

Laden Sie Craft CMS mit Composer herunter und installieren Sie es. Der Punkt (.) am Ende des Befehls bedeutet, dass die Installation im aktuellen Verzeichnis durchgeführt werden soll.

$ composer create-project craftcms/craft .

Während der Installation werden Sie nach mehreren Details zur Datenbank, dem Administratorkonto, der Site-URL und deren Sprache gefragt, wie unten gezeigt.

> @php craft setup/welcome

   ______ .______          ___       _______ .___________.
  /      ||   _  \        /   \     |   ____||           |
 |  ,----'|  |_)  |      /  ^  \    |  |__   `---|  |----`
 |  |     |      /      /  /_\  \   |   __|      |  |
 |  `----.|  |\  \----./  _____  \  |  |         |  |
  \______|| _| `._____/__/     \__\ |__|         |__|

     E       I   N   E       N   E   U   E       I   N   S   T   A   L   L
               ______ .___  ___.      _______.
              /      ||   \/   |     /       |
             |  ,----'|  \  /  |    |   (----`
             |  |     |  |\/|  |     \   \
             |  `----.|  |  |  | .----)   |
              \______||__|  |__| |_______|


Generiere eine Anwendungs-ID ... erledigt (CraftCMS--923f03f1-9bea-4c3d-a7ca-1466645ce75d)
Generiere einen Sicherheitsschlüssel ... erledigt (iMdcUi6wQyf9MshEda__vZcCwILbclxz)


Willkommen bei Craft CMS!

Sind Sie bereit, mit der Einrichtung zu beginnen? (ja|nein) [nein]:ja
Welchen Datenbanktreiber verwenden Sie? (mysql oder pgsql) [mysql] pgsql
Datenbankservername oder IP-Adresse: [127.0.0.1]
Datenbankport: [5432]
Datenbankbenutzername: [root] craftuser
Datenbankpasswort:
Datenbankname: craftcms
Datenbanktabellenpräfix:
Überprüfen der Datenbankanmeldeinformationen ... Erfolg!
Verwende das Standard-Schema "public".
Speichern der Datenbankanmeldeinformationen in Ihrer .env-Datei ... erledigt

Jetzt Craft installieren? (ja|nein) [ja]:ja

Benutzername: [admin] navjot
E-Mail: [email protected]
Passwort:
Bestätigen:
Site-Name: Howtoforge Tutorials
Site-URL: https://craftcms.example.com
Site-Sprache: [en-US]
*** Craft installieren

Redis mit Craft CMS zum Laufen bringen

Installieren Sie das Paket yiisoft/yii2-redis.

$ composer require --prefer-dist yiisoft/yii2-redis:"~2.0.0"

Öffnen Sie die Datei /var/www/html/craftcms/config/app.php zur Bearbeitung.

$ nano config/app.php

Sie sehen den folgenden Inhalt darin.

use craft\helpers\App;

return [
    'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
];

Ändern Sie es wie folgt.

use craft\helpers\App;

return [
    'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
    'components' => [
        'cache' => function() {
            $config = [
                'class' => yii\redis\Cache::class,
                'keyPrefix' => Craft::$app->id,
                'defaultDuration' => Craft::$app->config->general->cacheDuration,

                // Vollständige Redis-Verbindungsdetails:
                'redis' => [
                    'hostname' => App::env('REDIS_HOSTNAME') ?: 'localhost',
                    'port' => 6379,
                    'username' => App::env('REDIS_USERNAME') ?: null,
                    'password' => App::env('REDIS_PASSWORD') ?: null,
                ],
            ];

            return Craft::createObject($config);
        },
    ],
];

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden. Dadurch wird Redis als Cache-Speicher für Craft CMS aktiviert. Sie können Redis auch zur Speicherung von PHP-Sitzungsdaten, für die Jobwarteschlange und als Mutex-Treiber verwenden. Die Konfiguration dafür finden Sie in der Dokumentation von Craft CMS.

Sie müssen auch die Redis-Konfiguration in die .env-Datei hinzufügen.

$ nano .env

Fügen Sie den folgenden Code am Ende der Datei hinzu.

REDIS_HOSTNAME=localhost
REDIS_USERNAME=navjot
REDIS_PASSWORD=yourpassword

Wählen Sie die Optionen wie oben gezeigt. Sobald Sie fertig sind, ändern Sie die Gruppe des Verzeichnisses in nginx. Auf diese Weise haben sowohl der aktuell angemeldete Benutzer als auch Nginx Zugriff auf Craft CMS.

$ sudo chgrp -R nginx /var/www/html/craftcms

Geben Sie der Gruppe nginx die Berechtigung, in das Verzeichnis zu schreiben.

$ sudo chmod -R g+w /var/www/html/craftcms

Von hier an müssen Sie die Berechtigungen nicht mehr ändern und können alle Operationen ohne Root-Rechte durchführen.

Schritt 9 - SSL installieren

Wir müssen Certbot installieren, um das SSL-Zertifikat zu generieren. Wir werden dafür den Snapd-Paketinstaller verwenden. Da Rocky Linux nicht mit ihm ausgeliefert wird, installieren Sie den Snapd-Installer. Er benötigt das EPEL (Extra Packages for Enterprise Linux)-Repository, um zu funktionieren. Da wir es jedoch bereits in Schritt 3 installiert haben, können wir direkt fortfahren.

Installieren Sie Snapd.

$ sudo dnf install -y snapd

Aktivieren und starten Sie den Snap-Dienst.

$ sudo systemctl enable snapd --now

Installieren Sie das Snap-Core-Paket und stellen Sie sicher, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Erstellen Sie die erforderlichen 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

Installieren Sie Certbot.

$ sudo snap install --classic certbot

Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.

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

Überprüfen Sie, ob Certbot korrekt funktioniert.

$ certbot --version
certbot 2.7.4

Führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d craftcms.example.com

Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/craftcms.example.com auf Ihrem Server herunter.

Generieren Sie ein Diffie-Hellman-Gruppe-Zertifikat.

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

Überprüfen Sie den Zeitplan des Certbot-Erneuerungsdienstes.

$ sudo systemctl list-timers

Sie finden snap.certbot.renew.service als einen der Dienste, die geplant sind.

NÄCHSTER                        LINKS         LETZTER                        VERGANGEN     EINHEIT                      AKTIVIERT
---------------------------------------------------------------------------------------------------------------------------               
Mon 2023-12-04 23:38:47 UTC 18min links Mon 2023-12-04 22:19:02 UTC 1h 0min ago dnf-makecache.timer          dnf-makecache.service
Tue 2023-12-05 00:00:00 UTC 40min links -                           -           logrotate.timer              logrotate.service
Tue 2023-12-05 09:36:00 UTC 10h links   -                           -           snap.certbot.renew.timer     snap.certbot.renew.service

Führen Sie einen Testlauf des Prozesses durch, um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.

Schritt 10 - SELinux konfigurieren

Ändern Sie den Dateisicherheitskontext für Craft CMS.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/craftcms(/.*)?"

Wenden Sie die Richtlinie an.

$ sudo restorecon -Rv /var/www/html/craftcms/

Wenden Sie die Richtlinie an, um Nginx den Zugriff auf PostgreSQL zu gewähren.

$ sudo setsebool -P httpd_can_network_connect_db 1

Wenden Sie die Richtlinie an, um Verbindungen zu externen Hosts zuzulassen.

$ sudo setsebool -P httpd_can_network_connect 1

Mit MariaDB 10.11 werden Sie auf ein weiteres Problem stoßen, bei dem SELinux PHP-FPM daran hindert, eine Verbindung zu MariaDB herzustellen. Das kann gelöst werden, indem ein SELinux-Modul installiert wird. Der erste Schritt besteht darin, eine Type Enforcement-Datei zu erstellen.

Erstellen Sie die Datei my-phpfpm.te in Ihrem Home-Verzeichnis und öffnen Sie sie zur Bearbeitung.

$ cd ~
$ nano my-phpfpm.te

Fügen Sie den folgenden Code ein.

module my-phpfpm 1.0;

require {
        type unconfined_service_t;
        type httpd_t;
        type httpd_sys_content_t;
        class dir write;
        class unix_stream_socket connectto;
}

#============= httpd_t ============== 

#!!!! Diese avc ist in der aktuellen Richtlinie erlaubt
allow httpd_t httpd_sys_content_t:dir write;

#!!!! Diese avc ist in der aktuellen Richtlinie erlaubt
allow httpd_t unconfined_service_t:unix_stream_socket connectto;

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Der nächste Schritt besteht darin, sie mit dem folgenden Befehl in ein Richtlinienmodul zu konvertieren. Ändern Sie den Dateinamen im Befehl nicht, da er sonst nicht funktioniert. Das Modul heißt my-phpfpm, und der Dateiname sollte der gleiche sein wie der Modulname.

$ sudo checkmodule -M -m -o my-phpfpm.mod my-phpfpm.te

Als Nächstes müssen wir das Richtlinienmodul kompilieren, um ein Richtlinienpaket zu erstellen.

$ sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod

Der letzte Schritt besteht darin, das Richtlinienpaket mit dem Befehl semodule zu laden, der die Richtlinie installiert, die verwendet werden soll.

$ sudo semodule -i my-phpfpm.pp

Schritt 11 - Nginx konfigurieren

Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.

$ sudo nano /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.

server_names_hash_bucket_size 64;

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/craftcms.conf zur Bearbeitung.

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

Fügen Sie den folgenden Code ein. Ersetzen Sie craftcms.example.com durch Ihren Domainnamen. Stellen Sie sicher, dass der Wert von client_max_body_size auf 128 MB festgelegt ist, was wir zuvor für Craft CMS bei der Konfiguration von PHP festgelegt haben.

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name craftcms.example.com;
    root /var/www/html/craftcms/web;

    index index.php;
    client_max_body_size 128M;

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

    ssl_certificate      /etc/letsencrypt/live/craftcms.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/craftcms.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/craftcms.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        try_files $uri/index.html $uri $uri/ /index.php?$query_string;
    }

    location ~ [^/]
.php(/|$) {
        try_files $uri $uri/ /index.php?$query_string;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_keep_conn on;
        include fastcgi_params;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTP_PROXY "";
    }
}
# HTTPS erzwingen
server {
    listen 80;
    listen [::]:80;
    server_name  craftcms.example.com;
    return 301   https://$host$request_uri;
}

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Überprüfen Sie Ihre Nginx-Konfiguration.

$ sudo nginx -t

Starten Sie den Nginx-Server neu.

$ sudo systemctl restart nginx

Schritt 12 - Greifen Sie auf Craft CMS zu

Öffnen Sie die URL https://craftcms.example.com in Ihrem Browser, und Sie werden zur folgenden Seite geleitet.

Craft CMS-Homepage

Um auf die Administrationsseite zuzugreifen, besuchen Sie die URL https://craftcms.example.com/admin, und Sie werden zur Anmeldeseite geleitet.

Craft CMS-Anmeldeseite

Geben Sie Ihre Administrationsanmeldeinformationen ein und klicken Sie auf die Schaltfläche Anmelden, um sich anzumelden. Sie werden zum folgenden Dashboard geleitet.

Craft CMS-Admin-Dashboard

Sie können jetzt beginnen, Craft CMS zum Erstellen Ihrer Website zu verwenden.

Schritt 13 - Sichern und Wiederherstellen von Craft CMS

Sie können die Datenbank von Craft CMS über das Admin-Panel sichern, indem Sie Admin-Dashboard >> Dienstprogramme >> Datenbanksicherung besuchen.

Craft CMS-Datenbanksicherung

Klicken Sie auf die Schaltfläche Sichern, um Ihre Datenbanksicherung herunterzuladen. Sie können die Sicherung auch über das Terminal erstellen. Führen Sie den folgenden Befehl aus, um die Sicherung zu erstellen. Geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden.

$ mysqldump -u craftcmsuser -p craftcms > ~/craftcms.database.sql

Sie können die Datenbanksicherung auch mit dem Befehlszeilen-Dienstprogramm von Craft CMS erstellen. Der Vorteil dieses Dienstprogramms besteht darin, dass Sie Ihre Datenbankanmeldeinformationen nicht übergeben müssen. Lesen Sie hier mehr über das Befehlszeilen-Dienstprogramm von Craft CMS.

$ cd /var/www/html/craftcms
$ php craft db/backup ~/
Datenbank wird gesichert ... erledigt
Sicherungsdatei: /home/navjot/howtoforge-tutorials--2023-12-03-065138--v4.5.11.1.sql (200.019 KB)

Wenn Sie im obigen Befehl keinen Speicherort angeben, wird die Sicherungsdatei im Verzeichnis /var/www/html/craftcms/storage/backups geschrieben.

Um die Dateien zu sichern, kopieren und speichern Sie den gesamten Ordner /var/www/html/craftcms.

$ cd /var/www/html
$ tar -zcf ~/craftcms.tar.gz craftcms

Um es auf einem neuen Server wiederherzustellen, extrahieren Sie die Dateien in den Ordner /var/www/html.

$ tar -xzf craftcms.tar.gz -C /var/www/html/

Erstellen Sie eine Datenbank mit denselben Anmeldeinformationen auf dem neuen Server und stellen Sie die Datenbank mit dem folgenden Befehl wieder her. Geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden.

$ mysqlimport -u craftcmsuser -p craftcms craftcms.database.sql

Schritt 14 - Craft CMS aktualisieren

Es gibt zwei Möglichkeiten, Craft CMS zu aktualisieren. Eine davon ist über das Administrationspanel. Wenn ein Update verfügbar ist, erhalten Sie eine Benachrichtigung. Klicken Sie auf die Benachrichtigung, um das Upgrade durchzuführen. Craft CMS sichert automatisch die Datenbank, bevor es ein Update durchführt.

Sie können es auch über das Terminal aktualisieren.

Um alle verfügbaren Updates zu überprüfen, führen Sie den folgenden Befehl aus.

$ cd /var/www/html/craftcms/
$ php craft update

Wenn ein Update verfügbar ist, führen Sie den folgenden Befehl aus, um es anzuwenden.

$ php craft update all

Fazit

Damit endet unser Tutorial, in dem Sie gelernt haben, wie Sie die Craft CMS-Software auf einem Debian 12-Server installieren. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.