Shopware 6 mit Redis verbinden

Shopware 6 und Redis verbinden

Jeder Besucher Ihres Onlineshops erzeugt eine Session in der nutzerspezifische Daten gespeichert werden, zum Beispiel zuletzt angesehene Produkte, ein Merkzettel oder der Warenkorb. Standardmäßig speichert Shopware jede Session als Einzeldatei in der MySQL-Datenbank auf der Festplatte. Mehr Besucher im Shop generieren also auch mehr Datenbankzugriffe für das Speichern und Auslesen der jeweiligen Session. Das schmälert die Shop-Performance.

Redis, kurz für Remote Dictionary Server, arbeitet anders. Als In-Memory und NoSQL-Datenbank speichert sie die Sessions im deutlich schnelleren Arbeitsspeicher und in regelmäßigen Abständen als Backup auch noch einmal auf die Festplatte. Die Anfragen werden über Redis hierbei schneller verarbeitet, da diese direkt aus dem Arbeitsspeicher ausgeliefert werden können. Außerdem werden abgelaufene Sessions selbstständig durch Redis gelöscht.

Für Kunden unserer Managed vServer, Managed Server und ScaleServer ist Redis auf dem Server bereits vorinstalliert. Für die Timme Cloud 2.0 ist die Datenbank optional zubuchbar.

Bitte beachten Sie, dass Shopware 6 aufgrund des zugrunde liegenden Symfony Frameworks Redis zwar nutzen kann, aber für so ein Setup keinen Support anbietet.

Möchten Sie Redis mit Shopware 6 nutzen, zeigen wir Ihnen in der nachfolgenden Anleitung wie Sie beides verbinden.

Voraussetzungen

Redis Instanz mit 2 Datenbanken anlegen
Damit Shopware seinen Cache und die Session Daten in Redis ablegen kann, müssen Sie in Ihrem Server Control Panel eine Redis Instanz mit zwei Datenbanken erstellen. Das genaue Vorgehen können Sie in der Anleitung neue Redis Instanz einrichten nachlesen.

php.ini Einstellungen anpassen
Weiterhin müssen Sie in den php.ini Einstellungen hinterlegen, dass PHP die Redis Datenbank als Session Speicher nutzt. Diese Einstellung finden Sie in ISPConfig unter Ihrer Website im Reiter "Optionen". In der Anleitung PHP Direktive hinterlegen erklären wir Ihnen diesen Schritt detailliert.


Notieren Sie sich:

  • Redis Socket Pfad
  • Redis Passwort

Ergebnis: Die Zugangsdaten wurden notiert.


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

Shopware 6 und Redis verbinden

Damit Shopware 6 die Sessions und den http_cache in Redis ablegen kann, müssen Sie die folgenden drei Dateien erstellen bzw. anpassen:

  • config/services.yaml
  • config/packages/framework.yaml
  • .env

Diese Dateien finden Sie alle im Verzeichnis "web/".


1

  • Melden Sie sich mit Ihrem FTP-Client am Server an.
  • Öffnen Sie das Verzeichnis web/.

Ergebnis: Sie gelangen in das web/ Verzeichnis.


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

2

config/services.yaml bearbeiten bzw. erstellen

  • Gehen Sie zu "config/services.yaml" und speichern Sie die Datei lokal ab. Wird Ihnen die Datei nicht angezeigt, erstellen Sie diese bitte lokal.
  • Öffnen Sie die Datei über einen Texteditor Ihrer Wahl und bearbeiten bzw. erstellen Sie sie mit folgendem Inhalt:
parameters:
    app.redis.cache.host: "%env(REDIS_CACHE_HOST)%"
    app.redis.cache.port: "%env(int:REDIS_CACHE_PORT)%"
    app.redis.cache.password: "%env(REDIS_CACHE_PASSWORD)%"
    app.redis.cache.database: "%env(int:REDIS_CACHE_DATABASE)%"
    
services:
    Redis:
        class: Redis
        calls:
            - method: connect
              arguments:
                  - "%env(REDIS_SESSION_HOST)%"
                  - "%env(int:REDIS_SESSION_PORT)%"
            - method: auth
              arguments:
                  - "%env(REDIS_SESSION_PASSWORD)%"
            - method: select
              arguments:
                  - "%env(int:REDIS_SESSION_DATABASE)%"

    Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
        arguments:
            - "@Redis"


Wichtiger Hinweis: Übernehmen Sie auch die Leerzeichen exakt so, wie von uns vorgegeben, da diese bei den yaml Dateien notwendig sind.

  • Speichern Sie die Änderungen ab und laden Sie die Datei über den FTPClient wieder in das web/ Verzeichnis hoch, wodurch Sie die Originaldatei auf dem Server ersetzen bzw. neu erstellen.

Ergebnis: Die Datei config/services.yaml wurde erstellt und hochgeladen.



3

config/packages/framework.yaml bearbeiten bzw. erstellen

  • Gehen Sie im web/ Verzeichnis zu "config/packages/" und speichern Sie die Datei "framework.yaml" lokal ab. Wird Ihnen die Datei nicht angezeigt, erstellen Sie diese bitte lokal.
  • Öffnen Sie "framework.yaml" mit Ihrem Editor, um die Datei zu bearbeiten oder sie neu zu erstellen.

Hinweis: Die config/packages/framework.yaml enthält unter "cache.object" und "cache.http" die Variable "SHOPWARE_HTTP_DEFAULT_TTL". In der .env definiert Shopware diesen Wert standardmäßig mit 7200 Sekunden und liefert ihn im "http_header max_age" aus. Gleichzeitig ist das auch der Wert für die Gültigkeit des Caches im Redis selbst: "cache-control: must-revalidate, public, s-maxage=7200".

Es wird daher "SHOPWARE_HTTP_DEFAULT_TTL" genutzt, um im Redis die Gültigkeit der Keys für "http_cache" und "object cache" zu definieren. Falls Sie dafür unterschiedliche Werte benötigen, beispielsweise weil der Object Cache eine andere Time to live (TTL) haben soll, können Sie anstelle von "%env(int:SHOPWARE_HTTP_DEFAULT_TTL)%" ein integer definieren.

  • Ändern Sie die Datei wie folgt ab:
framework:
    cache:
        app: cache.adapter.redis
        system: cache.adapter.redis
        pools:
            serializer:
                adapter: cache.adapter.redis
            annotations:
                adapter: cache.adapter.redis
            property_info:
                adapter: cache.adapter.redis
            messenger:
                adapter: cache.adapter.redis
            property_access:
                adapter: cache.adapter.redis
            cache.object:
                default_lifetime: "%env(int:SHOPWARE_HTTP_DEFAULT_TTL)%"
                adapter: cache.adapter.redis
            cache.http:
                default_lifetime: "%env(int:SHOPWARE_HTTP_DEFAULT_TTL)%"
                adapter: cache.adapter.redis
        default_redis_provider: "redis://%app.redis.cache.password%@%app.redis.cache.host%:%app.redis.cache.port%/%app.redis.cache.database%"
    session:
        handler_id: Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler

Wichtiger Hinweis: Übernehmen Sie auch die Leerzeichen exakt so, wie von uns vorgegeben, da diese bei den yaml Dateien notwendig sind.

  • Speichern Sie die Datei und laden Sie sie über den FTPClient wieder in das Verzeichnis "web/config/packages" hoch, wodurch Sie die Originaldatei auf dem Server ersetzen bzw. neu erstellen.

Ergebnis: Die config/packages/framework.yaml Datei wurde angepasst und hochgeladen.



4

.env bearbeiten

  • Gehen Sie im Verzeichnis web/ nun zur .env Datei, speichern Sie sie lokal ab oder erstellen Sie die Datei neu, sollte .env nicht angezeigt werden.
  • Öffnen Sie die .env Datei mit Ihrem Editor.
  • Ersetzen Sie in der Datei alle nötigen Angaben:
REDIS_CACHE_HOST="localhost"
REDIS_CACHE_PORT="PORT"
REDIS_CACHE_PASSWORD="REDIS_PASSWORD"
REDIS_CACHE_DATABASE="1"

REDIS_SESSION_HOST="localhost"
REDIS_SESSION_PORT="PORT"
REDIS_SESSION_PASSWORD="REDIS_PASSWORD"
REDIS_SESSION_DATABASE="0"

  • Speichern Sie die Datei und laden Sie sie über Ihren FTPClient wieder in das web/ Verzeichnis hoch, wodurch Sie die Originaldatei auf dem Server ersetzen bzw. neu erstellen.

Ergebnis: Die .env wurde angepasst und hochgeladen.

Hinweis: Mit diesen Änderungen werden die Sessiondaten nicht mehr von Shopware verwaltet, wodurch die Gültigkeit der Sessiondaten von PHP greift, die standardmäßig 1440 Sekunden beträgt. Für einen Onlineshop ist das meist zu gering. Diesen Zeitraum können Sie im ISPConfig in den php.ini Einstellungen Ihrer Webseite über die Variable "session.gc_maxlifetime" erhöhen. Mit "session.gc_maxlifetime = 14400" würde die Gültigkeit bspw. 4 Stunden betragen.


Shopware Cache löschen und Theme kompilieren

Damit die Anpassungen aktiv werden, müssen Sie abschließend noch die Shopware Caches leeren und das Theme neu kompilieren. Sie können dies entweder direkt über die Konsole ausführen, indem Sie Schritt 5 der nachfolgenden Anleitung folgen. Oder Sie führen die Tasks über Ihre Shopware-Administration mit den Schritten 6a bis 7b aus.

 


5

Wenn Sie die Cache-Löschung und Theme-Generierung über Ihre Konsole ausführen möchten, melden Sie sich per SSH an der Konsole an.

  • Wechseln Sie in Ihr Document Root, zum Beispiel über
cd /var/www/meinedomain.de/web/ 

Hinweis: Ersetzen Sie "meinedomain.de" durch Ihre Domain.

  • Geben Sie nacheinander folgende Konsolenbefehle ein:
php bin/console cache:clear
php bin/console theme:compile

Ergebnis: Ihr Shopware Cache wurde über die Konsole gelöscht und das Theme neu kompiliert.



6a

Wenn Sie dies über Ihre Shopware-Administration ausführen möchten, loggen Sie sich zunächst in Ihre Administration ein.

Für die Cache-Löschung gehen Sie wie folgt vor:

  • Wählen Sie im Hauptmenü Ihrer Administration den Punkt "Einstellungen" aus.
  • Wählen Sie im Untermenü nun die Option "System".
  • Es stehen Ihnen verschiedene Icons zur Bearbeitung zur Verfügung.
  • Wählen Sie das Icon "Caches & Indizes" aus.

Ergebnis: Sie gelangen in das Bearbeitungsfenster zur Cache-Löschung.



6b

  • Klicken Sie auf die Schaltfläche "Caches leeren".

Ergebnis: Sie haben den Cache Ihres Shops in der Administration gelöscht.



7a

Nun müssen Sie in Ihrer Shopware-Administration noch das Theme neu generieren.

  • Navigieren Sie dafür im Hauptmenü zum Bereich "Verkaufskanäle" und wählen Sie dort Ihr Design aus, in unserem Beispiel "Demo".
  • Ihnen stehen nun die Reiter "Allgemein", "Theme" und "Analytics" zur Auswahl zur Verfügung. Wählen Sie den Reiter "Theme" aus.
  • Klicken Sie oben rechts auf den Button "Theme bearbeiten".
  • Ohne Änderungen vorzunehmen, klicken Sie auf den blauen Button "Speichern".

Ergebnis: Es öffnet sich das Popup-Fenster "Theme speichern".



7b

  • Klicken Sie auf die blaue Schaltfläche "Speichern", um Ihr Theme zu speichern.

Ergebnis: Ihr Theme wurde in der Shopware-Administration aktualisiert.


Geschafft! Sie haben Shopware 6 mit Redis verbunden.

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