WordPress auf Ubuntu 22.04 mit Nginx, MariaDB, PHP8.1 (LEMP) installieren

|

Erfahre, wie du WordPress auf Ubuntu 22.04 mit Nginx, MariaDB und PHP8.1 (LEMP Stack) in wenigen Schritten installierst. Folge dieser detaillierten Anleitung, um dein CMS effizient einzurichten und deine Website zu optimieren​.

In dieser Anleitung wird erläutert, wie du WordPress auf Ubuntu 22.04 mit Nginx, MariaDB und PHP8.1 (LEMP Stack) installierst. WordPress ist das weltweit beliebteste CMS (Content-Management-System). Es wird geschätzt, dass heute mehr als ein Drittel aller Websites mit WordPress betrieben werden. PHP8.1 ist im Ubuntu 22.04 Repository enthalten, und die neueste Version von WordPress läuft perfekt damit.

Voraussetzungen

XXXXXXX

Nach Abschluss der LEMP-Installation kehre hierher zurück und fahre fort mit der Lektüre.

Schritt 1: WordPress herunterladen

Verbinde dich per SSH mit deinem Ubuntu 22.04 Server und aktualisiere die vorhandene Software.

sudo apt update && sudo apt upgrade -y

Besuche anschließend die Download-Seite von wordpress.org und lade das Zip-Archiv herunter. Du kannst den direkten Download-Link erhalten, indem du mit der rechten Maustaste auf den Download-Button klickst und „Link-Adresse kopieren“ auswählst.

Gib dann in der Kommandozeile wget gefolgt vom direkten Download-Link ein, um WordPress auf deinem Ubuntu 22.04 Server herunterzuladen.

wget https://de.wordpress.org/latest-de_DE.zip

Entpacke anschließend das Zip-Archiv mit dem unten stehenden Befehl.

sudo apt install unzip
sudo mkdir -p /usr/share/nginx
sudo unzip latest-de_DE.zip -d /usr/share/nginx/

Das Archiv wird im Verzeichnis <strong>/usr/share/nginx/</strong> entpackt. Ein neues Verzeichnis namens wordpress wird erstellt (<strong>/usr/share/nginx/wordpress</strong>). Dieses können wir nun umbenennen, sodass wir jedes Verzeichnis leicht identifizieren können. Ersetze example.com durch deinen tatsächlichen Domain-Namen.

sudo mv /usr/share/nginx/wordpress /usr/share/nginx/example.com

Schritt 2: Datenbank und Benutzer für die WordPress-Website erstellen

Melde dich mit dem folgenden Befehl als Root im MariaDB-Konsolenfenster an.

sudo mariadb -u root

Sobald du angemeldet bist, erstelle eine Datenbank für WordPress mit dem folgenden Befehl. Ich habe sie wordpress genannt, aber du kannst einen beliebigen Namen verwenden, beispielsweise den Namen deiner Website. (Vergiss nicht das Semikolon.)

create database wordpress;

Gib dann den unten stehenden Befehl ein, um einen Datenbankbenutzer für WordPress zu erstellen. Ersetze wpuser und <strong>your-password</strong> durch deinen bevorzugten Benutzernamen und dein Passwort.

create user wpuser@localhost identified by 'your-password';

Gewähre dem Benutzer alle Rechte an der WordPress-Datenbank.

grant all privileges on wordpress.* to wpuser@localhost;

Aktualisiere die Berechtigungstabelle, damit die Änderungen wirksam werden, und verlasse dann die MariaDB-Konsole.

flush privileges;
exit;

Schritt 3: WordPress konfigurieren

Navigiere zu deinem WordPress-Verzeichnis.

cd /usr/share/nginx/example.com/

Kopiere die Beispiel-Konfigurationsdatei und benenne sie in <strong>wp-config.php</strong> um.

sudo cp wp-config-sample.php wp-config.php

Bearbeite nun die neue Konfigurationsdatei mit einem Texteditor für die Kommandozeile, wie Nano.

sudo nano wp-config.php

Suche die folgenden Zeilen und ersetze die roten Texte durch den Datenbanknamen, Benutzernamen und das Passwort, die du im vorherigen Schritt erstellt hast.

/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');

/** MySQL database username */
define('DB_USER', 'username_here');

/** MySQL database password */
define('DB_PASSWORD', 'password_here');

Scrolle dann nach unten, um die folgende Zeile zu finden.

$table_prefix = 'wp_';

Standardmäßig beginnt jeder WordPress-Datenbanktabellenname mit wp_ als Präfix. Es wird dringend empfohlen, dies zu ändern, um die Sicherheit zu verbessern. Verwende zufällige Zeichen, wie unten.

$table_prefix = '9OzB3g_';

➡️ Hier ist ein Script, wass Dir eine zufällige $table_prefix liefert.

WordPress Salts

Als nächstest sollten in der wp-config.php die Key manuell generiert werden:

define('AUTH_KEY',         ' fc0l99nAFjWV1vZUyqAeR73IqEGWVbMkZHoWkNyTOtMyPxcbTIzIYK36aEVhzDqrV');
define('SECURE_AUTH_KEY',  ' nKTAaOrDAEL8mRwos792wGA95itVUcGo7G8wZtMG7JKwvswAQi6SxARkUilk2XY38');
define('LOGGED_IN_KEY',    ' X6P7D00KyYEcyUZzfzJyTSaChce5Lo7E3y9wdEjVHDujsINl92bDuqNhUAVW2zkxZ');
define('NONCE_KEY',        ' 37cL6nbEn6hj2DoL8I8tRmRafvU7xeqHr9gH20CSXdPjtcnKzeEOvqsJn3UoKUTX0');
define('AUTH_SALT',        ' TDwXG0yIPL3SI1IkWDC92TgsZSY9SNz8Jyf89mAkckbujy0S9Py5Sioh4PqiksR1W');
define('SECURE_AUTH_SALT', ' LQmtnn6XxMvyHGwRouDnPcQHjmzd1TWVnc7SjZwTUbHkIfGAm52SSlPVFjlKQHKRg');
define('LOGGED_IN_SALT',   ' z9CfDBmtNcKbo4cpNXoaUTDFDsVtsmDMqPdyqfFdSNQzooYTBNLI5P5Bbv0yA8kBj');
define('NONCE_SALT',       ' LTjTO0Ar6dlaO67F02HY2x7MFfYY7og3HEq1cNFMBCA5gU7za7VrJgWhvOzgFxCMt');

➡️ Hier ist ein Script, wass Dir zufällige key’s liefert.

Speichere und schließe die Datei. Um die Datei im Nano-Texteditor zu speichern, drücke Ctrl+O und dann Enter zur Bestätigung. Drücke anschließend Ctrl+X zum Beenden.

Da diese Datei ein Passwort enthält, führe den folgenden Befehl aus, um sicherzustellen, dass nur der Dateibesitzer diese Datei lesen kann.

sudo chmod 640 wp-config.php

Wir müssen auch den Nginx-Benutzer (www-data) als Besitzer des WordPress-Website-Verzeichnisses festlegen. Verwende dazu den folgenden Befehl.

sudo chown www-data:www-data /usr/share/nginx/example.com/ -R

Schritt 4: Erstelle einen Nginx Server Block für WordPress

Wir werden die Server-Block-Datei im Verzeichnis <strong>/etc/nginx/conf.d/</strong> erstellen. Der Dateiname muss mit <strong>.conf</strong> enden.

sudo nano /etc/nginx/conf.d/example.com.conf

Füge den folgenden Text in die Datei ein und ersetze die roten Texte durch deinen eigenen Domain-Namen. Vergiss nicht, A-Records für deinen Domain-Namen in deinem DNS-Manager zu erstellen.

server {
  listen 80;
  listen [::]:80;
  server_name www.example.com example.com;
  root /usr/share/nginx/example.com/;
  index index.php index.html index.htm index.nginx-debian.html;

  error_log /var/log/nginx/wordpress.error;
  access_log /var/log/nginx/wordpress.access;

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

   location ~ ^/wp-json/ {
     rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
   }

  location ~* /wp-sitemap.*\.xml {
    try_files $uri $uri/ /index.php$is_args$args;
  }

  error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;

  client_max_body_size 20M;

  location = /50x.html {
    root /usr/share/nginx/html;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
    fastcgi_buffers 1024 4k;
    fastcgi_buffer_size 128k;
  }

  # gzip-Komprimierung aktivieren
  gzip on;
  gzip_vary on;
  gzip_min_length 1000;
  gzip_comp_level 5;
  gzip_types application/json text/css application/x-javascript application/javascript image/svg+xml;
  gzip_proxied any;

  # Eine lange Browser-Cache-Lebensdauer kann wiederholte Besuche auf deiner Seite beschleunigen
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # Zugriff auf versteckte Dateien deaktivieren
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Speichere und schließe die Datei. Überprüfe dann die Nginx-Konfigurationen.

sudo nginx -t

Wenn der Test erfolgreich ist, lade Nginx neu.

sudo systemctl reload nginx

Gib deinen Domain-Namen in die Adressleiste des Browsers ein.

example.com

oder

example.com/wp-admin/install.php

Wenn der Installationsassistent nicht angezeigt wird, musst du wahrscheinlich einige PHP-Erweiterungen installieren.

sudo apt install php-imagick php8.1-fpm php8.1-mbstring php8.1-bcmath php8.1-xml php8.1-mysql php8.1-common php8.1-gd php8.1-cli php8.1-curl php8.1-zip

Lade dann PHP-FPM und Nginx neu. Der Assistent sollte nun angezeigt werden.

sudo systemctl reload php8.1-fpm nginx

Bevor du deine sensiblen Informationen im Setup-Assistenten eingibst, wird empfohlen, HTTPS zu aktivieren, um das Hijacking des Datenverkehrs zu verhindern.

Schritt 5: HTTPS aktivieren

Um den HTTP-Verkehr zu verschlüsseln, können wir HTTPS aktivieren, indem wir ein kostenloses TLS-Zertifikat von Let’s Encrypt installieren. Führe den folgenden Befehl aus, um den Let’s Encrypt-Client (certbot) auf dem Ubuntu 22.04-Server zu installieren.

sudo apt install certbot python3-certbot-nginx

Und führe diesen Befehl aus, um das TLS-Zertifikat zu erhalten und zu installieren.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email du@domain.de -d domain.de -d www.domain.de


Erklärung:

  • --nginx: Verwendet das Nginx-Plugin.
  • <strong>--agree-tos</strong>: Stimmt den Nutzungsbedingungen zu.
  • <strong>--redirect</strong>: Erzwingt HTTPS durch eine 301-Weiterleitung.
  • <strong>--hsts</strong>: Fügt den Strict-Transport-Security-Header jeder HTTP-Antwort hinzu. Zwingt den Browser dazu, immer TLS für die Domain zu verwenden und schützt so vor SSL/TLS-Stripping.
  • <strong>--staple-ocsp</strong>: Aktiviert OCSP Stapling. Eine gültige OCSP-Antwort wird an das Zertifikat angeheftet, das der Server während des TLS-Handshakes anbietet.
  • <strong>--email</strong>: E-Mail wird für Registrierung und Wiederherstellungskontakt verwendet.
  • <strong>-d</strong>: gefolgt von einer Liste von Domain-Namen, getrennt durch Kommas. Du kannst bis zu 100 Domain-Namen hinzufügen.

Das Zertifikat sollte jetzt erhalten und automatisch installiert worden sein.

Schritt 6: Abschließen der Installation mit dem Setup-Assistenten

Erstelle ein Admin-Konto und klicke auf den Button „WordPress installieren“.

Und nun ist deine neue WordPress-Website installiert.

Nächste Schritte

Ich hoffe, dieses Tutorial hat dir geholfen, WordPress auf Ubuntu 22.04 mit Nginx, MariaDB und PHP8.1 (LEMP-Stack) zu installieren. Wie immer, wenn du diesen Beitrag hilfreich fandest, abonniere unseren kostenlosen Newsletter, um mehr Tipps und Tricks zu erhalten.

Datensicherungen sind wichtig für den Fall von Hacking, Datenzentrumskatastrophen usw. Du solltest eine Backup-Strategie für deine WordPress-Seite haben.

  • Sichere und stelle MariaDB-Datenbanken von der Kommandozeile aus wieder her

Robert Einsle
schnelle Problemlösung durch langjährige Erfahrung

Schreibe einen Kommentar