Shopware mit Redis verbinden

Shopware 5 und Redis verbinden

Redis ist eine In-Memory Datenbank, deren Inhalte besonders schnell gelesen und geschrieben werden können, weil diese direkt im Arbeitsspeicher des Servers verarbeitet werden. Die Community Edition von Shopware 5 kann, laut Dokumentation, von Haus aus die Sessions, den Backend Cache und den Model Cache in Redis ablegen.

In diesem Beitrag wollen wir zeigen, wie Sie Shopware 5 mit einer Redis Instanz konfigurieren. Bitte beachten Sie: Diese Anleitung ist auf Basis der Shopware Version 5.6.8 erstellt. Redis als Cache Backend ist ab Shopware 5.3 implementiert. Es kann jedoch sein, dass bei früheren Versionen Features nicht funktionieren. Mögliche Bugs können wir im Rahmen dieser Anleitung nicht berücksichtigen.

Redis Instanz mit 3 Datenbanken anlegen

Damit Sie die entsprechenden Informationen in Redis ablegen können, erstellen Sie im ersten Schritt eine Redis Instanz mit mindestens 3 Datenbanken. Wie Sie eine Redis Instanz anlegen, haben wir in der Anleitung Redis Instanz einrichten zusammengefasst. In Schritt 4 im Formular bei "Max. Anzahl Datenbanken" tragen Sie bitte mindestens 3 ein, da Sie 3 Datenbanken benötigen. Sie können auch eine bestehende Redis Instanz bearbeiten und die Anzahl der Datenbanken anpassen.

Notieren Sie sich die Zugangsdaten

Nach dem Speichern und einem Klick auf die Redis Instanz, werden uns die jeweiligen Zugangsdaten und Pfade angezeigt. Sie finden alle Redis Datenbanken unter "Webseiten"  im Untermenü "Redis Datenbanken".


Notieren Sie sich:

  • Redis Socket Pfad
  • Redis Passwort

Ergebnis: Die Zugangsdaten haben Sie notiert!


Klicken Sie auf das Bild, um es zu vergrößern.

Redis als Session Speicher einrichten

Im Standard speichert Shopware die Informationen einer Session in eine SQL Datenbank (MariaDB / MySQL). Bei jedem Seitenaufruf werden also Informationen über den Besucher verarbeitet, aus der (SQL) Datenbank gelesen und / oder in die (SQL) Datenbank geschrieben. Mithilfe der Sessions kann sich ein User durch einen Shop klicken, ohne dass er seinen Warenkorb verliert. Außerdem wird zum Beispiel der Login-Status festgehalten, die zuletzt angesehenen Artikel gespeichert und vieles mehr, was das Shoppen für den Besucher im Shop einfacher macht.

Dadurch, dass die Informationen zu der Session in Redis abgelegt werden, gewinnt man Performance-Vorteile, weil das Aktualisieren einer Information in Redis keine blockierende Eigenschaft hat und die Information direkt im Arbeitsspeicher des Servers abgelegt wird.

Damit PHP die Anweisung bekommt, die Session Informationen in Redis zu speichern, müssen wir noch die php.ini Einstellung anpassen.

Managed vServer, Managed Server & Cloud: Loggen Sie sich bitte über Ihr Server Control Panel ein.


1

  • Loggen Sie sich ein (siehe Hinweis).
  • Wählen Sie im Hauptmenü den Punkt "Webseiten".

Ergebnis: Die Seite "Webseiten" wird angezeigt.


Klicken Sie auf das Bild, um es zu vergrößern.

2

  • Es werden alle zu verwaltenden Websites aufgelistet.
  • Klicken Sie die entsprechende Website für die Konfiguration an.

Ergebnis: Die Seite "Webseite" wird angezeigt.



3

  • Es gibt mehrere Bereiche für die Konfiguration der Webseite.
  • Hier den Reiter "Optionen" wählen.

Ergebnis: Das Formular Optionen wird angezeigt.



4

  • Füllen Sie das Feld individuelle php.ini-Einstellungen aus.
  • Dafür die vorgefertigte Konfiguration [Redis Session Save Handler.] anklicken.
  • Die Eingabe mit dem grünen Button Speichern bestätigen.

Ergebnis: Die Platzhalter werden mit den Daten aus der Redis Instanz befüllt und in die php Konfiguration geschrieben.


Hinweis für die Verwendung mit der JTL-WaWi

Bei der Verwendung der JTL-WaWi müssen Sie die Einstellungen ein wenig anpassen, damit diese noch korrekt funktioniert.

  • Wechseln Sie zunächst auf den 'Domain'-Reiter Ihrer Webseite und stellen Sie die gewünschte Konfiguration auf -.
  • Wechseln Sie anschließend auf den 'Optionen'-Reiter.
  • Laden Sie per Klick auf [Shopware (PHP).] und anschließend auf [Standard-Konfiguration (PHP).] unter dem Textfeld für 'Individuelle php.ini-Einstellungen' unsere PHP-Vorlage für Shopware 5. Die Zeilen mit session.save_handler und session.save_path dürfen in den PHP-Einstellungen nicht vorhanden sein!
  • Laden Sie nun per Klick auf [Shopware 5.1.x - 5.7.x.] unter dem Textfeld für 'nginx-Direktiven' unsere Shopware 5-Vorlage.
  • In dem nun im Textfeld erscheinenden Text suchen Sie den mit location ~ \.php$ { beginnenden Abschnitt. Innerhalb diesen Abschnitts fügen Sie unter der Zeile fastcgi_param PATH "/usr/local/bin:/usr/bin"; die Zeile fastcgi_param PHP_VALUE "session.save_handler = 'redis'; \n session.save_path = 'tcp://[Server Adresse]:[Port]?database=0&auth=[REDIS PASSWORD]';"; ein.
  • Ersetzen Sie [Server Adresse] durch 127.0.0.1, falls der Redis-Dienst auf dem gleichen Server läuft, oder durch die IP-Adresse des externen Redis-Servers.
  • Ersetzen Sie [Port] durch den Port, der Ihnen im ISPConfig angezeigt wurde.
  • Ersetzen Sie [REDIS PASSWORD] durch das Passwort, welches Ihnen angezeigt wurde.

config.php bearbeiten

In der config.php erhält Shopware zusätzlich noch die Anweisung die entsprechenden Daten aus Redis abzurufen bzw. dort auch abzuspeichern.

Bevor man beginnt die config.php Einstellungen zu verändern, sollte man sich eine Kopie der Datei im Ordner private/ ablegen.


config.php öffnen

Sie müssen Ergänzungen in der config.php vornehmen.

  • Loggen Sie sich mit Ihrem FTP-Zugang ein.
  • Wählen Sie "web" und danach "config.php".
  • Öffnen Sie mit einem Editor die Datei.

Ergebnis: Die config.php ist geöffnet!



Session Konfiguration

Beispiel Konfiguration für Frontend und Backend Sessions im Redis (Shopware-Doku)
Ersetzen Sie alle nötigen Angaben.

// Sessions für Backend und Frontend im Redis in der DB0
  'session' => [
      'save_handler' => 'redis',
      'save_path' => '/var/www/clients/clientX/webY/private/redis.sock?database=0&auth=RedisPASSWORT',
  ],

  'backendsession' => [
      'save_handler' => 'redis',
      'save_path' => '/var/www/clients/clientX/webY/private/redis.sock?database=0&auth=RedisPASSWORT',
  ],


Model Cache

Beispiel Konfiguration für Model Cache im Redis (Shopware-Doku).
Ersetzen Sie alle nötigen Angaben.

// Models Cache im Redis in der DB1
  'model' => [
      'redisHost' => '/var/www/clients/clientX/webY/private/redis.sock',
      'redisPort' => '0',
      'redisDbIndex' => '1',
      'cacheProvider' => 'redis',
      'redisAuth' => 'RedisPASSWORT'
  ],



Backend Cache

Beispiel Konfiguration für Backend Cache im Redis.
Ersetzen Sie alle nötigen Angaben.

// Shopware Backend Cache im Redis in der DB2
  'cache' => [
          'backend' => 'redis',
          'backendOptions' => [
              'servers' => [
              [
              'host' => '/var/www/clients/clientX/webY/private/redis.sock',
              'port' => '0',
              'redisAuth' => 'RedisPASSWORT',
              'dbindex' => '2',
              ],
          ],
      ],
  ],



Shopware config.php

Die gesamte Konfiguration sieht in unserem Beispiel dann so aus.
Ersetzen Sie alle nötigen Angaben.


<?php return array (
  
// MySQL / MariaDB Datenbank-Zugansgdaten
  'db' =>
  array (
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'DATENBANKUSERNAME',
    'password' => 'DBUserPasswort',
    'dbname' => 'DATENBANKNAME',
  ),

// Sessions für Backend und Frontend im Redis in der DB0
  'session' => [
      'save_handler' => 'redis',
      'save_path' => '/var/www/clients/clientX/webY/private/redis.sock?database=0&auth=RedisPASSWORT',
  ],

  'backendsession' => [
      'save_handler' => 'redis',
      'save_path' => '/var/www/clients/clientX/webY/private/redis.sock?database=0&auth=RedisPASSWORT',
  ],

// Models Cache im Redis in der DB1
  'model' => [
      'redisHost' => '/var/www/clients/clientX/webY/private/redis.sock',
      'redisPort' => '0',
      'redisDbIndex' => '1',
      'cacheProvider' => 'redis',
      'redisAuth' => 'RedisPASSWORT'
  ],

// Shopware Backend Cache im Redis in der DB2
  'cache' => [
          'backend' => 'redis',
          'backendOptions' => [
              'servers' => [
              [
              'host' => '/var/www/clients/clientX/webY/private/redis.sock',
              'port' => '0',
              'redisAuth' => 'RedisPASSWORT',
              'dbindex' => '2',
              ],
          ],
      ],
  ],
  
);




config.php hochladen

  • Loggen Sie sich mit Ihrem FTP-Zugang ein.
  • Wählen Sie "web".
  • Laden Sie die bearbeitete Datei "config.php" wieder hoch.

Ergebnis: Die config.php ist angepasst und hochgeladen.


Cache leeren & aufräumen.

Dadurch, dass die Sessions und weitere Daten anders gespeichert werden als bisher, muss der Shopware 5 Cache einmal geleert werden. Das lässt sich sehr schnell in der Shell (Anleitung Shell Benutzer anlegen) mit der Shopware Console erledigen.

cd /var/www/website-name.tld/web/
php bin/console sw:cache:clear

Hier muss beachtet werden, dass man sich im richtigen Verzeichnis befindet. Sollte der Document Root abweichend sein, muss man die Pfade im Beispiel entsprechend anpassen. Wer einen Shell User ohne Jailkit benutzt, müsste hier vorher noch die PHP-Version der Seite im ISPConfig ablesen und dann den vollen Pfad zur PHP-Binary nutzen. Wenn man PHP 7.3.1 benutzt, würde das so aussehen:

cd /var/www/website-name.tld/web/
/opt/php-7.3.1/bin/php bin/console sw:cache:clear

Fragen & Antworten

Es gibt mehrere Möglichkeiten, die übersehen oder vergessen worden sein können. Probieren Sie bitte folgendes:

  • Prüfen Sie in der config.php, ob alle Klammern (]) und Kommas (,) korrekt gesetzt sind. Wie schnell übersieht man hier etwas.
  • Wurden die php.ini Einstellungen gespeichert?
  • Wurde der Cache korrekt geleert?
  • Gegebenenfalls einen Blick in das error.log werfen. Das kann bei der Fehlersuche hilfreich sein: "Fehlermeldung, was kann ich tun?"

Geschafft: Sie haben Redis und Shopware 5 verbunden und den Cache geleert!

Finden Sie den passenden Tarif

Unser Tarifberater hilft Ihnen dabei, das passende Paket zu finden. Bei Fragen berät Sie unser Sales-Team sehr gerne unter +49 (0) 4131 / 22 78 1-25 oder sales@timmehosting.de.

Bitte beachten Sie: Der Tarifberater dient nur der groben Orientierung. Ihr tatsächlicher Bedarf kann durch den Ressourcenbedarf Ihrer Anwendung(en), tageszeitabhängige/saisonale/aktionsbedingte Schwankungen des Besucheraufkommens, geplantes Wachstum und weitere Faktoren von der Empfehlung abweichen.

  • 1
  • 2
  • 3
  • 4
  • 5

Was möchten Sie hosten?

Möchten Sie einen oder mehrere Shops hosten? (Eine Multishop-Installation gilt als ein Shop.)

Möchten Sie eine oder mehrere Websites hosten? (Eine Multisite-Installation gilt als eine Website.)

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Web Hosting

Zu den ScaleServer Paketen Zu den Web Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Shop Hosting

Zu den ScaleServer Paketen Zu den Shop Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed vServer oder ScaleServer

Zu den Managed vServer Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed Server oder ScaleServer

Zu den Managed Server Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen unsere

Timme Cloud 2.0

Zur Timme Cloud 2.0