Nachdem der Arbeitsspeicher unseres vServers in letzter Zeit immer wieder knapp geworden ist habe ich mich mal nach ein paar Möglichkeiten umgesehen damit besser umzugehen. Für den Anfang erwäge ich einen Umstieg von Apache auf lighttpd da dieser alle unsere Bedüfnisse erfüllt und dabei weniger Ressourcen verbraucht.
Hier mal meine ersten Erfahrungen mit der Konfiguration von Lighttpd mit PHP und vHosts auf einem vServer mit chronischen RAM Mangel.
1) mod_mysql_vhost
Zur Verwaltung der vHosts / Subdomains des Webservers greife ich auf das Lighttpd Modul mod_mysql_vhost zurück. Es ernöglicht es die vHosts-Verwaltung über eine MySQL Datenbank abzuwickeln. Der große Vorteil daran ist es ohne weiteres ein eigenes Webinterface zu schreiben mit dem man selber und auch die anderen Nutzer des Servers ihre Subdomains bearbeiten können.
Das Modul ist nicht in der Lighttpd Basisinstallation enthalten, existiert aber als Paket in den Debian Paketquellen.
Die Konfiguration ist auch sehr einfach gehalten. Zuerst kopiert man die Beispiel Konfigurationsdatei /etc/lighttpd/conf-available/10-mysql-vhost.conf in das Verzeichnis conf-enabled. Anschließend müssen darin die Werte (Zugangsdaten für die MySQL-Datenbank) festgelegt werden.
mysql-vhost.db = “lighttpd”
mysql-vhost.user = “lighttpd”
mysql-vhost.pass = “secret”
mysql-vhost.sock = “/var/run/mysqld/mysqld.sock”
mysql-vhost.sql = “SELECT docroot FROM domains WHERE domain=’?';”
Diese Datenbank muss dann natürlich auch die entsprechende Tabelle enthalten und über den Usernamen erreichbar sein. Diese Schritte können über folgende SQL-Befehle ausgeführt werden.
GRANT SELECT ON lighttpd.* TO lighttpd@localhost IDENTIFIED BY ‘secret’;
CREATE DATABASE lighttpd;
USE lighttpd;
CREATE TABLE domains (
domain varchar(64) not null primary key,
docroot varchar(128) not null
);
Nach einem Neustart des Webservers kann man jetzt fleißig neue Subdomains anlegen. Diese werden auch ohne Neustart des Webservers übernommen. Wichtig ist als Domain z.B. heyko.esenscity.de:80 und das docroot den kompletten Pfad also z.B. /home/heyko/public_html zu verweden.
2) mod_fastcgi
Als nächstes das Modul mod_fastcgi. Dieses wird benötigt um PHP zu verwenden. Um es zu aktivieren fügt man in der Lighttpd Konfigurationsdatei /etc/lighttpd/lighttpd.conf unter dem Punkt server.modules die Zeile
“mod_fastcgi”,
hinzu. Beim nächsten Neustart des Webservers wird es automatisch mit geladen. Auf meinem Debian System habe ich noch das Paket php5-cgi nachinstallieren müssen. Die Konfiguration verläuft genau wie bei der mod_mysql_vhost Konfiguration, nur das dieses Mal keine Beispiel Konfiguration vorliegt. Also erstellt man eine neue Datei in /etc/lighttpd/conf-enabled z.B. mit dem Namen 10-php.conf. Hier mal meine Konfiguration.
fastcgi.server = ( “.php” =>
(( “socket” => “/tmp/php-fastcgi.socket”,
“bin-path” => “/usr/bin/php5-cgi”,
“max-procs” => 5
))
)
Eigentlich ist es mit socket und bin-path bereits getan, allerdings musste ich auf Grund des knappen Vorrats an Arbeitsspeicher die Anzahl der PHP Prozesse auf 4-5 begrenzen. Dadurch werden trotzdem noch alle Anfragen bearbeitet, allerdings kann dies länger dauern da nicht unbegrenzt Prozesse zur Verfügung stehen die dieAnfragen parallel abarbeiten.
Während meiner Testphase hat sich außerdem der Debug Modus als sehr nützlich erwiesen.
debug.log-request-header = “enable”
debug.log-response-header = “enable”
debug.log-request-handling = “enable”
debug.log-file-not-found = “enable”
Mit diesen Werten in der /etc/lighttpd/lighttpd.conf ist die Ausgabe im error.log wesentlich detailierter.
Soweit meine Erfahrungen mit Lighttpd. Darauf gekommen bin ich als Simon von m0rphex.eu teilweise von Apache auf Lighttpd gewechselt ist.




Recent Comments