Magento Hosting mit Plesk 11.5, Apache, Nginx und Varnish Cache

Varnish ist ein sehr beliebter Seitencache für Webseiten.

Der Geschwindigkeitsvorteil kann je nach verwendeten Backend ein vielfaches betragen da Webseiten nicht bei jedem Abruf berechnet sondern statisch ausgeliefert werden.

Gerade im Bereich von Magento Hosting und Shop Hosting wird er sehr häufig eingesetzt.

Ich möchte hier einmal zeigen, wie man den Cache in einer Plesk Umgebung installiert.

Er wird als Daemon installiert und zwischen Webserver und Benutzer gehängt. Seiten werden entweder aus dem Cache geladen oder vom Webserver (Backend Server) abgerufen.

Um den Varnish im Plesk einzubinden sind einige Schritte erforderlich.

1. Installation des Varnish Caches
2. Erstellen einer custom Konfiguration im Plesk (CentOS: /usr/local/psa/admin/conf/templates/custom)

Installation des Varnish Caches für das Magento Hosting

Der Varnish Cache ist auf einem RH/CentOS sehr einfach installiert:

Dadurch wird der Varnish in der Version 3 installiert.

Vorsicht: Sofern andere Respoitory Varnish zur Verfügung stellen sollte mit yum priorities eine Reihenfolge festgelegt werden.

/etc/varnish/default.vcl:

/etc/sysconfig/varnish:

Erstellen einer custom Konfiguration für Plesk

Damit der Webserver von Plesk die Daten vom Varnish abruft und nicht direkt vom Webserver ist eine Konfigurationserweiterung notwendig.

Plesk ist standardmäßig so konfiguriert, dass eingehende Verbindungen vom NGinx Reverseproxy entgegen genommen werden.

Nginx liefert lokale Dateien ggf. direkt aus und übergibt weiter Anfragen an den Apache Server, welcher i.d.R. auf Port 7080 horcht. Hier klinken wir uns ein und schieben dem System den Varnish Cache unter.

Im Ordner custom können eigene Konfigurationen abgelegt werden, die Plesk statt der eigenen verwendet.

Kopieren Sie die default/nginx.php aus dem default in den custom Ordner.

Bearbeiten Sie die Datei custom/nginx.php und fügen oben (Zeile 3) zwischen den beiden PHP Zeilen den upstream backend_varnish ein:

[lokale ip adresse] ersetzen Sie bitte durch die Adresse, über die Ihre Webseite erreichbar ist.

Der Upstream Server dient nun als Deklaration, woher der NGinx seine Daten bekommen soll, sobald er als proxy_pass den Namen des Upstreams übergeben bekommen hat.

Sollte der Varnish Cache mal nicht Online sein, verwendet NGinx den Apache Server da dieser als Backup Verbindung hinterlegt ist.

Kopieren Sie die default/domain/service/proxy.php Datei in den custom/domain/service Ordner.

Bearbeiten Sie diese nun wie folgt (custom/domain/service/proxy.php):

An der file_exists Funktion läßt sich gut sehen, dass das Script erst prüft, ob eine Datei im /etc/varnish ordner liegt, die als Namen den Domainnamen gefolgt von .enable hat (z.B. lcube-webhosting.de.enable). Ist dies der Fall wird der Varnish aktiviert. Wenn nicht, werden die Dateien normal vom Webserver abgerufen. Auf diese Weise kann der Varnish durch setzen einer Datei aktiviert oder deaktiviert werden.

Nach dem setzen oder löschen der enable Datei muss

ausgeführt werden.

Ggf. muss ein Addon installiert werden. Für Magento kommt z.B. Turpentine in Frage.

Nicht für jede Anwendung ist der Varnish Cache geeignet. Wenn viele Dynamische Daten abgerufen werden und die Aktualität der Daten von entscheidender Bedeutung ist (z.B. bei Warenkörbe sowie beim SVN Hosting oder Git Hosting) sollte man entsprechende URLs in die Ausnahmen eintragen bzw. auf Varnish verzichten.

11 Kommentare
  1. VITEX sagte:

    Hallo,

    zunächst vielen Dank für diesen sehr guten Artikel !!
    Ich habe versucht, das gleiche mal unter Plesk 12 nachzustellen – leider landen die enabled Sites alle nur auf der Plesk Default-Startseite.
    Irgendeine Idee ?

    VG

    Antworten
    • Admin sagte:

      Hallo,

      die Frage wäre erstmal, ob alle Konfigurationen vom Plesk einwandfrei übernommen wurden.
      Befindet sich im NGinx Ordner für die enstprechende Domain die Plesk Konfigurationsdatei mit dem Paramater proxy_pass http://backend_varnish?

      LG

      Antworten
  2. VITEX sagte:

    Hallo,

    ich habe den Fehler gefunden – in der /etc/varnish/default.vcl muss bei Plesk 12 anstatt 127.0.0.1 die öffentliche IP des Servers eingetragen werden.

    Vielen Dank für die Konfig !!

    VG

    Antworten
  3. max sagte:

    hi, super Anleitung, lieder habe ich jetzt die Plesk 12 Version dort komme ich nicht mit der
    upstream backend_varnish {
    server 127.0.0.1:6081;
    server [lokale ip adresse]:7080 backup;
    }
    in der custom/nginx.php klar
    diesen Eintrag gibt es dort nicht.
    hast du vielleicht ein Tipp?

    Antworten
    • Admin sagte:

      Hallo,

      Sorry. Ich werde die Anleitung anpassen.
      Diese Section gibt es nicht sondern muss in der Datei neu erstellt werden.
      Am Besten gleich oben Zeile 2 oder 3.

      Gruß
      Lars

      Antworten
  4. Jörg Märtin sagte:

    Hallo, besten Dank für die Anleitung. Varnish läuft. Allerdings habe ich ein Problem: Bei einem Test wird gemeldet, dass Varnish zwar läuft, aber nichts cachen kann weil max-age=0.

    Ich habe das in der htaccess gesetzt. Trotzdem erhalte ich den Fehler. Was mache ich falsch? Besten Dank für eine Antwort

    Antworten
      • Jörg Märtin sagte:

        Hallo,

        mittlerweile habe ichs hinbekommen, Problem gelöst. Es lag zum einen daran, dass ich Varnish 4 laufen hatte und keine passende VCL dafür hatte.
        Jetzt habe ich Varnish 3 und eine passende VCL für die Magento Extension Phoenix Varnish Cache, und siehe da, es klappt und Seiten werden gecachet.

        Antworten
        • Jörg Märtin sagte:

          Das war wohl zu früh gefreut. Varnish läuft zwar, aber es wird nichts gecached. Hier der Header:

          HTTP/1.1 200 OK
          Server: nginx
          Date: Tue, 13 Oct 2015 11:12:39 GMT
          Content-Type: text/html; charset=UTF-8
          Content-Length: 18956
          Connection: keep-alive
          X-Powered-By: PleskLin
          X-Cache-Debug: 1
          Vary: Accept-Encoding
          Content-Encoding: gzip
          X-Purge-URL: /
          X-Purge-Host: kolkmeyer.joergmaertin.de
          Accept-Ranges: bytes
          X-Varnish: 1314146646
          Via: 1.1 varnish
          X-Cache: MISS
          X-Cache-Expires: Mon, 31 Mar 2008 10:00:00 GMT
          Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
          Pragma: no-cache
          Expires: Mon, 31 Mar 2008 10:00:00 GMT
          HTTP/1.1 200 OK
          Server: nginx
          Date: Tue, 13 Oct 2015 11:12:39 GMT
          Content-Type: text/html; charset=UTF-8
          Content-Length: 18956
          Connection: keep-alive
          X-Powered-By: PleskLin
          X-Cache-Debug: 1
          Vary: Accept-Encoding
          Content-Encoding: gzip
          X-Purge-URL: /
          X-Purge-Host: kolkmeyer.joergmaertin.de
          Accept-Ranges: bytes
          X-Varnish: 1314146646
          Via: 1.1 varnish
          X-Cache: MISS
          X-Cache-Expires: Mon, 31 Mar 2008 10:00:00 GMT
          Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
          Pragma: no-cache
          Expires: Mon, 31 Mar 2008 10:00:00 GMT
          Age: 0

          Ich hab schon die Expires von NGinx und Apache geändert in den vhosts-Dateien, natürlich sind die Expires und Cache-Anweisungen auch in der htaccess-Datei.
          Das Ergebnis bleibt immer das gleiche.

          Antworten
  5. Ronald Akkerman sagte:

    Hallo,

    Wir benutzen Plesk 12.5. Ist die setting bei diese tutorial für „run php as“ eingestellt auf „FPM application served by nginx“ oder „FPM application server by Apache“? Oder ist beide möglich?

    Vielen Dank!

    Ronald

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.