Linux27. August 2026 10 Aufrufe

WordPress auf einem Linux-VPS hosten: komplette Anleitung (2026)

WordPress auf einem Linux-VPS hosten: komplette Anleitung (2026)

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:

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.