Ubuntu · Debian · VPS

Webserver

Caddy, Apache2 oder Nginx

Installation und Einordnung der drei verbreiteten Webserver inklusive PHP-FPM, MariaDB/MySQL-Anbindung und sinnvoller PHP-Module für WordPress-Systeme.

Ubuntu VPS Caddy Apache2 Nginx PHP-FPM WordPress

1. Überblick und Grundentscheidung

Nur einen Haupt-Webserver auswählen Caddy, Apache2 und Nginx verwenden standardmäßig die Ports 80 und 443. Werden mehrere gleichzeitig gestartet, entstehen Portkonflikte. Parallelbetrieb ist möglich, benötigt aber einen bewusst geplanten Reverse Proxy und abweichende interne Ports.
Empfehlung kompakt

Caddy

Sehr kurze Konfiguration, automatisches HTTPS, ideal als Reverse Proxy und für überschaubare VPS-Setups.

Klassischer Standard

Apache2

Breite Kompatibilität, unterstützt .htaccess und ist für klassische WordPress-Projekte vertraut.

Hohe Kontrolle

Nginx

Effizient bei statischen Dateien und vielen Verbindungen, verlangt aber explizitere Konfiguration.

MerkmalCaddyApache2Nginx
HTTPSAutomatisch integriertCertbot oder manuellCertbot oder manuell
PHPPHP-FPMPHP-FPM empfohlen; mod_php möglichPHP-FPM
.htaccessNeinJaNein
Reverse ProxySehr einfachMöglichSehr leistungsfähig
KonfigurationsaufwandNiedrigMittelMittel bis hoch

2. Vorbereitung des frischen VPS

  1. Pakete aktualisieren
    System aktualisieren
    sudo apt update
    System aktualisieren
    sudo apt full-upgrade -y
  2. Grundlegende Werkzeuge installieren
    Werkzeuge installieren
    sudo apt install -y curl wget unzip ca-certificates gnupg debian-keyring debian-archive-keyring apt-transport-https
  3. Zeitzone und Hostnamen prüfen
    System prüfen
    timedatectl
    System prüfen
    hostnamectl
    System prüfen
    hostname -f
  4. DNS vorbereiten

    Der A- beziehungsweise AAAA-Record der Domain muss auf die öffentliche IP-Adresse des VPS zeigen.

3. Caddy installieren

Caddy wurde gewählt, weil er Reverse Proxy, statischen Webserver, PHP-Anbindung und automatisches HTTPS mit sehr kompakter Konfiguration verbindet. Das offizielle Paket richtet zugleich einen systemd-Dienst ein.

Offizielles APT-Repository hinzufügen

Repository und Signaturschlüssel einrichten
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Repository und Signaturschlüssel einrichten
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

Caddy installieren und prüfen

Installieren und Status prüfen
sudo apt update
Installieren und Status prüfen
sudo apt install -y caddy
Installieren und Status prüfen
caddy version
Installieren und Status prüfen
sudo systemctl status caddy --no-pager

Wichtige Pfade

Konfiguration/etc/caddy/Caddyfile
systemd-Dienstcaddy.service
Logsjournalctl -u caddy oder eigener Log-Pfad
WebverzeichnisseTypischerweise /var/www/<projekt>

Minimale statische Website

Beispielverzeichnis anlegen
sudo mkdir -p /var/www/example
Beispielverzeichnis anlegen
echo '<h1>Caddy läuft</h1>' | sudo tee /var/www/example/index.html
Beispielverzeichnis anlegen
sudo chown -R www-data:www-data /var/www/example
Caddyfile: statische Website
example.de {
    root * /var/www/example
    file_server
}

Konfiguration prüfen und laden

Formatieren, validieren und neu laden
sudo caddy fmt --overwrite /etc/caddy/Caddyfile
Formatieren, validieren und neu laden
sudo caddy validate --config /etc/caddy/Caddyfile
Formatieren, validieren und neu laden
sudo systemctl reload caddy

Caddy mit PHP-FPM

PHP-FPM und Module installieren
sudo apt install -y php-fpm php-cli php-mysql php-curl php-mbstring php-xml php-zip php-gd php-intl php-bcmath php-imagick php-opcache

Den tatsächlichen Socket ermitteln:

Socket-Datei suchen
find /run/php -maxdepth 1 -type s -name 'php*-fpm.sock'
Caddyfile: mit PHP-FPM
example.de {
    root * /var/www/example/public

    encode zstd gzip
    php_fastcgi unix//run/php/php8.5-fpm.sock
    file_server
}
Socket-Version prüfen Der Socket php8.5-fpm.sock ist ein Beispiel für Ubuntu 26.04. Verwende immer den auf deinem System tatsächlich vorhandenen Socket.

Reverse Proxy für Web-App, API oder Dashboard

Caddyfile: Reverse Proxy
api.example.de {
    reverse_proxy 127.0.0.1:3000
}

Für WebSockets ist normalerweise keine zusätzliche Spezialkonfiguration nötig; Caddy behandelt das Upgrade automatisch.

4. Was Caddy übernimmt

Automatisches HTTPS

Beantragung und regelmäßige Erneuerung von TLS-Zertifikaten sowie Weiterleitung von HTTP auf HTTPS.

Reverse Proxy

Weiterleitung von Domains und Subdomains an interne Anwendungen wie Node.js, Nuxt, APIs oder Dashboards.

Statische Dateien

Auslieferung von HTML, CSS, JavaScript, Bildern, Downloads und generierten Frontend-Builds.

PHP-FPM-Anbindung

Übergabe von PHP-Anfragen an PHP-FPM, beispielsweise für WordPress oder phpMyAdmin.

Kompression und Header

Gzip/Zstandard-Kompression, Security-Header, Caching-Regeln und Zugriffsbeschränkungen.

Protokolle

Moderne HTTP-Versionen, strukturierte Zugriffslogs und zentrale Fehlerdiagnose über systemd.

Abgrenzung Caddy ersetzt nicht PHP, MariaDB, WordPress oder deine Anwendung. Er nimmt HTTP(S)-Verbindungen an, liefert Dateien aus und leitet dynamische Anfragen an die jeweils zuständigen Prozesse weiter.

5. Apache2 mit PHP installieren

Apache ist die klassische Wahl für WordPress, wenn .htaccess, bekannte Hosting-Konventionen oder maximale Kompatibilität zu älteren Projekten wichtig sind.

Apache und PHP-FPM installieren

Pakete installieren
sudo apt update
Pakete installieren
sudo apt install -y apache2 php-fpm php-cli php-mysql php-curl php-mbstring php-xml php-zip php-gd php-intl php-bcmath php-imagick php-opcache

Empfohlene Apache-Module aktivieren

Module aktivieren und Dienst neu starten
sudo a2enmod proxy_fcgi setenvif rewrite headers expires ssl http2
Module aktivieren und Dienst neu starten
sudo a2enconf php8.5-fpm
Module aktivieren und Dienst neu starten
sudo systemctl restart apache2
PHP-FPM statt mod_php PHP-FPM trennt PHP-Prozesse vom Webserver und ist für neue Installationen meist flexibler als das klassische Apache-Modul libapache2-mod-php.

WordPress-Verzeichnis anlegen

Verzeichnis und Rechte einrichten
sudo mkdir -p /var/www/example/public
Verzeichnis und Rechte einrichten
sudo chown -R www-data:www-data /var/www/example
Verzeichnis und Rechte einrichten
sudo find /var/www/example -type d -exec chmod 755 {} \;
Verzeichnis und Rechte einrichten
sudo find /var/www/example -type f -exec chmod 644 {} \;

VirtualHost erstellen

Datei anlegen:

Neue Konfigurationsdatei erstellen
sudo nano /etc/apache2/sites-available/example.conf
VirtualHost: Minimalkonfiguration
<VirtualHost *:80>
    ServerName example.de
    ServerAlias www.example.de
    DocumentRoot /var/www/example/public

    <Directory /var/www/example/public>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example-error.log
    CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>

Website aktivieren

Aktivieren, prüfen und neu laden
sudo a2ensite example.conf
Aktivieren, prüfen und neu laden
sudo a2dissite 000-default.conf
Aktivieren, prüfen und neu laden
sudo apache2ctl configtest
Aktivieren, prüfen und neu laden
sudo systemctl reload apache2

HTTPS über Certbot

TLS-Zertifikat mit Certbot
sudo apt install -y certbot python3-certbot-apache
TLS-Zertifikat mit Certbot
sudo certbot --apache -d example.de -d www.example.de

Apache-Status prüfen

Status und Logs prüfen
sudo systemctl status apache2 --no-pager
Status und Logs prüfen
sudo ss -lntp | grep -E ':80|:443'
Status und Logs prüfen
sudo journalctl -u apache2 -n 100 --no-pager

6. Nginx mit PHP-FPM installieren

Nginx eignet sich für performante, explizit konfigurierte Setups. PHP wird immer über PHP-FPM angebunden; eine .htaccess-Auswertung gibt es nicht.

Nginx und PHP installieren

Pakete installieren
sudo apt update
Pakete installieren
sudo apt install -y nginx php-fpm php-cli php-mysql php-curl php-mbstring php-xml php-zip php-gd php-intl php-bcmath php-imagick php-opcache

PHP-FPM-Socket ermitteln

Socket und Dienst prüfen
find /run/php -maxdepth 1 -type s -name 'php*-fpm.sock'
Socket und Dienst prüfen
systemctl list-units --type=service | grep php.*fpm

WordPress-Verzeichnis anlegen

Verzeichnis und Rechte einrichten
sudo mkdir -p /var/www/example/public
Verzeichnis und Rechte einrichten
sudo chown -R www-data:www-data /var/www/example
Verzeichnis und Rechte einrichten
sudo find /var/www/example -type d -exec chmod 755 {} \;
Verzeichnis und Rechte einrichten
sudo find /var/www/example -type f -exec chmod 644 {} \;

Server Block erstellen

Server-Block: Minimalkonfiguration
server {
    listen 80;
    listen [::]:80;

    server_name example.de www.example.de;
    root /var/www/example/public;
    index index.php index.html;

    client_max_body_size 64M;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

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

    location ~ /\. {
        deny all;
    }

    location = /xmlrpc.php {
        deny all;
    }

    access_log /var/log/nginx/example-access.log;
    error_log /var/log/nginx/example-error.log;
}

Datei anlegen und aktivieren:

Erstellen, aktivieren und neu laden
sudo nano /etc/nginx/sites-available/example
Erstellen, aktivieren und neu laden
sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example
Erstellen, aktivieren und neu laden
sudo rm -f /etc/nginx/sites-enabled/default
Erstellen, aktivieren und neu laden
sudo nginx -t
Erstellen, aktivieren und neu laden
sudo systemctl reload nginx

HTTPS über Certbot

TLS-Zertifikat mit Certbot
sudo apt install -y certbot python3-certbot-nginx
TLS-Zertifikat mit Certbot
sudo certbot --nginx -d example.de -d www.example.de

Nginx-Status prüfen

Status und Logs prüfen
sudo systemctl status nginx --no-pager
Status und Logs prüfen
sudo nginx -t
Status und Logs prüfen
sudo journalctl -u nginx -n 100 --no-pager

7. PHP installieren und Module für WordPress

PHP-Version installieren

Die Ubuntu-Standardpakete liefern immer nur eine an die Ubuntu-Version gekoppelte PHP-Version. Für eine gezielte Version oder mehrere parallel installierte Versionen wird das PPA ondrej/php genutzt.

PPA für PHP-Versionen einrichten
sudo apt install -y software-properties-common
PPA für PHP-Versionen einrichten
sudo add-apt-repository -y ppa:ondrej/php
PPA für PHP-Versionen einrichten
sudo apt update

Verfügbare Versionen anzeigen:

Verfügbare Versionen auflisten
apt-cache search '^php[0-9]\.[0-9]-fpm$'

Eine bestimmte Version installieren, zum Beispiel PHP 8.3 zusätzlich zu PHP 8.5:

Zusätzliche PHP-Version installieren
sudo apt install -y php8.3-fpm php8.3-cli
Mehrere Versionen parallel Jede Version läuft als eigener FPM-Dienst mit eigenem Socket, zum Beispiel php8.3-fpm.sock und php8.5-fpm.sock. Der Webserver-Vhost entscheidet über den Socket-Pfad, welche Version eine Domain verwendet.

Module der alten Version für die neue Version übernehmen

Um beim Umstieg keine Pakete zu vergessen, lassen sich die aktuell installierten Module einer Version auslesen und direkt für eine neue Version installieren.

Installierte Module der alten Version anzeigen, zum Beispiel PHP 8.5:

Installierte php8.5-Pakete auflisten
dpkg -l 'php8.5-*' | awk '/^ii/{print $2}'

Dieselben Module direkt für die neue Version (hier PHP 8.3) installieren:

Module für neue Version übernehmen
sudo apt install -y $(dpkg -l 'php8.5-*' | awk '/^ii/{print $2}' | sed 's/^php8\.5-/php8.3-/' | tr '\n' ' ')
Funktionsweise dpkg -l listet alle installierten Pakete, awk filtert installierte (ii) php8.5-*-Pakete und gibt nur den Paketnamen aus, sed ersetzt das Versionspräfix. Das Ergebnis wird als Paketliste an apt install übergeben.

CLI-Standardversion umschalten, falls mehrere Versionen installiert sind:

Aktive CLI-Version wählen
sudo update-alternatives --config php

php.ini je Version und SAPI

Jede PHP-Version besitzt ein eigenes Konfigurationsverzeichnis unter /etc/php/<version>/, zusätzlich getrennt nach SAPI (FPM, CLI, Apache-Modul). Änderungen an einer php.ini wirken sich nur auf die jeweils zugehörige Version und SAPI aus.

SAPIPfadGilt für
FPM/etc/php/<version>/fpm/php.iniCaddy, Nginx, Apache mit proxy_fcgi
CLI/etc/php/<version>/cli/php.iniwp-cli, Cronjobs, manuelle Skriptausführung
Apache-Modul/etc/php/<version>/apache2/php.iniNur bei libapache2-mod-php (mod_php)
FPM-Pool/etc/php/<version>/fpm/pool.d/www.confProzess-Limits, User/Group, Listen-Socket je Version
Nach Änderungen neu laden Eine geänderte php.ini unter fpm/ wird erst nach sudo systemctl restart php<version>-fpm aktiv. Änderungen unter cli/ gelten sofort beim nächsten Aufruf, da hier kein Dienst läuft.

Empfohlene PHP-Module für WordPress

Eine praxistaugliche Installation für WordPress und verbreitete Plugins:

PHP-Module installieren
sudo apt install -y php-fpm php-cli php-mysql php-curl php-mbstring php-xml php-zip php-gd php-intl php-bcmath php-imagick php-opcache
PaketAufgabe
php-fpmVerwaltet PHP-Worker für Caddy, Nginx und Apache-FPM.
php-mysqlMySQLi- und PDO-Verbindung zu MariaDB/MySQL.
php-curlRemote-Anfragen, Updates, APIs und externe Dienste.
php-mbstringVerarbeitung mehrbytefähiger Zeichen und UTF-8.
php-xmlDOM, XML, SimpleXML und zahlreiche Plugin-Funktionen.
php-zipInstallation und Entpacken von Themes, Plugins und Updates.
php-gdGrundlegende Bildbearbeitung und Thumbnail-Erzeugung.
php-imagickErweiterte Bildverarbeitung; sinnvoll zusätzlich zu GD.
php-intlInternationalisierung, Datums-, Sprach- und Formatfunktionen.
php-bcmathExakte Berechnungen, häufig von Shop- oder Payment-Plugins genutzt.
php-opcacheSpeichert kompilierten PHP-Bytecode und verbessert die Leistung.

Installierte Module prüfen

Version und Module anzeigen
php -v
Version und Module anzeigen
php -m
Version und Module anzeigen
php --ini

PHP-FPM neu starten

Dienst neu starten und prüfen
sudo systemctl restart php8.5-fpm
Dienst neu starten und prüfen
sudo systemctl status php8.5-fpm --no-pager
Dienstnamen prüfen Ersetze php8.5-fpm durch den tatsächlichen Dienstnamen deines Systems.

Praxiswerte in php.ini

Die Datei liegt je nach SAPI beispielsweise unter /etc/php/8.5/fpm/php.ini.

php.ini: empfohlene Werte
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
max_input_vars = 3000
expose_php = Off
display_errors = Off
log_errors = On

8. MariaDB oder MySQL ergänzen

Für einen kompakten Ubuntu-VPS ist MariaDB meist die unkomplizierte Standardwahl.

MariaDB installieren und absichern

Installieren, aktivieren und absichern
sudo apt install -y mariadb-server
Installieren, aktivieren und absichern
sudo systemctl enable --now mariadb
Installieren, aktivieren und absichern
sudo mariadb-secure-installation

WordPress-Datenbank und Benutzer anlegen

MariaDB-Konsole öffnen
sudo mariadb
SQL: Datenbank und Benutzer anlegen
CREATE DATABASE wordpress
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

CREATE USER 'wordpress'@'localhost'
  IDENTIFIED BY 'EIN_SEHR_STARKES_PASSWORT';

GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';

FLUSH PRIVILEGES;
EXIT;

Datenbank nur lokal binden

Lauschenden Port prüfen
sudo ss -lntp | grep 3306

Gewünscht ist in einem Einzelserver-Setup typischerweise 127.0.0.1:3306, nicht 0.0.0.0:3306.

Port nicht öffentlich freigeben Öffne Port 3306 nicht öffentlich, sofern kein konkret abgesichertes Remote-Datenbankkonzept vorgesehen ist.

9. WordPress vorbereiten

Download und Installation

Herunterladen und entpacken
cd /tmp
Herunterladen und entpacken
curl -O https://wordpress.org/latest.tar.gz
Herunterladen und entpacken
tar -xzf latest.tar.gz
In das Webverzeichnis kopieren
sudo rsync -a wordpress/ /var/www/example/public/
In das Webverzeichnis kopieren
sudo chown -R www-data:www-data /var/www/example/public
In das Webverzeichnis kopieren
sudo find /var/www/example/public -type d -exec chmod 755 {} \;
In das Webverzeichnis kopieren
sudo find /var/www/example/public -type f -exec chmod 644 {} \;

Konfiguration erstellen

wp-config.php anlegen
cd /var/www/example/public
wp-config.php anlegen
sudo -u www-data cp wp-config-sample.php wp-config.php
wp-config.php anlegen
sudo -u www-data nano wp-config.php
wp-config.php: Datenbankzugang
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wordpress' );
define( 'DB_PASSWORD', 'EIN_SEHR_STARKES_PASSWORT' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );

WordPress-Salts abrufen

Zufällige Schlüssel abrufen
curl -s https://api.wordpress.org/secret-key/1.1/salt/

Webserver-spezifische Besonderheiten

  • Caddy: Permalinks funktionieren über php_fastcgi üblicherweise ohne .htaccess.
  • Apache: Für Permalinks sind mod_rewrite und AllowOverride All relevant.
  • Nginx: Die Regel try_files $uri $uri/ /index.php?$args; übernimmt die Rewrite-Funktion.

10. Sicherheits-Basics

  • SSH nur per Public Key; Passwort-Login nach erfolgreichem Test deaktivieren
  • Firewall nur für SSH, HTTP und HTTPS öffnen
  • MariaDB/MySQL ausschließlich lokal binden
  • Regelmäßige System-, WordPress-, Theme- und Plugin-Updates durchführen
  • Automatisierte Backups außerhalb des VPS speichern
  • PHP-Fehler nicht öffentlich anzeigen
  • Für jede Anwendung einen eigenen Datenbankbenutzer verwenden
  • Keine dauerhaften Schreibrechte für 777 vergeben

UFW-Beispiel

Firewall einrichten
sudo apt install -y ufw
Firewall einrichten
sudo ufw default deny incoming
Firewall einrichten
sudo ufw default allow outgoing
Firewall einrichten
sudo ufw allow OpenSSH
Firewall einrichten
sudo ufw allow 80/tcp
Firewall einrichten
sudo ufw allow 443/tcp
Firewall einrichten
sudo ufw enable
Firewall einrichten
sudo ufw status verbose

Gruppenrechte für Dateiverwaltung (www-data-Gruppe, SGID)

Damit du Dateien im Webverzeichnis bearbeiten kannst, ohne für jeden Zugriff sudo zu benötigen, und neu angelegte Dateien automatisch die richtige Gruppe erhalten, den eigenen Benutzer zur Gruppe www-data hinzufügen:

Benutzer zur www-data-Gruppe hinzufügen
sudo usermod -aG www-data USERNAME
Neu anmelden erforderlich Die neue Gruppenmitgliedschaft wird erst nach einem erneuten Login wirksam, alternativ in der aktuellen Sitzung mit newgrp www-data.

Das Verzeichnis anschließend der Gruppe www-data zuordnen und mit dem SGID-Bit (Set-Group-ID) versehen, damit neu angelegte Dateien und Unterordner automatisch diese Gruppe erben statt der primären Gruppe des erstellenden Benutzers oder Prozesses:

Gruppe zuweisen
sudo chown -R USERNAME:www-data /var/www/example
SGID-Bit rekursiv auf allen Verzeichnissen setzen
sudo find /var/www/example -type d -exec chmod g+s {} \;
Wirkung des SGID-Bits Mit gesetztem SGID-Bit erben neu erstellte Dateien und Unterordner automatisch die Gruppe des übergeordneten Verzeichnisses (www-data) statt der primären Gruppe des erstellenden Benutzers oder Prozesses (z. B. PHP-FPM). So bleiben Dateiberechtigungen zwischen manuellen Änderungen per SSH/SFTP und Schreibvorgängen des Webservers (Uploads, Caches, Updates) konsistent.

Damit neu erstellte Dateien innerhalb der Gruppe auch beschreibbar sind, zusätzlich einen passenden umask-Wert für den Benutzer setzen:

umask dauerhaft in .bashrc setzen
echo 'umask 002' | sudo -u USERNAME tee -a /home/USERNAME/.bashrc
SGID gilt nur für Verzeichnisse Das SGID-Bit wirkt nur auf Verzeichnisse und dort neu angelegte Einträge, nicht rückwirkend auf bereits vorhandene Dateien. Bestehende Dateien einmalig mit sudo chgrp -R www-data /var/www/example nachträglich der Gruppe zuordnen.

Automatische Sicherheitsupdates

Unattended Upgrades einrichten
sudo apt install -y unattended-upgrades
Unattended Upgrades einrichten
sudo dpkg-reconfigure --priority=low unattended-upgrades

11. Diagnose und typische Fehler

Portkonflikte prüfen

Belegte Ports anzeigen
sudo ss -lntp | grep -E ':80|:443|:3306'

Aktive Webserver prüfen

Laufende Dienste anzeigen
systemctl --type=service --state=running | grep -E 'caddy|apache2|nginx|php.*fpm|mariadb|mysql'

Konfiguration testen

Konfigurationen validieren
sudo caddy validate --config /etc/caddy/Caddyfile
Konfigurationen validieren
sudo apache2ctl configtest
Konfigurationen validieren
sudo nginx -t

Logs verfolgen

Live-Logs
sudo journalctl -fu caddy
Live-Logs
sudo journalctl -fu apache2
Live-Logs
sudo journalctl -fu nginx
Live-Logs
sudo journalctl -fu php8.5-fpm
Live-Logs
sudo journalctl -fu mariadb
FehlerWahrscheinliche Ursache
502 Bad GatewayPHP-FPM läuft nicht oder falscher Socket konfiguriert.
403 ForbiddenDateirechte, DocumentRoot oder Zugriffsregel fehlerhaft.
Port already in useEin anderer Webserver belegt bereits Port 80 oder 443.
HTTPS-Zertifikat schlägt fehlDNS zeigt nicht auf den VPS oder Port 80/443 ist blockiert.
WordPress-DatenbankfehlerZugangsdaten, Benutzerrechte, DB-Host oder PHP-MySQL-Modul prüfen.
Permalinks liefern 404Rewrite-/try_files-Regel fehlt oder Apache-.htaccess wird nicht erlaubt.

12. Entscheidungshilfe

Für ein aktuelles Setup Caddy ist weiterhin eine sehr passende Wahl, weil sich Subdomains, Reverse Proxies, automatische Zertifikate, PHP-FPM und kleine statische Seiten mit wenig Konfiguration zusammenführen lassen.
SituationEmpfehlung
Mehrere APIs, Bots, Dashboards und SubdomainsCaddy
Klassische WordPress-Projekte mit .htaccess-AbhängigkeitenApache2
Bewusst fein abgestimmtes, stark frequentiertes SetupNginx
Kleiner VPS mit möglichst einfacher AdministrationCaddy
Migration eines traditionellen Shared-Hosting-ProjektsApache2

Quellen und weiterführende Dokumentation: Caddy Installation · Caddy php_fastcgi · Ubuntu Apache2 · Ubuntu PHP · Nginx Dokumentation · WordPress Anforderungen · WordPress Hosting Handbook

↑ Nach oben