Sicheres & Schnelles PHP Hosting
![]()
Ein Zeit- und Nervenfresser für viele Webentwickler und -agenturen ist die Notwendigkeit einen eigenen Webserver zu betreiben – obwohl man ja eigentlich kein Admin sein möchte – da kaum ein Shared-Hoster einem hier unter die Arme greift und eine vernünftige PHP Lösung auf die Beine stellt. Hier ist, was man über PHP wissen sollte (aber nie zu Fragen wagte) und unsere Lösungen:
PHP ≠ PHP
PHP ist nicht gleich PHP, es kann nämlich auf mehrere Arten angebunden werden. Die verschiedenen PHP-Ausführungsarten unterscheiden sich in:
- Sicherheit (PHP ist DAS Einfallstor für viele Angriffe)
- Geschwindigkeit und Ressourcenhunger
- Komplexität beim Einrichten
mod_php
Bei den meisten Shared Webhostern wird PHP über das Apache Modul mod_php betrieben, da man hier relativ ressourcensparend viele Kunden auf einem Server unterbringen kann. Günstig aber gefährlich, da quasi jede Webseite unter einem geteilten Systembenutzer laufen muss und damit alle Maßnahmen gegenseitiges Zugreifen zu verhindern letztendlich nur Patchworks sein können. Wenn über ein PHP-Skript Dateien geschrieben werden, gehören (Unixdateirechte) diese dem Webserver Benutzer und können dann nicht mehr einfach z.B. per FTP verändert werden. Oft müssen nachträglich Dateirechte gesetzt werden. Ein Graus für jeden sicherheitsbewussten Admin sind die für jeden freien Schreib- und Ausführungsrechte (Chmod: 777), die man aufgrund der unterschiedlichen Benutzerrechte (VHost Benutzer vs PHP Benutzer) bei vielen Applikationen benötigt um Dateiuploads und ähnliches zu realisieren (z.B. bei Joomla). Es gibt zwar noch den so genannten “PHP safe mode”, doch der ist nicht safe und wird zudem alsbald aus PHP entfernt.
suPHP
Dann gibt es natürlich noch suPHP, ebenfalls als Apachemodul nutzbar. Hier wird PHP über CGI (Common Gateway Interface) ausgeführt. Da Skripte mit den Rechten des Unix-Benutzers des jeweiligen virtuellen Host Unix-Benutzers ausgeführt werden stellt es einen erheblichen Fortschritt in Sachen Sicherheit dar. Zudem können je virtuellem Hosts eigene PHP-ini Konfigurationsdateien verwendet werden. Der große Nachteil besteht in der nicht persistenten Umgebung zur Ausführung von PHP Skripten. Im Gegensatz zu mod_php wird bei jedem einzelnen Aufruf das gesamte Skript vom PHP Interpreter von der Festplatten in den Speicher geladen, ausgeführt und danach wieder aus dem Speicher entfernt. In diesem Modus ist es nicht möglich Caches wie APC oder XCache (mehr dazu weiter unten) zu verwenden.
FastCGI mit suexec
Als Königsklasse gilt PHP über FastCGI (mod_fastcgi, mod_fcgid, …), da es den Geschwindigkeitsvorteil von mod_php mit den Sicherheitsaspekten von suPHP vereint. Warum nutzt das also nicht jeder? Ganz einfach: es ist verhältnismäßig schwieriger aufzusetzen und kostet permanent Ressourcen, da es für jeden virtuellen Host einen oder mehrere persistente Prozesse vorhält. Für “10 Besucher am Tag” Webseiten (die zumeist das Gros bei Shared Hosting ausmachen) ist das ein Schießen mit Kanonen auf Spatzen.
PHP auf Steroiden
Caching steigert Perfomance. Eine wirklich wirkungsvolle und gleichzeitig ressourcenschonende Methode PHP-Anwendungen zu mehr Geschwindigkeit zu verhelfen sind: PHP Caches. Diese Caches bringen zweierlei Vorteile:
- Wenn der PHP Interpreter eine .php Seite rendert wandelt er sie vorher in einen so genannten “intermediate Code” oder “opcode” um, welches grob mit dem Binärcode (Maschinensprache) von kompilierten Programmen (zB C++) vergleichbar ist, nur dass dieser Code eben im schnellen Arbeitsspeicher liegt. Durch PHP Caches kann dieser Code zwischengespeichert und bei jedem erneuten Aufruf wiederverwendet werden, was einen enormen Geschwindigkeitsvorteil mit sich bringt – ohne, dass die Applikation in irgendeiner Art angepasst werden muss.
- Auf Applikationsseite können Entwickler Caches nutzen um oft generierte Daten wie zum Beispiel die Resultate einer häufigen SQL Anfrage zwischenzuspeichern. Je nach Anwendung kann dies auch erheblich Rechenzeit sparen und damit ein sehr schnelles ausliefern ermöglichen.
Es gibt drei Populäre PHP Caching Systeme:
APC
Der Alternative PHP Cache gilt als einer der modernsten und schnellsten PHP opcode Caches überhaupt. Derzeit wird er zwar noch über PECL verwaltet, soll aber fester Bestandteil vom kommenden PHP6 werden und bringt damit eine gewisse Zukunftssicherheit mit.
XCache
XCache ist ein sehr schneller und stabiler Cache, der von einem Mitentwickler vom lighttpd Webserver geschrieben wurde.
eAccelerator
In PHP4 Zeiten hatte dieser einfache und gut funktionierende Cache seine größte Verbreitung. Danach gab es einen Einbruch, da die Entwicklung zwischenzeitlich drohte eingestellt zu werden. Seit Version 0.95 werden aber wieder aktuelle PHP Versionen unterstützt.
PHP bei Fortrabbit
Bei uns gibt es derzeit drei PHP Tarife, die vielen verschiedenen Webseite-Szenarien gerecht werden. Alle unsere PHP-Tarife sind nicht nur sicher, sondern auch einfach über unser MISH Interface zu konfigurieren, zwischen den Tarifen kann on the Fly bei Bedarf gewechselt werden:
PHP S
Die ideale Lösung für kleine Webseiten, die keine tausende Besucher am Tag abhandeln müssen und eben nicht zu teuer sein sollen. Hier wird die sichere suPHP Implementierung genutzt, da der Sicherheitsanspruch unserer Meinung nach die Geschwindigkeitseinbußen überwiegt. Neben der Ausführungszeit für PHP gibt es noch viele andere Faktoren, die die Geschwindigkeit der Website-Auslieferung beeinflussen. Viele Open Source CMS Systeme, wie WordPress, Typo3, Joomla, Drupal, Indexhibit … lassen sich prima mit PHP S nutzen. Dieses Blog läuft auch auf PHP S.
PHP M
Für größere Webseiten im Entwicklungstadium, gut besuchte Blogs oder aufwändige EShops: Durch die drei zur Verfügung gestellten persistenten FastCGI PHP Prozesse und den zusätzlichen 24 MB Cache (APC oder XCache) können je nach Art der Webanwendung viele Tausend Anfragen pro Tag ausgeführt werden.
PHP L
Für wirklich gut besuchte oder sehr anspruchsvolle Anwendungen bieten wir eine dritte Ausbaustufe an, in der sechs parallele FastCGI PHP Prozesse und 48 MB Cache (APC oder XCache) für genügend Ressourcen sorgen um sehr viele gleichzeitige Benutzer bedienen zu können.
Und mehr
Auch danach ist nicht Schluss bei uns. Wir stellen gerne einen oder multiple eigene HTTP Server (wie hier beschrieben) mit jeweils bis zu 30 laufenden FastCGI Prozessen zur Verfügung. Neben dem opcode Cache können wir dann auch einen Netzwerkcache (memcached) zur gemeinsamen Nutzung anbieten womit das Wachstum nach oben offen ist.
Further Reading
- Fortrabbit Preisliste
- PHP in unserer: Hilfe
- Blogartikel über unserer Entwicklung und die Hintergründe auf: foaa
- ein ähnlicher Vergleich von PHP Anbindungen auf rootforum.org
Dieses Blog läuft auf dem tollen Wordpress.