Umstieg von Apache auf Nginx

Bereits in der letzten Woche habe ich Nginx vorgestellt. Auch ich bin vor Kurzem mit meinem vServer umgezogen. Nachdem ich zuvor Apache genutzt hatte, ist jetzt Ngnix („Engine X“ gesprochen) das laufende System.

In diesem Artikel möchte ich Dir erklären, wie Du reibungslos auf Nginx umsteigen kannst.

Hinweis: Dieser Artikel setzt Linux-Grundkenntnisse und eine bestehende SSH-Verbindung zu deinem Server voraus. Außerdem empfiehlt es sich in jedem Fall ein Backup anzulegen!

Pakete installieren

Vorab ein kurzer Hinweis. Je nachdem ob Du bei deinem Server per SSH als root oder einfacher Benutzer angemeldet bist, kann es notwendig sein den nachfolgenden Befehlen ein „sudo“ voranzustellen.

Zunächst aktualisieren wir die Paket-Quellen:

Anschließend installieren wir die Pakete Nginx und PHP-FPM:

Solltest Du die Meldung zu Gesicht bekommen, dass eines der Pakete nicht gefunden werden kann, dann mache folgendes, wenn Du Debian verwendest.

Werbung

Öffne die Datei /etc/apt/sources.list (z.B. durch vim /etc/apt/sources.list) und fügende folgende Zeilen hinzu (Debian Wheezy 7):

Für Debian Squeeze:

Anschließend wird die Datei durch den entsprechenden Befehl (bei vim: :wq) gespeichert.

Nun können die beiden obersten Befehle erneut nacheinander ausgeführt werden.

Virtuelle Hosts einrichten

Nun kommen wir zu dem wichtigsten Teil. Du musst Nginx mitteilen, welche Websites er wie bedienen soll.

Dafür spielt der Ordner /etc/nginx/sites-enabled/ eine wichtige Rolle. Alle Dateien, die sich in diesem Ordner befinden, können sogenannte virtuelle Host-Einträge beinhalten.

Du wirst, wenn Du nun einmal nachschaust, in dem Ordner bereits eine Datei finden, die den Namen default trägt. Dort enthalten sind bereits einige auskommentierte (# vor der Zeile) Beispiele, die dir zeigen sollen, wie die virtuellen Hosts funktionieren.

Hier nun mal ein Beispiel für eine solche vHost-Datei:

Dieses Beispiel zeigt, denke ich, recht anschaulich die Möglichkeiten von Nginx. Du kannst natürlich auch noch eigene Statements innerhalb des server-Blocks (pro server-Block ein virtueller Host) definieren.

Außerdem solltest Du alle Code-Teile überprüfen und deinen Bedürfnissen anpassen (z.B. domain.com ersetzen). Möchtest Du mehr über Nginx und die vHost-Konfiguration lesen, so schau einmal hier vorbei.

Bitte beachte auch, dass Nginx keine .htaccess-Dateien kennt. Alle Regeln müssen innerhalb dieses Blocks definiert werden. Du kannst einen .htaccess-Converter verwenden, um den Code von Apache zu Nginx zu übersetzen. Im Idealfall machst Du das jedoch selbst.

PHP-FPM konfigurieren

PHP-FPM arbeitet gut mit Nginx zusammen. Zunächst muss es dafür allerdings korrekt konfiguriert werden.

Folgendes Statement sollte entweder in der allgemeinen php.ini (/etc/php5/fpm/php.ini) oder zum Beispiel in der user.ini (/etc/php5/fpm/conf.d/user.ini) zu finden sein:

Wenn das der Fall ist, und zwar nicht auskommentiert (also kein Zeichen zu Beginn der Zeile vor dem Statement), kann es weiter gehen.

Wir richten nun den Socket ein, mit dem PHP-FPM und Nginx arbeiten sollen. Das haben wir bei Nginx bereits über die Server-Konfiguration (siehe oben) getan. Öffne nun die Datei /etc/php5/fpm/pool.d/www.conf. Und sorge dafür, dass folgendes listen-Statement (vorhandene ggf. überschreiben) in der Datei steht:

Starten & Altlasten aufräumen

Sobald Du alle obrigen Schritte durchgeführt hast, kannst Du nun zunächst überprüfen, ob Deine Nginx-Konfiguration korrekt ist:

Eventuelle Fehler sollten behoben werden. Anschließend kann der Apache-Dienst beendet werden:

In diesem Moment ist deine Website nicht mehr erreichbar. Wir fahren also schnell fort und starten Nginx und PHP-FPM neu:

Für den Fall, dass bei dem Nginx-Neustart Fehler angezeigt werden, solltest Du deine vHost-Dateien schleunigst bearbeiten (Websites nicht erreichbar), die Fehler beheben und anschließend zum Beispiel über

die Nginx-Konfiguration neu laden.

Klappt alles wie es soll? Dann kannst Du jetzt Apache entfernen. Finde zunächst die entsprechenden Pakete:

Anschließend kannst Du sie entfernen lassen, indem Du die Namen der Pakete durch ein Leerzeichen getrennt an den folgenden Befehl hängst:

Nicht mehr benötigte Pakete können mit dem folgenden Konsolen-Befehl gelöscht werden:

Du könntest nun theoretisch auch noch die PHP-Pakete überprüfen, die meisten von ihnen wirst Du aber weiterhin benötigen (z.B. php-gd & Co. funktionieren auch mit FPM). In meinem Fall konnte ich libapache2-mod-php5 php5-cgi php5-cli ohne Probleme deinstallieren.

Wenn Dir bei der Sicherheitsabfrage plötzlich alle Pakete zum Deinstallieren angeboten werden, obwohl Du dennoch nur einige ausgewählt hast, ist ein Paket – wie php5-common – darunter, welches Du weiterhin benötigst, also: abbrechen!

Sicherheit erhöhen

Wenn Du nicht möchtest, dass jeder deine Nginx-Version einsehen kann und damit über eventuelle Sicherheitslücken informiert wird, kannst Du die Versionsanzeige (läuft über einen HTTP-Header) ausblenden:

in der Datei /etc/nginx/nginx.conf und das Problem ist gelöst, nachdem Nginx neu gestartet wurde.

Fazit zum Nginx-Umzug

Wer sich nur ein wenig mit den Nginx-Grundlagen befasst, kann damit einiges umsetzen. Der Konkurrent ist nicht nur schneller als Apache, sondern auch leicht zu bedienen. Gerade mit den mächtigen server-Statements kann viel gemacht werden.

Besonders interessant ist zum Beispiel try_files, was es bei Apache so nicht gibt. Viel Spaß mit deiner Nginx-Installation und mehr Performance wünsche ich.

Bewerte den Artikel


Werbung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Mit dem Absenden willigst du in die Veröffentlichung und Speicherung deines Kommentars ein. Eine solche Einwilligung kann jederzeit widerrufen werden.

Solve : *
8 + 25 =