Diese Anleitung behandelt ausschließlich die WordPress-spezifischen Schritte: dedizierte MariaDB-Datenbank, Nginx-Konfiguration für WordPress, Installation über WP-CLI, PHP-Optimierungen und Absicherung von wp-admin. Die vorbereitenden Schritte sind separat dokumentiert, siehe die Links am Anfang jedes Abschnitts.
Voraussetzungen
Bevor Sie beginnen, müssen die folgenden Elemente auf Ihrem VPS vorhanden sein:
- Nginx und PHP 8.4-FPM installiert → Anleitung Nginx + PHP-FPM
- UFW-Firewall konfiguriert (Ports 80 und 443 offen) → Anleitung UFW
- SSH-Zugang per Schlüssel abgesichert → Anleitung SSH-Schlüssel
- Ein Domainname, der auf die IP des VPS zeigt (A-Eintrag konfiguriert)
Für WordPress erforderliche PHP-Erweiterungen (Quelle: wordpress.org/about/requirements/), prüfen Sie, ob sie installiert sind:
- php8.4-mysql, php8.4-curl, php8.4-gd, php8.4-mbstring, php8.4-xml, php8.4-zip, php8.4-intl, php8.4-opcache
Falls diese Erweiterungen nicht vorhanden sind, installieren Sie sie:
sudo apt install -y php8.4-mysql php8.4-curl php8.4-gd php8.4-mbstring php8.4-xml php8.4-zip php8.4-intl php8.4-opcache Nginx und PHP-FPM sind noch nicht eingerichtet? Folgen Sie zunächst unserer Anleitung Nginx und PHP-FPM auf einem Linux-VPS installieren. Und für einen von Anfang an sicheren Zugang konfigurieren Sie einen SSH-Schlüssel.
Schritt 1: Dedizierte MariaDB-Datenbank erstellen
WordPress benötigt eine eigene Datenbank und einen eigenen Benutzer. Verwenden Sie root nicht für Anwendungsverbindungen.
Mit MariaDB verbinden:
sudo mariadb -u root Datenbank, Benutzer und Rechte anlegen (ersetzen Sie die Platzhalterwerte):
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'starkes_passwort';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost';
FLUSH PRIVILEGES;
EXIT; Hinweis: utf8mb4 ist der von WordPress empfohlene Zeichensatz für die vollständige Unterstützung von Emojis und Unicode-Zeichen (Quelle: developer.wordpress.org/advanced-administration/before-install/howto-install/).
Schritt 2: WP-CLI installieren
WP-CLI ist das offizielle Kommandozeilenwerkzeug für WordPress. Damit können Sie WordPress ohne grafische Oberfläche installieren, konfigurieren und warten.
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp Installation überprüfen:
wp --info Quelle: wp-cli.org/docs/installing/
Schritt 3: WordPress herunterladen und konfigurieren
WordPress herunterladen
sudo mkdir -p /var/www/meineseite.de
sudo chown -R www-data:www-data /var/www/meineseite.de
cd /var/www/meineseite.de
sudo -u www-data wp core download --locale=de_DE wp-config.php erstellen
sudo -u www-data wp config create \
--dbname=wordpress_db \
--dbuser=wordpress_user \
--dbpass=starkes_passwort \
--dbhost=localhost \
--dbcharset=utf8mb4 \
--locale=de_DE WordPress-Installation starten
sudo -u www-data wp core install \
--url=https://meineseite.de \
--title="Meine Website" \
--admin_user=admin \
--admin_password=admin_passwort \
[email protected] Hinweis: Ersetzen Sie alle Werte in Anführungszeichen durch Ihre eigenen. Verwenden Sie ein starkes Admin-Passwort (mindestens 16 Zeichen, Großbuchstaben, Ziffern, Sonderzeichen).
Schritt 4: Nginx-vhost für WordPress konfigurieren
Die Nginx-Konfiguration für WordPress erfordert spezifische Direktiven für Permalinks und Sicherheit. Erstellen Sie eine eigene Konfigurationsdatei:
sudo nano /etc/nginx/sites-available/meineseite.de Inhalt der Datei (ersetzen Sie meineseite.de durch Ihre Domain):
server {
listen 80;
listen [::]:80;
server_name meineseite.de www.meineseite.de;
root /var/www/meineseite.de;
index index.php;
# Maximale Upload-Größe (mit PHP abstimmen)
client_max_body_size 64M;
# WordPress-Permalinks
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP-Verarbeitung über PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Zugriff auf sensible Dateien blockieren
location ~ /\.(ht|git|env) {
deny all;
}
# Direkten Zugriff auf xmlrpc.php blockieren, falls nicht genutzt
location = /xmlrpc.php {
deny all;
}
# Browser-Cache für statische Assets
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
} Site aktivieren und Nginx neu laden:
sudo ln -s /etc/nginx/sites-available/meineseite.de /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx Hinweis: Die Direktive try_files $uri $uri/ /index.php?$args; ist unverzichtbar, damit die WordPress-Permalinks korrekt funktionieren (Quelle: nginx.org/en/docs/http/ngx_http_core_module.html).
Schritt 5: HTTPS mit Certbot aktivieren
Die erweiterten Certbot-Optionen (Verlängerung, Wildcard, Apache) sind in unserer eigenen Certbot-Anleitung ausführlich beschrieben.
Das SSL-Zertifikat ist unverzichtbar. Folgen Sie unserer eigenen Anleitung, um es zu erhalten und automatisch zu verlängern.
Nach dem Erhalt des Zertifikats passt Certbot den vhost automatisch an, um HTTP auf HTTPS umzuleiten und die SSL-Direktiven hinzuzufügen.
Schritt 6: PHP-Optimierungen für WordPress
OPcache
OPcache speichert den kompilierten PHP-Bytecode im Cache und reduziert so die Verarbeitungszeit jeder Anfrage. Prüfen Sie, ob er in /etc/php/8.4/fpm/conf.d/10-opcache.ini aktiviert ist:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=2
opcache.fast_shutdown=1 Diese Werte sind auf einen VPS mit 4 GB RAM abgestimmt. Quelle: php.net/manual/fr/opcache.configuration.php.
Maximale Upload-Größe
Stimmen Sie das PHP-Upload-Limit mit der Nginx-Direktive client_max_body_size ab:
sudo nano /etc/php/8.4/fpm/php.ini Ändern oder ergänzen Sie:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120 PHP-FPM neu starten:
sudo systemctl restart php8.4-fpm Schritt 7: wp-admin absichern
Sichern Sie ergänzend den Server selbst ab: UFW-Firewall und Fail2ban gegen Brute-Force-Angriffe.
wp-admin per IP schützen (optional, aber empfohlen)
Wenn Sie von einer festen IP auf die Verwaltung zugreifen, beschränken Sie den Zugriff im Nginx-vhost:
location /wp-admin {
allow 203.0.113.10; # Durch Ihre IP ersetzen
deny all;
} wp-login.php gegen Brute-Force schützen
Fügen Sie im Nginx-vhost Folgendes hinzu, um die Anmeldeversuche zu begrenzen:
location = /wp-login.php {
limit_req zone=login burst=3 nodelay;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
} Deklarieren Sie die Limit-Zone im http-Block von /etc/nginx/nginx.conf:
http {
limit_req_zone $binary_remote_addr zone=login:10m rate=1r/m;
...
} Fail2ban für WordPress
Für einen zusätzlichen Schutz gegen wiederholte Anmeldeversuche konfigurieren Sie Fail2ban mit einem WordPress-Filter: siehe die Anleitung Fail2ban.
Welche VPS-Konfiguration für WordPress?
| Geschätzter monatlicher Traffic | Empfohlener RAM | OuiHeberg-Angebot |
|---|---|---|
| Bis 10 000 Besuche | 4 GB | VPS Linux 04G: 7,00 € inkl. MwSt./Monat |
| 10 000 bis 50 000 Besuche | 8 GB | Zur Linux-VPS-Produktreihe |
| Mehr als 50 000 Besuche | 16 GB+ | Zur Linux-VPS-Produktreihe |
Diese Schätzungen gehen von einer Standard-WordPress-Site mit aktiviertem Cache aus (WP Super Cache oder W3 Total Cache). Eine WooCommerce-Site oder eine Site mit vielen gleichzeitigen Zugriffen benötigt mehr RAM.
Häufige Fragen
Kann man mehrere WordPress-Sites auf einem einzigen VPS hosten?
Ja. Erstellen Sie für jede Site einen eigenen Nginx-vhost und eine dedizierte MariaDB-Datenbank. So verfügt jede Site über ihren eigenen isolierten Bereich. Der RAM des VPS ist der begrenzende Faktor: Rechnen Sie mit etwa 256 bis 512 MB pro aktiver WordPress-Site mit OPcache.
Braucht man einen Managed VPS für WordPress?
Nein. Diese Anleitung behandelt die Installation auf einem nicht verwalteten VPS mit vollem Root-Zugriff. Ein Managed VPS delegiert die Systemwartung (OS-Updates, Backups), reduziert aber die Kontrolle und erhöht die Kosten. Für die meisten Projekte reicht ein nicht verwalteter VPS mit guten Sicherheitspraktiken (SSH per Schlüssel, UFW, Fail2ban) aus.
Ist WP-CLI notwendig oder kann man WordPress manuell installieren?
WP-CLI ist optional. Bei der manuellen Installation laden Sie das Archiv von wordpress.org/download/ herunter, entpacken es in /var/www/meineseite.de und füllen wp-config.php von Hand aus. WP-CLI automatisiert diese Schritte und erleichtert künftige Updates (wp core update).
Wie aktualisiert man WordPress über WP-CLI?
cd /var/www/meineseite.de
sudo -u www-data wp core update
sudo -u www-data wp plugin update --all
sudo -u www-data wp theme update --all Wie sichert man WordPress auf einem VPS?
Zwei Elemente müssen gesichert werden: die Dateien und die Datenbank.
# Sicherung der Datenbank
sudo -u www-data wp db export /var/www/meineseite.de/backup-$(date +%F).sql
# Sicherung der Dateien
tar -czf /root/backup-wordpress-$(date +%F).tar.gz /var/www/meineseite.de Automatisieren Sie dies per Cron oder nutzen Sie die automatischen Backups, die in Ihrem OuiHeberg-VPS-Angebot enthalten sind.
Sie haben noch keinen VPS? Das Angebot VPS Linux 04G (4 GB RAM, NVMe, Anti-DDoS, Support 24/7) ist der empfohlene Einstieg für das Hosting von WordPress.
→ Die Linux-VPS von OuiHeberg entdecken
Läuft Ihre WordPress-Website bereits auf Shared Hosting? Das Verfahren für den Umzug auf einen VPS ohne Ausfallzeit (rsync, Datenbank, DNS-Umstellung) wird in unserer Migrationsanleitung beschrieben.
