CMS Installation · 18 min read · Oct 23, 2025

So installieren Sie Craft CMS auf Debian 12

Craft CMS ist ein Open-Source-Content-Management-System zur Erstellung aller Arten 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 Kontrollpanel für die Erstellung von Inhalten 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 erfahren 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 Debian 12 mit mindestens 1 GB RAM ausführt.
  • Ein Nicht-Root-Benutzer mit Sudo-Rechten.
  • Die Uncomplicated Firewall (UFW) ist aktiviert und läuft.
  • 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 apt update && sudo apt upgrade
  • Einige grundlegende 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 apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y

Schritt 1 - Firewall konfigurieren

Der erste Schritt vor der Installation von Paketen besteht darin, die Firewall so zu konfigurieren, dass HTTP- und HTTPS-Verbindungen zugelassen werden.

Überprüfen Sie den Status der Firewall.

$ sudo ufw status

Sie sollten etwas sehen, das wie folgt aussieht.

Status: aktiv

Zu                         Aktion      Von
--                         ------      ----
OpenSSH                    ERLAUBEN    Überall
OpenSSH (v6)               ERLAUBEN    Überall (v6)

Erlauben Sie HTTP- und HTTPS-Ports.

$ sudo ufw allow http
$ sudo ufw allow https

Überprüfen Sie den Status erneut zur Bestätigung.

$ sudo ufw status
Status: aktiv

Zu                         Aktion      Von
--                         ------      ----
OpenSSH                    ERLAUBEN    Überall
80/tcp                     ERLAUBEN    Überall
443/tcp                    ERLAUBEN    Überall
OpenSSH (v6)               ERLAUBEN    Überall (v6)
80/tcp (v6)                ERLAUBEN    Überall (v6)
443/tcp (v6)               ERLAUBEN    Überall (v6)

Schritt 2 - Nginx installieren

Debian 12 wird mit einer älteren Version von Nginx ausgeliefert. Sie müssen das offizielle Nginx-Repository herunterladen, um die neueste Version zu installieren.

Importieren Sie den Signaturschlüssel von Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Fügen Sie das Repository für die stabile Version von Nginx hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Aktualisieren Sie die System-Repositorys.

$ sudo apt update

Installieren Sie Nginx.

$ sudo apt install nginx

Überprüfen Sie die Installation. Auf Debian-Systemen funktioniert der folgende Befehl nur mit sudo.

$ sudo nginx -v
nginx version: nginx/1.24.0

Starten Sie den Nginx-Server.

$ sudo systemctl start nginx

Überprüfen Sie den Dienststatus.

$ sudo systemctl status nginx
? nginx.service - nginx - Hochleistungs-Webserver
     Geladen: geladen (/lib/systemd/system/nginx.service; aktiviert; voreingestellt: aktiviert)
     Aktiv: aktiv (läuft) seit Fr 2023-12-01 09:46:46 UTC; 18s ago
       Docs: https://nginx.org/en/docs/
    Prozess: 39483 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Haupt-PID: 39484 (nginx)
      Aufgaben: 2 (Limit: 2315)
     Speicher: 1.7M
        CPU: 6ms
     CGroup: /system.slice/nginx.service
             ??39484 "nginx: Masterprozess /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??39485 "nginx: Arbeitsprozess"

Schritt 3 - PHP und Erweiterungen installieren

Debian 12 wird standardmäßig mit PHP 8.2 ausgeliefert. Sie können es und die von Craft CMS benötigten Erweiterungen installieren, indem Sie den folgenden Befehl ausführen.

$ sudo apt 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

Um immer auf der neuesten Version von PHP zu bleiben oder wenn Sie mehrere Versionen von PHP installieren möchten, fügen Sie Ondrejs PHP-Repository hinzu.

Zuerst importieren Sie den GPG-Schlüssel des Sury-Repo PHP.

$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Fügen Sie Ondrej Surys PHP-Repository hinzu.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

Aktualisieren Sie Ihre System-Repository-Liste.

$ sudo apt update

Sie erhalten wahrscheinlich Informationen über ausstehende Updates. Führen Sie diese aus.

$ sudo apt upgrade

Installieren Sie PHP und seine Erweiterungen.

$ sudo apt install php8.2 php8.2-cli php8.2-common php8.2-gmp php8.2-fpm php8.2-xmlrpc php8.2-bcmath php8.2-imagick php8.2-curl php8.2-zip php8.2-gd php8.2-mysql php8.2-xml php8.2-mbstring php8.2-xmlrpc php8.2-intl php8.2-pgsql

Überprüfen Sie die installierte PHP-Version.

$ php --version
PHP 8.2.13 (cli) (built: Nov 24 2023 13:10:42) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.13, Copyright (c) Zend Technologies
    mit Zend OPcache v8.2.13, Copyright (c), von Zend Technologies

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

$ sudo systemctl status php8.2-fpm
? php8.2-fpm.service - Der PHP 8.2 FastCGI-Prozessmanager
     Geladen: geladen (/lib/systemd/system/php8.2-fpm.service; aktiviert; voreingestellt: aktiviert)
     Aktiv: aktiv (läuft) seit Fr 2023-12-01 10:29:53 UTC; 34min ago
       Docs: man:php-fpm8.2(8)
    Prozess: 65825 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.2/fpm/pool.d/www.conf 82 (code=exited, status=0/SUCCESS)
   Haupt-PID: 65821 (php-fpm8.2)
     Status: "Aktive Prozesse: 0, im Leerlauf: 3, Anfragen: 208, langsam: 0, Verkehr: 0.2req/sec"
      Aufgaben: 4 (Limit: 2315)
     Speicher: 83.4M
        CPU: 6.456s
     CGroup: /system.slice/php8.2-fpm.service
             ??65821 "php-fpm: Masterprozess (/etc/php/8.2/fpm/php-fpm.conf)"
             ??65823 "php-fpm: Pool www"
             ??65824 "php-fpm: Pool www"
             ??65843 "php-fpm: Pool www"

Schritt 4 - PHP-FPM konfigurieren

Öffnen Sie php.ini zur Bearbeitung.

$ sudo nano /etc/php/8.2/fpm/php.ini

Um die Dateigrößen für Uploads 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/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/' /etc/php/8.2/fpm/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/8.2/fpm/php.ini

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

$ sudo nano /etc/php/8.2/fpm/pool.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 Standardbenutzergruppe verwendet.
;       wird verwendet.
user = nginx
group = nginx
...

Suchen Sie auch die Zeilen listen.owner=www-data und listen.group=www-data in der Datei und ändern Sie sie in nginx.

listen.owner = nginx
listen.group = nginx

Speichern Sie die Datei, indem Sie Strg + 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 php8.2-fpm

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

Debian 12 wird standardmäßig mit PostgreSQL 15 ausgeliefert. Wir werden stattdessen PostgreSQL 16 verwenden.

Führen Sie 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

Fügen Sie das APT-Repository zu Ihrer Quellenliste hinzu.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Aktualisieren Sie das System-Repository.

$ sudo apt update

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

$ sudo apt install postgresql postgresql-contrib

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

Überprüfen Sie die Version.

$ psql --version
psql (PostgreSQL) 16.1 (Debian 16.1-1.pgdg120+1)

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

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Geladen: geladen (/lib/systemd/system/postgresql.service; aktiviert; voreingestellt: aktiviert)
     Aktiv: aktiv (beendet) seit Mi 2023-11-29 05:54:03 UTC; 11s ago
   Haupt-PID: 20170 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Nov 29 05:54:03 craftcms systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Nov 29 05:54:03 craftcms systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

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 'Ihr_Passwort';

Ä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 für die 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
Passwort:
psql (16.1 (Debian 16.1-1.pgdg120+1))
SSL-Verbindung (Protokoll: TLSv1.3, Chiffre: TLS_AES_256_GCM_SHA384, Kompression: aus)
Geben Sie "help" ein, um Hilfe zu erhalten.

craftcms=>

Verlassen Sie die Shell, indem Sie \q eingeben.

Schritt 7 - Redis installieren und konfigurieren

Debian 12 wird standardmäßig mit Redis 7.0 ausgeliefert, was wir verwenden werden. Installieren Sie Redis.

$ sudo apt install redis

Überprüfen Sie die Version.

$ redis-server --version
Redis-Server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=c4e7f6bf175a885b

Wenn Sie jedoch die neueste Version installieren möchten, können Sie dies tun, indem Sie das offizielle Repository von Redis verwenden, indem Sie die folgenden Befehle ausführen.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
$ sudo apt update
$ sudo apt install redis

Der nächste Schritt besteht darin, die Authentifizierung für den Redis-Server hinzuzufügen. Seit Redis v6.0 ist der beste Weg, die 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 Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Erstellen Sie als Nächstes die Datei /etc/redis/users.acl und öffnen Sie sie 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 Strg + 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 erfüllen, indem Sie den folgenden Befehl ausführen.

$ 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 wird ü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 bezüglich der Datenbank, des Administratorkontos, der Site-URL und ihrer Sprache gefragt, wie unten gezeigt.

> @php craft setup/welcome

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

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


Generierung einer Anwendungs-ID ... abgeschlossen (CraftCMS--923f03f1-9bea-4c3d-a7ca-1466645ce75d)
Generierung eines Sicherheitsschlüssels ... abgeschlossen (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üfung der Datenbankanmeldeinformationen ... erfolgreich!
Verwendung des Standardschemas "public".
Speichern der Datenbankanmeldeinformationen in Ihrer .env-Datei ... abgeschlossen

Craft jetzt 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 wird installiert

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 Strg + 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. Sie können Certbot entweder mit dem Repository von Debian installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.

Debian 12 wird nicht mit Snapd ausgeliefert. Installieren Sie das Snapd-Paket.

$ sudo apt install snapd

Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

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-Gruppen-Zertifikat.

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

Überprüfen Sie den Zeitplan für den Certbot-Erneuerungsdienst.

$ sudo systemctl list-timers

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

NÄCHSTER                        LINKS         LETZTER                        VERGANGEN     EINHEIT                      AKTIVIERT
---------------------------------------------------------------------------------------------------------------------------               
Fr 2023-12-01 10:39:00 UTC 12min übrig   Fr 2023-12-01 10:09:01 UTC 17min ago  phpsessionclean.timer    phpsessionclean.service
Fr 2023-12-01 17:01:47 UTC 6h übrig      Do 2023-11-30 17:01:47 UTC 17h ago    systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fr 2023-12-01 18:34:00 UTC 8h übrig      -                           -          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 - 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 Strg + 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/php8.2-fpm.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 Strg + 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 11 - Greifen Sie auf Craft CMS zu

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

Craft CMS-Homepage

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

Craft CMS-Anmeldeseite

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

Craft CMS-Admin-Dashboard

Sie können jetzt beginnen, Craft CMS zu verwenden, um Ihre Website zu erstellen.

Schritt 12 - Sichern und Wiederherstellen von Craft CMS

Sie können die Datenbank von Craft CMS über das Administrationspanel 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 angeben 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 ... abgeschlossen
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 einfach 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 13 - Craft CMS aktualisieren

Es gibt zwei Möglichkeiten, Craft CMS zu aktualisieren. Eine Möglichkeit 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 bitte in die Kommentare unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.