Auch Entwickler brauchen Platz zum Spielen

31. Januar 2013 /

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

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

Nginx sites available

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.

Nginx Toolbox-Modul

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

[Der Autor]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.

Thematisch ähnliche Beiträge