Open Source im professionellen Einsatz

Dateien schützen

Von besonderer Relevanz ist der Abschnitt für den Zugriffsschutz (Zeilen 22 bis 24). Nginx kennt im Unterschied zu Apache keine ».htaccess« -Dateien. Die vergleichbare Funktionalität steckt in der Konfigurationsdatei der Site. Auch dies ist das Ergebnis einer bewussten Designentscheidung der Nginx-Entwickler: Die Flexibilität einer Konfiguration on the Fly mittels ».htaccess« -Dateien geht zu Lasten der Performance, denn bei jeder HTTP-Anfrage prüft der Server die Existenz dieser Dateien und wertet sie gegebenenfalls aus, bevor er die Anfrage bearbeitet.

Die Konfiguration in Listing 3 stellt jedoch sicher, dass spezielle Verzeichnisse und Dateien, die Magento ansonsten per ».htaccess« -Regeln vor dem Zugriff schützt, nicht über das Web erreichbar sind. Das sind zum Beispiel Konfigurationsdateien, in denen das Passwort und der Benutzername für die Datenbankverbindung hinterlegt sind.

Nach einem Neustart der beteiligten Dienste ist die neue Konfiguration aktiv. Um die PHP-Abarbeitung zu testen, kann der Admin eine PHP-Datei im Verzeichnis »/var/www/html« ablegen und sie mit dem Inhalt

<?php phpinfo(); ?>

füllen. Ruft er anschließend die Serveradresse inklusive des Dateipfads im Browser auf – etwa mit »http://localhost/info.php« –, ist bei erfolgreicher Einrichtung eine Infoseite mit allerhand Interessantem über die Serverumgebung zu sehen (Abbildung 2).

Abbildung 2: Systeminformation: Die phpinfo()-Ausgabe in einer Umgebung mit Nginx und PHP-FPM.

Abbildung 2: Systeminformation: Die phpinfo()-Ausgabe in einer Umgebung mit Nginx und PHP-FPM.

Als abschließender Schritt fehlt jetzt noch die Magento-Installation selbst, die unter anderem im Magento-Wiki beschrieben ist. Hier muss der Anwender nichts gesondert beachten, da mit Nginx und PHP-FPM eine vollständige Hostingumgebung für die Ansprüche der Software bereitsteht. Danach ist der Shop bereit für einen kleinen Benchmark, den der Kasten "Performance-Zahlen" beschreibt. Im Vergleich zu Apache mit »mod_php« schneidet die Nginx-Konfiguration aus diesem Artikel blendend ab: Sie bedient rund eineinhalbmal so viele Anfragen pro Sekunde wie die Konkurrenz.

Performance-Zahlen

Ein einfacher Performance-Test vergleicht eine Magento-Installation mit Nginx und PHP-FPM mit der Kombination aus Apache und »mod_php« . Als Testsystem dient ein Rechner mit dem Quadcore-Prozessor Phenom II von AMD mit 3,2 GHz sowie mit 8 GByte RAM. Als Betriebssystem kommt Ubuntu 11.10 zum Einsatz.

Das Apache-Benchmark-Tool »ab« [8] ruft die Startseite des Magento-Shops auf. Das geschieht einmal mit 150 gleichzeitigen Anfragen, einmal mit 200. Abbildung 3 zeigt, dass die Nginx-Konfiguration mit durchschnittlich 4,88 Anfragen pro Sekunde rund eineinhalbmal so viele beantwortet wie Apache (3,39). Bei 200 parallelen Requests fällt der Unterschied mit 4,76 gegenüber 2,96 Anfragen sogar noch deutlicher aus.

Abbildung 3: Die Konfiguration mit Nginx beantwortet rund eineinhalbmal so viele Anfragen pro Sekunde wie Apache.

Abbildung 3: Die Konfiguration mit Nginx beantwortet rund eineinhalbmal so viele Anfragen pro Sekunde wie Apache.

Ausblick

Eine sinnvolle Erweiterung der hier beschriebenen Konfiguration für den produktiven Betrieb ist SSL-Verschlüsselung, um die Daten der Kunden zu schützen. Das lässt sich aber ohne Schwierigkeiten mit Hilfe der offiziellen Dokumentation einrichten. Für stärker frequentierte Magento-Installationen ist zudem das Nginx-Modul »upstream« interessant. Damit lassen sich Nginx und PHP getrennt und auf unterschiedlichen Systemen betreiben, was die Skalierung von Webprojekten sehr vereinfacht.

Der Autor dieses Beitrags hat in mehreren Magento-Projekten, bei denen er auch die Einrichtung der Hostingumgebung betreut hat, durchweg positive Erfahrungen mit Nginx gemacht. Speziell bei kleineren Shops, denen nur begrenzte Ressourcen zur Verfügung standen, erzielte er dank des geringeren Speicherbedarfs sehr gute Ergebnisse.

Wer derzeit noch einen Apache-Webserver mit »mod_php« betreibt, kann bei Interesse Nginx und PHP-FPM parallel konfigurieren und nach erfolgreicher Einrichtung im produktiven Betrieb ausprobieren. Bei Bedarf lässt sich dann jederzeit wieder die bewährte Apache-Variante in Betrieb nehmen. (mhu)

Infos

  1. Magento Commerce: http://www.magentocommerce.com
  2. Nginx: http://www.nginx.org
  3. "10.000 Requests per Second with Nginx": http://blog.webfaction.com/a-little-holiday-present
  4. PHP-FPM: http://php-fpm.org
  5. Fast-CGI-Ansatz: http://de.wikipedia.org/wiki/FastCGI
  6. PHP-Hardening mit Suhosin: http://www.hardened-php.net/suhosin/
  7. PHP-Accelerator APC: http://pecl.php.net/package/APC
  8. Apache-HTTP-Server-Benchmarking-Tool: http://httpd.apache.org/docs/2.2/programs/ab.html

Der Autor

Jan Brinkmann arbeitet seit über zehn Jahren mit Open-Source-Software und bloggt darüber unter http://the-luckyduck.de. Er ist bei der Code-x GmbH aus Paderborn im Bereich Magento angestellt und arbeitet daneben als freiberuflicher Webentwickler.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook