[HOWTO] LEMP Stack + SSL - Debian 6.0
0.) Einleitung
0.1) Was ist das überhaupt? Ich kenne nur LAMP
Ein LAMP und LEMP Stack unterscheiden sich schon beim Hinsehen nur durch den 2. Buchstaben: A wird durch E vertauscht, doch was bedeutet das?
LEMP ist das selbe wie LAMP mit dem Unterschied, dass statt Apache (A) nun nginx(sprich: "engine-ex") also (E) verwendet wird.
0.2) Warum nginx?
Apache ist zwar der populärste Webserver, aber als eine Art eierlegende Wollmilchsau auch nicht gerade der performanteste. V.a. bei vServern stößt Apache schon bei kleinen/mittleren Seiten an die RAM-Limits der VM. nginx ist auch ein Webserver, jedoch ist er im Gegensatz zu Apache sehr leichgewichtig, schnell und Performant ausgelegt. Dies ist auch höchstes Ziel bei dessen Entwicklung. Trotzdem bietet nginx kaum Einschränkungen, was die Funktionalität angeht und auch seine Konfiguration ist der von Apache sehr ähnlich und unterscheidet sich nur in geringen Punkten.
0.3) Warum nehmen dann alle Apache, wenn nginx doch angeblich so viel besser ist?
Apache is der de-facto Standard: Sehr einfach zu konfigurieren, multiplattformkompatibel und ist praktisch in jeder Distribution dabei. Nginx ist weniger bekannt und gilt als schwer zu konfigurieren, was jedoch ein weit verbreiteter Irrglaube ist. Doch das wird im weiteren Verlauf offensichtlicher.
1.)Vorbereitungen / Voraussetzungen
1.1) Voraussetzungen:
- Gesunder Menschenverstand(!)
- Vorerfahrung auf der Kommandozeile
- Grundwissen Funktionsweise Server/Netzwerke und Linux (SSL bei Bedarf)
- Bitte informieren sie sich über sog. "Fremdquellen"
- Gute Laune und Durchhaltevermögen
- Debian 6.0, up-to-date und passend konfiguriert
1.2) Vorbereitungen:
Zuerst müssen wir noch eine sog. Fremdquelle hinzufügen. Leider haben es die aktuelle Version von "php5-fpm" und "nginx" nicht in die Debian-Pakete geschafft.
Daher empfehle ich, sie via Fremdquelle nachzurüsten. Dotdeb - The repository for Debian-based LAMP servers bietet aktuelle Pakete rund um LAMP auf Debian Servern an, unter anderem die von uns benötigten.
Disclaimer: Die Pakete dieser Fremdquelle sind nicht durch Debian.org/Netcup/mich geprüft! Pakete aus Fremdquellen können Schadsoftware enthalten und somit das System beschädigen! Installieren sie Pakete aus Fremdquellen nur, wenn sie diesen Quellen vertrauen. Die Installation erfolgt auf eine Gefahr!
Um dotdeb hinzuzufügen, sind folgende Zeilen an die /etc/apt/sources.list anzuhängen:
#Dotdeb.org LAMP Packages:
deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all
Zusätzlich muss noch der Schlüssel importiert werden, mit dem die Pakete der Quelle unterschrieben sind:
Um auf die neuen Pakete zugreifen zu können, müssen wir die Paketlisten neu laden:
Jetzt ist die Paketquelle eingebunden und wir können Software aus ihr installieren.
2.)MYSQL
Den MySQL Server installieren wir mit
Legt bitte während der Installation ein sicheres Passwort fest.
Die Standardkonfiguration ist bereits sehr sicher, da der Server nur auf Anfragen von localhost, also 127.0.0.1:3306 reagiert.
Wer sich mit den Einstellungen trotzdem vertraut machen möchte, kann einen Blick in die /etc/mysql/my.cnf wagen.
Dort kann man Port und weitere Einstellungen ändern.
Das init-Script für den MySQL Server liegt unter /etc/init.d/mysql
Wer seinen Server per GUI verwalten möchte, dem sei die "MySQL Workbench" ans Herz gelegt, diese ermöglicht eine Verwaltung und Zugriff über SSH, daher muss der Server nicht umkonfiguriert werden und steht weiterhin nur localhost zur Verfügung, was u.a. den höchsten Sicherheitsstandard darstellt.
Infos hierzu:MySQL :: MySQL Workbench :: 6.6.4 Standard TCP/IP over SSH Connection
Nutzer und Datenbanken anlegen ist nicht Gegenstand dieser Anleitung, diese Informationen liefert euch die Suchmaschine eures Vertrauens.
3.) PHP
PHP installieren wir via
:~$ sudo apt-get install php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd
Auch dieser Dienst bringt Standardmäßig schon gute Einstellungen mit.
Einige Werte möchte man aber doch verändern. Die Einstellungen für das Verhalten des PHP-FPM(FastCgi Process Manager, der Dienst, der PHP hier bereitstellt),
kann man in der Datei /etc/php5/fpm/php-fpm.conf beeinflussen.
Folgende Einstellungen sind sinnvoll:
Und das bedeuten sie: Die ersten beiden Werte geben das Verhalten im Notfall vor: Wenn 15 php prozesse in 1m(inute) mit SIGSEGV/SIGBUS beendet werden(abstürzen), so wird der php5-fastcgi dienst neu gestartet.(Empfohlen)
Die 3. Zeile legt die Zeit fest, wie lange php prozesse auf signale des "Master-Prozesses" warten dürfen.(Optional)
Um den FPM zu starten / stoppen bedienen wir uns dem folgenden init-Skript: /etc/init.d/php5-fpm
Jedoch möchten/müssen viele Admins Werte in der php.ini Datei verändern, um ihre Webanwendungen zu Betreiben.
Die php.ini liegt bei dieser Konfiguration unter /etc/php5/fpm/php.ini.
Es sei jedem angeraten die php.ini abzusichern, da sonst ungesicherte PHP-Skripte eine Schwachstelle bieten können. Eine passende Erklärung findet sich hier:
Die PHP.ini - PHP gegen Angriffe absichern
Es gibt zusätzlich die Möglichkeit, dem FPM anzugeben, wieviel RAM/prozesse er nutzen darf. Dies kann die Performance stark verbessern, sprengt jedoch den Rahmen dieses Howto´s.
Interessierte können sich einmal diese Werte ansehen:
pm.max_children = 9
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 200
Auch im Netz findet sich dazu einiges.