Tipps und Tricks zu den Themen: Software- und Webentwicklung

Mittwoch, 19. Juni 2013

Webseiten beschleunigen mit eAccelerator

eAccelerator ist eine freie Software zum Einsatz auf Webservern, die als Beschleuniger, Optimierer und Cache für PHP-Seiten dient. Wichtig zu wissen ist, dass der eAccelerator seit der Version 9.6 die Ausgabe der Cache-Files über das Control-Panel (control.php) nicht mehr unterstützt und deshalb häufig davon ausgegangen wird, dass es nicht ordnungsgemäß funktioniert. Wir wollen euch das unnötige Kopfzerbrechen ersparen und zeigen wie es geht. In diesem Beispiel verwenden wir absichtlich eine vor-kompilierte Version von eAccelerator, da Webserver-unerfahrene mit der Shell häufig ihre Schwierigkeiten haben und darüber hinaus dieser Zugang beim Hosting-Provider nicht in jedem Tarif enthalten ist.

1. Vorbereitung

Zuerst benötigt ihr die PHP-Versionsnummer welche auf eurem Webserver installiert ist, sowie welches Betriebssystem (evt. auch Serverspezifikation). Dazu erstellt ihr eine Datei mit der Bezeichnung "phpinfo.php" mit diesem Inhalt:

<?php phpinfo(); ?>

Diese Datei muss dann auf den Server (ins Hauptverzeichnis) hochgeladen werden. Ruft diese Datei nun über euren Browser auf (z.B.: http://www.meine-seite.de/phpinfo.php). Ihr solltet eine Übersicht bekommen über die Konfiguration von PHP auf dem Webserver ähnlich wie:



Achtet darauf, dass "FastCGI" in der Zeile "Server API" steht, gegebenfalls müsst ihr dies im Administrationsbereich bei eurem Provider umstellen. Jetzt könnt ihr euch die entsprechende vor-kompilierte Version (gemäß der PHP-Version eures Webservers) hier herunter laden:

http://pkgs.org/download/php-eaccelerator

(z.B.: 'php-eaccelerator-5.2.17_0.9.6.1-1.el5.art.i386.rpm')

Falls Ihr das heruntergeladene Archiv nicht entpacken könnt besorgt euch das kostenlose Programm "BitZipper" oder sucht im Netz nach einem alternativen Tool.

2. Hochladen der Dateien

Nun findet ihr im entpackten Verzeichnis "/usr/lib/php/modules/" die Datei "eaccelerator.so" die ihr wiederum auf dem Webserver hochladen müsst. Befindet sich diese Datei im Hauptverzeichnis eurer Domain (den Speicherort könnt ihr später ggf. noch anpassen) solltet ihr nun ein neues Verzeichnis auf dem Webserver anlegen mit der Bezeichnung 'cache' und setzt für diesen Ordner die Zugriffsberechtigung auf '777' (d.h. alle Zugriffe sind erlaubt). An dieser Stelle ein Tipp: falls ihr nur Zugriff auf euren Webspace habt (also nicht auf den gesamten Server Root), erstellt euch einen neuen Ordner z.B. 'eaccelerator' in der obersten Dateiebene und achtet darauf, dass dieser bei eurem Hosting-Provider keiner Domain zugewiesen ist. In diesen Ordner könnt ihr dann die *.so-Datei ablegen sowie den Ordner 'cache' wie oben beschrieben anlegen.

3. Konfiguration mit php.ini

Als nächstes erstellt eine neue Textdatei mit der Bezeichnung 'php.ini' in der folgendes steht:

;extension="/SERVERPATH/eaccelerator.so"
zend_extension="/SERVERPATH/eaccelerator.so"

eaccelerator.shm_size="16"
eaccelerator.cache_dir="/SERVERPATH/cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.log_file="/SERVERPATH/eaccelerator.log"

Hinweise:
1. Ist auf eurem Server das "Zend Framework" nicht installiert so müsst ihr das Semikolon aus der ersten Zeile entfernen und vor die zweite Zeile fügen.
2. Den Wortlaut 'SERVERPATH' müsst ihr an euren internen Serverpfad anpassen, auf den ihr die oben genannten Dateien und Ordner erstellt habt (also keine URL, sondern Dateipfad auf dem Server). Diesen Serverpfad findet ihr entweder im Administrationsbereich eures Hosting-Providers bzw. ist das Verzeichnis ausgehend von eurem Server Root. Dieser könnte also z.B. lauten '/homepages/11/a251395631/htdocs/' bzw. '/usr/lib/php5/'.

Die Datei 'php.ini' müsst ihr anschließend ebenfalls hochladen, diese kommt in der Regel immer in das obere Verzeichnis wo eure Dateien für die Webseite liegen. Dies kann vom Verzeichnis wo die *.so-Datei und der 'cache-Ordner' liegen abweichen. Wichtig ist nur, dass 'php.ini' dort platziert wird wo eAccelerator ausgehend von diesem Ordner (also auch mit allen Unterordnern) wirken soll.

4. Testen ob eAccelerator funktioniert

Ruft nun nochmals die URL zu der Datei 'phpinfo.php' auf. Hier sollte jetzt im ersten Abschnitt stehen:



Falls nicht, dann versucht eine andere vor-kompilierte Version von 'eaccelerator.so' und achtet darauf, dass diese mit derselben PHP-Version wie die eures Webservers kompiliert wurde. Wichtig ist auch, dass die oben erstellte 'php.ini' auf die Datei 'phpinfo.php' wirkt, sprich sie sollten beide im selben Verzeichnis liegen.

Ist dieser Schritt getan, könnt ihr jetzt testen ob eAccelerator ordnungsgemäß funktioniert und ändert in der Datei 'php.ini' zu Testzwecken folgenden Wert:

eaccelerator.debug="1"

Jetzt ruft ihr beliebige Teile eurer Webseite in eurem Browser ab (natürlich sollte dort PHP-Code enthalten sein). Ladet euch anschließend die LOG-Datei 'eaccelerator.log' vom Server herunter, dort müssten jetzt Einträge nach diesem Muster stehen:
EACCELERATOR cached: "PATH..."
EACCELERATOR cached: "PATH..."
EACCELERATOR hit: "PATH..."
EACCELERATOR hit: "PATH..."
EACCELERATOR cached: "PATH..."
EACCELERATOR hit: "PATH..."
EACCELERATOR hit: "PATH..."
EACCELERATOR hit: "PATH..."
EACCELERATOR hit: "PATH..."
EACCELERATOR cached: "PATH..."
Das bedeutet, alles funktioniert ordnungsgemäß. Nun könnt ihr ggf. die Dateien und den Cache-Ordner auf dem Server nochmal anpassen (optimal wäre serverintern, also außerhalb eurer Domain) und vergesst nicht den Wert 'eaccelerator.debug' in der 'php.ini' wieder auf 0 zu setzen. Bitte postet hier eure Fragen falls etwas nicht klappt.



Keine Kommentare:

Kommentar veröffentlichen