LEMP steht für Linux/Nginx/MariaDB und PHP. Im Gegensatz zu LAMP also Linux/Apache/Mysql und PHP soll ein Server mit Nginx etwas schneller als ein Apache Web-Server sein. Wie man das alles auf einem nackten Server mit Debian-Minimalsystem installiert, soll dieser Artikel beschreiben.

Wozu das Ganze?

Ich habe selber mein Projekt Supportnet.de seit ein paar Jahren auf einem Server mit LAMP Umgebung laufen und muss sagen, das läuft mit WordPress sehr gut. Jetzt habe ich aber die Erfahrung gemacht, dass die Performance der Webseitenauslieferung einen nicht ganz geringen Einfluss auf die Platzierung bei den Google Suchergebnissen hat. Was für Google gut ist, ist natürlich auch für den Besucher einer Webseite gut, so sollte es auf jeden Fall sein und in diesem Fall ist das natürlich auch so. Um so schneller die Seiten ausgeliefert werden um so besser die Besuchererfahrung.

Die Hardware ist im Gegensatz zu früher kaum ein Problem, wenn man wirklich Performance braucht nimmt man sich einen dedizierten Server. Aber auch da kann es Probleme geben wenn die Serversoftware nicht schnell genug ist. Deshalb wollte ich jetzt mal auf einem Hetzner CloudServer ausprobieren wie viel schneller Nginx gegenüber Apache eigentlich ist. Laut Internet Tests ist der Nginx bei statischen HTML Dateien ca. 2,5 mal schneller als der Apache und bei allen anderen Sachen wohl nur ein paar Prozent. Aber, vielleicht kommt es ja gerade auf die paar Prozent an um die eigene Seite besser als die der Konkurrenz als bestes Suchergebnis angezeigt zu bekommen.

Was brauchen wir alles

  1. Cloudserver oder dedicated Server (von Hetzner oder einem anderen Anbieter) mit installiertem Debian 10.x
  2. SSH Zugriff auf den Server

Wenn ihr hier schon mit einer Domain als Adresse, und nicht mit der IP Nummer des Servers arbeiten wollt, dann sollte der DNS (Domain Name Server Eintrag) der Domain schon auf die IP Nummer eures Servers zeigen. Ansonsten müsst ihr hier überall wo hier meine_domain steht einfach eure IP Nummer angeben.

Login und Passwort

Bei Hetzner bekommt man bei der Neueinrichtung eines virtuellen Servers (Cloudserver) oder eines dedicated Server (Hardware Server) eine Mail mit dem Passwort für root und der IP Nummer des Servers zugeschickt.

Also loggt euch jetzt per ssh auf die in der Mail angegebenen IP Nummer und den Logindaten ein. Bei dedizierten Server wird wohl noch nicht gefordert sein Passwort sofort zu ändern, bei Cloudservern ist das so. Man muss also noch einmal sein Passwort aus der e-mail eingeben und dann ein neues zwei mal eintippen (und gut merken).

Updates und Upgrades

Jetzt ist es eine gute Idee den Server auf den neuesten Stand zu bringen. Die Images, die installiert werden sind nicht immer taufrisch und wir wollen ja nicht gleich mit veralteten und unsicheren Paketen leben müssen.

sudo apt update (liest die Update Liste ein um ermitteln zu können welche Software Pakete aktualisiert werden können)
sudo apt upgrade (installiert dann die zu aktualisierenden Software Pakete)

Nginx installieren

Jetzt da alles auf dem aktuellen Stand ist kann man einfach mit dem Befehl:

sudo apt install nginx

Ob das geklappt hat kann man einfach ausprobieren indem man jetzt die IP Adresse seines Clooudservers (steht in der e-mail) in die Adressleiste seines Browsern eingibt. Wenn ihr schon eine Domain für euren Server habt und deren DSN Einträge schon funktionieren sollte der Aufruf deine-domain im Browser das gleiche Ergebnis bringen.

Wenn ihr das als Antwort bekommt habt ihr den Nginx erfolgreich installiert.

MariaDB Server installieren

Der Webserver läuft. Um Daten speichern zu können oder ein CMS wie WordPress installieren zu können braucht es noch einen Datenbank Server.

In unserem Fall MariaDB, der communit Fork aus dem von Oracle übernommenen Mysql.

MariaDB installieren

Das aktuelle Software Paket von MariaDB heißt mariadb-server und wird so installiert:

sudo apt install mariadb-server

MariaDB absichern

Wenn die Installation von MariaDB erfolgreich war ist es für die Sicherheit wichtig, dass ihr noch ein Script ausführt, dass ein paar Sachen in MariaDB löscht und verändert, die ein Sicherheitsproblem sein könnten.

sudo mysql_secure_installation

Zuerst fragt euch das Script nach dem root Passwort, welches das Datenbank root Passwort ist, nicht das Linux root Passwort. Da die MariaDB Datenbank gerade erst installiert wurde, gibt es noch kein Passwort und ihr könnt einfach auf Enter/Return für ein leeres Passwort drücken.

  1. Zuerst fragt euch das Script nach dem root Passwort, welches das Datenbank root Passwort ist, nicht das Linux root Passwort. Da die MariaDB Datenbank gerade erst installiert wurde, gibt es noch kein Passwort und ihr könnt einfach auf Enter/Return für ein leeres Passwort drücken. Das leere Passwort soll so bleiben, da MariaDB für root kein Passwort vorgesehen hat, was nicht heißt, dass man sich ohne Passwort einloggen kann. Das Authentifizierungsverfahren ist nur anders und manche Prozesse für die Wartung von MariaDB erwarten, dass sie sich so einloggen können.
  2. Jetzt werdet ihr gefragt ob ihr ein root Passwort vergeben wollt, was ihr nicht machen solltet.
  3. Danach soll der anonymous User gelöscht werden, der standardmäßig installiert wird. Das mit “Y” bestätigen.
  4. Jetzt noch die Einstellung bestätigen, dass der root User nur vom lokalen Server aus auf die Datenbank zugreifen kann und dann noch die Test Datenbank löschen lassen.
  5. Danach werden die Berechtigungstabellen neu eingelesen, auch das sollte man mit y bestätigen und fertig ist das Secure Script und die Datenbank für den Betrieb im Netz fertig.

Danach werden die Berechtigungstabellen neu eingelesen, auch das sollte man mit y bestätigen und fertig ist das Secure Script und die Datenbank für den Betrieb im Netz fertig.

MariaDB für WordPress einrichten

Wie oben unter MariaDB absichern schon geschrieben läuft auf einem Debian 10 System eine MariaDB 10.x Version bei der sich der root Benutzer über ein unix-socket Plugin oder andere Methoden authentifiziert. Also nicht über ein Passwort. Das ist deshalb wichtig, da man sich für die Administration der MariaDB einen anderen Benutzer anlegen muss, der administrative Rechte hat. 

Für den administrativen Zugang von root auf den MariaDB Server sollte man also die Authentifizierungsmöglichkeiten nicht ändern und kein Passwort für den Benutzer root vergeben. Der Benutzer root wird für viele administrative Zwecke benutzt und sollte daher auch wie von anderen Diensten erwartet funktionieren. Anwendungen wie Logdatei Rotation und Start und Stop des Servers benötigen so einen root-Benutzerzugang.

Es wird also empfohlen einen extra Benutzer Account für MariaDB mit administrativen Rechten anzulegen.

Dafür starten wie die MariaDB SQL Eingabe mit:

sudo mysql

Wir wollen hier einen Benutzer mit dem Namen „admin“, dem Passwort „passwort“ und allen Rechten für alle Datenbanken anlegen. Dazu geben wir in der folgenden MariaDB Eingabeaufforderung folgendes ein:

MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Dann noch die Zugriffsrechte neu einlesen:

MariaDB [(none)]> FLUSH PRIVILEGES;

Und jetzt die Eingabeaufforderung von MariaDB verlassen:

MariaDB [(none)]> exit

Jetzt bleibt uns nur noch die MariaDB Installation zu testen.

MariaDB Testen

root@xxxxxxxxxx-debian-2gb-nbg1-1:~# systemctl status mariadb
root@xxxxxxxxxx-debian-2gb-nbg1-1:~# systemctl status mariadb
 ● mariadb.service - MariaDB 10.3.15 database server
    Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
    Active: active (running) since Sat 2019-08-24 13:36:36 CEST; 2h 43min ago
      Docs: man:mysqld(8)
            https://mariadb.com/kb/en/library/systemd/
  Main PID: 8086 (mysqld)
    Status: "Taking your SQL requests now…"
     Tasks: 31 (limit: 4585)
    Memory: 74.5M
    CGroup: /system.slice/mariadb.service
            └─8086 /usr/sbin/mysqld
 Aug 24 13:36:37 xxxxxxxx-debian-2gb-nbg1-1 /etc/mysql/debian-start[8124]: Phase 6/7: Checking and upgrading tables
 Aug 24 13:36:37 xxxxxxxx-debian-2gb-nbg1-1 /etc/mysql/debian-start[8124]: Running 'mysqlcheck' with connection arguments: --socket='/var/run/mysqld/mys
 Aug 24 13:36:37 xxxxxxxx-debian-2gb-nbg1-1 /etc/mysql/debian-start[8124]: # Connecting to localhost…
 Aug 24 13:36:37 xxxxxxxx-debian-2gb-nbg1-1 /etc/mysql/debian-start[8124]: # Disconnecting from localhost…
 Aug 24 13:36:37 xxxxxxxx-debian-2gb-nbg1-1 /etc/mysql/debian-start[8124]: Processing databases
 Aug 24 13:36:37 xxxxxxxx-debian-2gb-nbg1-1 /etc/mysql/debian-start[8124]: information_schema
 Aug 24 13:36:37 xxxxxxxx-debian-2gb-nbg1-1 /etc/mysql/debian-start[8124]: performance_schema
 Aug 24 13:36:37 xxxxxxxx-debian-2gb-nbg1-1 /etc/mysql/debian-start[8124]: Phase 7/7: Running 'FLUSH PRIVILEGES'
 Aug 24 13:36:37 xxxxxxxx-debian-2gb-nbg1-1 /etc/mysql/debian-start[8124]: OK
 Aug 24 13:36:37 xxxxxxxx-debian-2gb-nbg1-1 /etc/mysql/debian-start[8230]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria
 lines 1-22/22 (END)

MariaDB Datenbank und Datenbank Benutzer für WordPress erstellen

WordPress erwartet eine schon bestehende Datenbank in der es seine Tabellen anlegen kann. Die muss man anlegen und auch einen Benutzer, der vollen Zugriff auf die Datenbank hat muss erstellt werden. In der WordPress Dokumentation wird angegeben, dass dieser Benutzer Vollzugriff auf die Datenbank haben muss. Das ist deshalb interessant, da man eigentlich nur Tabellen anlegen, ändern und löschen können muss und man aus Sicherheitsgründen lieber nur die benötigten Reche vergeben sollte. WordPress spricht aber von Plugins, die mehr Rechte verlangen können und daher sollte der Benutzer für die WordPress Datenbank alle Rechte für diese Datenbank haben.

Wir starten also die Datenbank Eingabeaufforderung mit:

root@xxxxxxxxx-debian-2gb-nbg1-1:~# sudo mariadb

so kommst du wieder in den Befehlsmodus von MariaDB und zwar als root Datenbankuser. Das passiert durch den sudo Befehl.

Wie man hier sieht loggt man sich als Superuser ein und braucht dafür kein root Passwort. Was wie ein Sicherheitsleck aussieht garantiert aber, dass sich nur Benutzer mit Superuser Rechten oder Prozesse, die diese besitzen auf der Datenbank als root anmelden können.

Es kann sich also niemand über eine PHP Lücke als root in der Datenbank anmelden, da PHP nicht als Superuser ausgeführt wird.

Um die Sicherheit zu erhöhen sollte man für jede Datenbank einen eigenen Benutzer mit für diese Datenbank beschränkten Rechten anlegen. Das macht vor allem Sinn, wenn man mehrere verschiedene Anwendungen mit Datenbanken hat. 

Wir legen in diesem Fall eine Datenbank namens “test_datenbank” an.

MariaDB [(none)]> CREATE DATABASE test_datenbank;

Und einen Benutzer, der nur auf diese Datenbank zugreifen darf mit dem Namen “test_user” mit dem Passwort “passwort” (hier bitte wieder ein sicheres Passwort eingeben.

MariaDB [(none)]> GRANT ALL ON test_datenbank.* TO 'test_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Dieser Benutzer kann in der Datenbank “test_datenbank” Tabellen anlegen, aktualisieren und löschen aber keine anderen Datenbanken erstellen oder verändern.

Dann noch einmal die Berechtigungen neu einlesen mit:

 MariaDB [(none)]> FLUSH PRIVILEGES;

Und exit aus der Datenbank

 MariaDB [(none)]> exit

Jetzt noch ein Test ob ihr euch mit dem neuen Benutzer “test_user” anmelden könnt.

mariadb -u test_user -p

Falls jetzt eine Fehlermeldung kommt, stimmt entweder der Benutzername des Datenbankbenutzers nicht oder das Passwort.

Ansonsten seid ihr angemeldet und könnt gleich mal testen welche Datenbanken euch zur Verfügung stehen:

SHOW DATABASES;

Output

+--------------------+ +--------------------+
| Database           |
+--------------------+
| test_datenbank   |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)

 +--------------------+

Und jetzt wieder “Exit” um die MariaDB Eingabeaufforderung zu verlassen.

PHP Installation

Anders als beim Apache Webserver kann Nginx selber kein PHP interpretieren. Beim Apache kann man PHP einfach als Modul laden und fertig. Damit Nginx mit PHP umgehen kann muss eine eigene Applikation für PHP installiert werden an die Nginx dann die PHP Aufrufe übergeben kann.

Dafür benötigen wir “php-fpm” (“PHP fastCGI process manager”) den man übrigens auch für den Apache Server braucht wenn man HTTP2 mit ihm verwenden will, da das PHP Apache Modul keine parallelen Verbindungen unterstützt. Dazu muss man dann noch Nginx erklären, dass es bei PHP den PHP fastCGI Prozess Manager ansteuern soll. Zusätzlich braucht es noch ein Modul damit PHP auf die MariaDB zugreifen kann, welches “php-mysql” heißt. 

WordPress verlangt noch ein paar Zusatzmodule für PHP, ohne die es zwar läuft aber in der Systemübersicht dann meckert. Also installiert man diese lieber gleich mit.

Um alle zu installieren gib folgenden Befehl ein:

sudo apt install php-fpm php-mysql php7.3-gd php7.3-imagick php7.3-curl php7.3-bcmath

So jetzt sind alle PHP Pakete installiert. Jetzt noch ein kleiner Check welche Versionen jeweils installiert sind.

php --version

 PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS )
 Copyright (c) 1997-2018 The PHP Group
 Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
     with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies

mariadb

 Welcome to the MariaDB monitor.  Commands end with ; or \g.
 Your MariaDB connection id is 150
 Server version: 10.3.15-MariaDB-1 Debian 10
 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Nginx für PHP konfigurieren

Um mit Nginx mehrere Domains verwenden zu können benutzt Nginx sogenannte server blocks. Diese server blocks entsprechen den virtuellen Hosts vom Apache Server. Man kann damit für verschiedene Webseiten (Domains) verschiedene Optionen wie zum Beispiel das Document Root für den Webserver vergeben. Die Server Blocks ersetzen auch die .htaccess Datei des Apache Servers und sind daher der Ort wo man Weiterleitungen oder deren Regeln festlegt.

Unter Debian 10 ist für Nginx schon ein server block vorkonfiguriert dessen Dokument Root /var/www/html ist. Wenn man also die IP Adresse des Servers aufruft oder einen DNS Eintrag für eine Domain auf diese IP Adresse zeigen lässt, dann kann man so die Standardkonfiguration aufrufen. Es wird also angezeigt was unter dem standard Document root an Dateien abgelegt ist. In unserem Fall also unter /var/www/html die Datei “index.nginx-debian.html”

Da ich selber hier auf dem Server auch mehrere Domains hosten will, erkläre ich kurz wie man mit Nginx virtuelle Hosts anlegt.

Server Block erstellen

Als erstes erstellen wir ein Dokument root für die erste Domain, in meinem Fall meine_domain

sudo mkdir /var/www/meine_domain

Rechte der Verzeichnisse noch anpassen

sudo chown -R www-data:www-data /var/www/meine_domain

Jetzt erstellen wir eine neue server blocks Konfigurationsdatei im Ordner 

/etc/nginx/sites-available/meine_domain

Ich nehme dazu immer den vi, ihr könnt dafür natürlich euren Lieblingseditor benutzen.

sudo vi /etc/nginx/sites-available/meine_domain

Fügt dann in diese Textdatei folgende Konfiguration ein:

server {
    listen 80;
    listen [::]:80;

    root /var/www/meine_domain;
    index index.php index.html index.htm;

    server_name meine_domain;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    }
}

Diese Basiskonfiguration lässt Nginx auf dem Port 80 hören und verteilt Dateien von eurem web root Verzeichnis /var/www/meine_domain. Diese Konfiguraton (server block) antwortet nur auf Anfragen, die genau eurem angegebenen Domainnamen entsprechen. Alle PHP Anfragen werden an php-fpm weitergeleitet und dann von dort, nach der Bearbeitung, wieder ausgeliefert.

Dann noch einen Softlink auf die Datei erstellen, damit die Konfiguration der Domain auch ausgeführt wird:

sudo ln -s /etc/nginx/sites-available/meine_domain /etc/nginx/sites-enabled/

Jetzt noch ein Check ob die Konfiguration keine Fehler enthält mit:

sudo nginx -t

Und der obligatorische Neustart des Nginx Servers mit:

sudo systemctl reload nginx

So jetzt sollte der Server laufen und auch PHP interpretieren.

PHP für Nginx testen

Das testen wir noch schnell mit einer kleinen PHP Info Datei, die schnell erzeugt ist. Nehmt euren Lieblingseditor und erzeugt eine Datei info.php (im Verzeichnis /var/www/html/ also eurem html root) in die ihr folgendes schreibt:

<?php
phpinfo();

Ruft jetzt die Datei über euren Browser mit der Adresse auf:

http://meine_domain/info.php

Als Ergebnis solltet ihr eine Webseite mit sehr detaillierten Informationen über euren Server angezeigt bekommen.

Solltet ihr an der PHP Konfiguration etwas ändern müssen könnt ihr PHP mit diese Befehl neu starten: systemctl restart php7.3-fpm

Nginx für WordPress einrichten

Was hier jetzt interessant ist, Nginx hat nicht wie Apache eine .htaccess Datei in der man Umleitungen definieren kann. Das muss alles in der Konfiguration eines Server Blocks von Nginx gemacht werden. Deshalb verändern wir unsere erste Server Block Konfigurationsdatei dahingehend, dass auch Nginx die von WordPress benötigten Umleitungen machen kann.

Plugins, die auf eine .htaccess angewiesen sind, können nur über Umwege mit Nginx eingesetzt werden.

Also editiert nochmal die Datei

/etc/nginx/sites-avaiable/meine_domain

Und tragt dort folgendes ein.

server {
   server_name meine_domain;
   listen 80;
   root /var/www/meine_domain;
   access_log /var/log/nginx/access.log;
   error_log /var/log/nginx/error.log;
   index index.php;
   gzip  on;
   gzip_vary  on;
   gzip_min_length  100;
   gzip_buffers  16 8k;
   gzip_proxied  any;
   gzip_types
     text/plain
     text/css
     text/javascript
     application/json
     application/javascript;
  
   location / {
     try_files $uri $uri/ /index.php?q=$uri&$args;
   }
  
   location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
     access_log off;
     expires max;
   }
  
   location ~ /\.ht {
     deny  all;
   }
  
   location ~ \.php$ {
     fastcgi_index index.php;
     fastcgi_keep_conn on;
     include /etc/nginx/fastcgi_params;
     fastcgi_pass unix:/run/php/php7.3-fpm.sock;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
 }
   

Hinweis: Wenn ihr eine andere PHP Version benutzt müsst ihr hier in der Zeile in der „fastcgi_pass unix:/run/php/php7.3-fpm.sock;“ steht, die Version anpassen. Eure PHP Version könnt ihr so auslesen: php –version

Bei allen Änderungen an der PHP Konfiguration oder eines Nginx Server Blocks müsst ihr danach den Nginx Server neu starten:

sudo systemctl reload nginx

Läuft der Server mit dieser Konfiguration dann solltet ihr jetzt WordPress installieren können.

WordPress installieren

So der Server läuft und PHP und MariaDB sind bereit die ersten WordPress Daten zu verarbeiten. Installieren wir jetzt also WordPress im Document Root unserer Domain. Dazu müssen wir das WordPress Paket von www.wordpress.org downloaden. Wechsel dazu in dein Dokument Root deines Servers also nach /var/www/deine_domain und führe dort den Befehl aus.

wget https://de.wordpress.org/latest-de_DE.tar.gz

Das war der Link für die deutsche Version, für die englische Originalversion musst diese Datei runterladen.

wget https://wordpress.org/latest.tar.gz

Das Entpacken geht mit

tar xfz latest-de_DE.tar.gz 

Die WordPress Dateien werden jetzt in den Ordner „wordpress“ entpackt, was wir eigentlich nicht wollen. Daher kopieren wir die Sachen noch in das Dokument Root unseres Servers zurück.

mv wordpress/* .
rm -r wordpress

Wir könnten jetzt die wp-config.php Datei erstellen und unsere Daten für den Datenbankzugriff und alles sonstigen Sachen dort eintragen, aber WordPress macht es einem einfach und lässt einen das auch alles bequem über den Browser eintragen. Ruft dazu im Browser eure Domain auf, in unserem Fall also www.deine-domain.de . Wichtig dabei ist, dass ihr die Dateirechte vorher für den Benutzer www-data geändert habt, da WordPress sonst nicht auf die wp-config.php Datei schreiben kann (vor allem spart man sich das lästige Eintragen von Zufallszeichen für den Salt Zusatz für die Verschlüsslung in der Datenbank).

chown -R www-data:www-data /var/www/mein_domain

Jetzt wo alle Dateien entpackt sind, am richtigen Ort liegen und die richtigen Berechtigungen gesetzt sind können wir einen ersten Versuch starten, die Installation von WordPress über den Browser anzugehen. Gib dazu deine Domain-Adress in einem Browser ein, in unserem Beispiel also meine-domain. Die Seite, die jetzt erscheinen sollte sieht so aus.

Klicke auf „Los geht’s“ und du kommst auf die folgende Seite in der du deine Datenbank Zugangsdaten eingeben muss.

Wichtig hier ist, das sind die Zugangsdaten, die du oben im Abschnitt „MariaDB Datenbank und Datenbank Benutzer für WordPress erstellen“ eingerichtet hast. Bei der Tabellen-Präfix kann man sich auch etwas anderes als wp_ einfallen lassen, das macht es potentiellen Angreifern etwas schwerer, da sie nicht vorher schon wissen wie die Datenbanktabellen heißen. Es spielt für WordPress keine Rolle, da die Präfix frei wählbar ist.

Jetzt kannst du die Installation starten. Falls irgendwas mit der Datenbank nicht klappen sollte bekommst du eine Fehlermeldung. Meist hat man sich mit den eingegebenen Daten vertippt. Auch wenn deine Dateien noch nicht für den User www-data beschreibbar sind bekommst du eine Fehlermeldung a la:

Heureka, alles geschafft. WordPress läuft und funktioniert mit einem aktuellen Nginx Server, mit PHP 7.x, MariaDB und eben WordPress selber.

Das coole an den Cloud Servern von Hetzner (bei allen anderen Anbietern ist das sicher genau so) man kann sie beliebig hin und her kopieren, sich Snapshots machen bevor man eine heikle Änderung macht und auch ziemlich gut erweitern. Wenn man mehr CPU Power braucht kann man sich zusätzliche CPUs einfach dazu buchen, oder mehr RAM oder was auch sehr cool ist einfach mehr Plattenplatz mounten. Ich habe auf einem meiner Testserver einfach noch zusätzliche 40 GB Plattenplatz auf /var/www/html gemountet um mehr Platz für Daten zu haben (das kostet dann ca. 2-3 Euro monatlich mehr). Also alles sehr flexibel das Ganze.

Fazit

Wenn alles gut geht hat man sich so eine WordPress Installation auf deinem Server in einer Stunde installiert. Leider klappt nicht immer gleich alles auf Anhieb. Wenn der Server läuft, ist er wirklich schnell. Meine ersten Speed Tests mit der WordPress Installation noch ohne zusätzliche Plugins und wenig Inhalten zeigen aber ein gutes Ergebnis bei Google Page Speed Insights, für die Desktop Version 100 % und für die Mobile 95 %. Das ändert sich natürlich alles wenn die Datenbank mal etwas gefüllt ist und auch mehr als ein Benutzer auf die Seite zugreift. Für einen virtuellen Server mit nur zwei CPU Kernen, 4 GB RAM und 20 GB Plattenplatz ein gutes Ergebnis.

Mit der Snapshot Funktion der Cloudserver werde ich jetzt noch einige Performance Tests mit Daten und verschiedenen Konfigurationen machen.

Werbung und Sponsoring

Also ich schwärme hier ja doch etwas für Hetzner als Provider für unseren Server und das liegt an der inzwischen fast 20 Jahre langen Erfahrung, die ich mit Hetzner gemacht habe. Der Support von Hetzner war immer sehr hilfsbereit und hat uns auch in Notfällen immer versucht eine gute Lösung zu bieten, also auch mitgedacht wie man ein aufgetauchtes Problem lösen kann.

Deshalb schreibe ich es hier noch einmal aus, ich habe keine Vorteile durch diesen Artikel von der Firma Hetzner bekommen, aber was nicht ist kann ja noch werden ;-)