22. Februar 2012 / Performance, WordPress
Nginx Webserver und MySQL für WordPress konfigurieren
Erstellung der MySQL-Datenbank + Konfiguration des aufgesetzten Nginx Webservers sind die Todos des Tutorials. Einsteigerfreundlich erklärt.
Nginx, PHP5-FPM und MySQL sind dank der detaillierten Anleitung aus dem ersten Teil der Tutorial-Serie installiert und laufen einwandfrei. Was noch fehlt, ist die nicht ganz triviale Konfiguration des Webservers und die Einrichtung einer MySQL-Datenbank für den zukünftigen Blog auf WordPress-Basis. Wir beginnen mit dem letzten Task: Der Datenbank.
Intro
Exemplarisch wird die Einrichtung der Services für die Subdomain helpdesk.wpseo.de gezeigt. Die im Tutorial aufgeführten Nutzer, Datenbanknamen und Subdomains sind entsprechend anzupassen.
MySQL-Datenbank
Zunächst loggt sich der Administrator mit den Root-Zugangsdaten für MySQL ein (dafür erst per SSH auf dem Server anmelden):
mysql -uroot -p
Neue Datenbank kreieren:
CREATE DATABASE helpdesk;
Einen separaten Nutzer definieren:
CREATE USER 'helpdesk_user'@'localhost' IDENTIFIED BY 'MEIN-PASSWORT';
Alle MySQL-Tabellen der Datenbank an den neuen Nutzer binden:
GRANT ALL ON helpdesk.* TO helpdesk_user@localhost;
Mit exit auf der Konsole verlässt man MySQL.
Der MySQL-Zugang wird später in der WordPress-Konfigurationsdatei wp-config.php hinterlegt und baut sich wie folgt zusammen:
define('DB_NAME', 'helpdesk');
define('DB_USER', 'helpdesk_user');
define('DB_PASSWORD', 'MEIN-PASSWORT');
define('DB_HOST', 'localhost');
Soweit steht die Datenbank und kann ab sofort mit Inhalten gefüllt werden.
Nginx Konfiguration
Die nächsten Schritte beschreiben eine minimale, grundliegende Justierung des Nginx-Webservers für einen WordPress-Blog. In einem der kommenden Tutorials der Serie wird eine erweiterte Kalibrierung vorgestellt, die auf Performance und Sicherheit ausgelegt ist.
Als Erstes legt man das Root-Verzeichnis für die WordPress-Instanz an:
mkdir -p /var/www/helpdesk.wpseo.de chown -R www-data:www-data /var/www
Der Verzeichnisname gehört selbstverständlich angepasst: Ordner = Domain ist eine gute Regel für mehr Übersicht auf der Serverebene. Alternativ würde auch der Projektname genügen. An diesen Speicherort (also unter /var/www/helpdesk.wpseo.de) können WordPress-Dateien via SFTP übertragen werden.
Jeder Blog bzw. jede (Sub)Domain bekommt nicht nur ein eigenes Document-Root, sondern auch eine eigene Nginx-Konfigurationsdatei. Ist keine Pflicht, doch die Trennung nach Projekten erlaubt eine maximale Flexibilität bei abweichenden Einstellungen. Aus diesem Grund erstellt der Administrator unter /etc/nginx/sites-available/ eine für das Projekt zuständige Datei mit notwendigen Webserver-Regeln. In unserem Fall trägt die Datei den Namen helpdesk.wpseo.de

Verfügbare Nginx-Konfigurationsdatei im Ordner sites-available
Innerhalb der Konfigurationsdatei werden alle Einstellungen, Weiterleitungen und andere Steuerungsmechanismen notiert. Auch kleinere Anpassungen rund um den Webserver finden dort ihr Zuhause, da Nginx keine – doch so schnell erreichbare und bequeme – Datei .htaccess unterstützt. Im Klartext: Aus der SEO-Sicht notwendige Redirects müssen ebenfalls dort behandelt werden.
Das wäre der simple Inhalt der Datei zum Copy&Paste:
server {
listen 80 default_server;
server_name helpdesk.wpseo.de;
root /var/www/helpdesk.wpseo.de;
index index.php;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
Erläuterung
Keine Hexerei: Sieht nach wenig aus, ist es auch.
- default_server: Der virtuelle Server wird als Standard-Server festgelegt und kann im Browser direkt über die IP erreicht werden (bei einer DNS-Weiterleitung dann auch über die Domain).
- server_name: Als Servername ist die zukünftige (Sub)Domain definiert (erst bei DNS-Weiterleitungen relevant, kann auch localhost sein).
- root: Das im vorherigen Schritt zugewiesene Root-Verzeichnis der Website.
Speichern. Per Terminal als “erreichbar” markieren:
ln -s /etc/nginx/sites-available/helpdesk.wpseo.de /etc/nginx/sites-enabled/
Nginx neu starten:
/etc/init.d/nginx restart
Falls noch nicht geschehen, WordPress-Files ins Stammverzeichnis per SFTP übertragen und wp-config.php mit Anmeldedaten der MySQL-Datenbank versehen.
Beim Aufruf der Server-IP im Browser erscheint der WordPress-Installationsassistent. Das deutet auf einen fehlerfreien Betrieb des Webservers in Zusammenspiel mit WordPress hin.
Outro
Der WordPress-Blog steht ebenfalls, ist erreichbar und kann wie sonst üblich eingerichtet werden. Ein Tipp am Rande: Für SEO-freundliche Permalinks empfiehlt sich das dafür programmierte Toolbox-Modul – nach der Aktivierung können Permalinks in den WordPress-Einstellungen im Format /%postname%/ ausgewählt und genutzt werden.

Toolbox-Modul speziell für Nginx-Webserver
Hinweise
- Befinden sich WordPress-Dateien in einem Unterordner (z.B. wordpress), müsste die Nginx-Konfiguration nachträglich angepasst werden.
- Plugins, die für ihre korrekte Funktionsweise die Datei .htaccess beansprucht hatten, dürfen unter Nginx nicht länger zum Einsatz kommen und gehören abgestimmt oder abgestellt.
Tutorials der Serie
Sergej Müller ist enthusiastischer Software Engineer mit Schwerpunkten Webentwicklung, Apps und WordPress. Seit 2007 programmiert und vertreibt er wpSEO, das zugkräftige SEO-Plugin für WordPress-Blogs.