GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Installieren Sie WordPress mit Remote-Datenbank auf Debian

Übersicht

Im folgenden Beitrag behandeln wir das Szenario, in dem wir WordPress mit Remote-Datenbank auf Debian installieren werden. Mit anderen Worten, wir werden eine Umgebung haben, in der wir zwei separate Server haben, einen, der nur die WordPress-Installation hat (was bedeutet, dass er nur die Website hostet) und der andere nur die Datenbank (fungiert nur als Datenbankserver). .

Es gibt viele gute Gründe, warum diese Art von Umgebung eingerichtet wird – einer davon ist die einfache Wartung von Websites und Datenbanken, die Leistungssteigerung (was bedeutet, dass WordPress viel weniger Ressourcen benötigt, da es nicht von einem Server abhängig ist).

Aber der Nachteil ist – da wir jetzt zwei Server haben, wird die Serverwartung zunehmen.

Dieses Setup wird auf zwei Debian-Servern konfiguriert (beide im gleichen Netzwerk/im gleichen LAN).

Der Stack wird LEMP sein – Nginx-Webserver, PHP- und MariaDB-Server.

Datenbankserverkonfiguration

Wir konzentrieren uns zuerst auf den Datenbankserver:

1. Installieren Sie den MariaDB-Server

sudo apt install mariadb-server

Führen Sie mysql_secure_installation

aus
sudo mysql_secure_installation

2. Bearbeiten Sie die Datenbankkonfigurationsdatei und ändern Sie den Parameter bind-address und geben Sie die private Adresse Ihres Datenbankservers ein:

Die zu bearbeitende Datei:

sudo /etc/mysql/mariadb.conf.d/50-server.cnf

Zu bearbeitende Zeile – Bindungsadresse =127.0.0.1

Bindungsadresse =192.168.56.252

Speichern und beenden, neu starten und den mariadb.service aktivieren.

sudo systemctl restart mariadb.service

sudo systemctl enabled mariadb.service

Um die IP-Adresse Ihres Datenbankservers herauszufinden, führen Sie den Befehl – ​​ip a aus.

3. Erstellen Sie die Datenbank, den Benutzer und setzen Sie die Privilegien (Infos in den Befehlen dienen als Beispiel)

sudo mysql -u root -p
CREATE DATABASE wptest;
GRANT ALL ON wptest.* TO 'wpadmin'@'192.168.56.251' IDENTIFIED BY 'StrongPassword';
FLUSH PRIVILEGES;
exit

Auf der Datenbank muss ein Remote-Benutzer erstellt werden, auch bekannt als das Benutzerkonto, das unsere WordPress-Installation verwendet, um sich mit der Datenbank zu verbinden. Es ist notwendig, dass Sie die IP-Adresse des WordPress-Servers kennen und diese angeben/an das Remote-Benutzerkonto binden.

Firewall-Konfiguration

Wenn Sie eine laufende Firewall auf Ihrem Datenbankserver haben, dann ist es notwendig, den Port 3306 zu öffnen, um die Verbindung vom Webserver zu akzeptieren und auf die Datenbank zuzugreifen. Um auf der sicheren Seite zu sein, ist es gut, die Regeln so zu konfigurieren, dass nur die Verbindungen von unserem Webserver akzeptiert werden.

UFW-Firewall-Konfiguration

sudo ufw allow from 192.168.56.251 to any port 3306

IPTABLES-Konfiguration

iptables -I INPUT -p tcp -s 192.168.56.251 --dport 3306 -j ACCEPT

Webserver-Konfiguration

1. Installieren Sie den Nginx-Webserver mit anderen erforderlichen PHP-Bibliotheken, um WordPress auszuführen und mit dem Datenbankserver und dem mysql/mariadb-Client zu kommunizieren.

sudo apt install nginx php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl

sudo apt install mariadb-client

Wir können die Verbindung zum Datenbankserver testen, wenn wir diesen Befehl von unserem Webserver aus ausführen (im Wesentlichen durch Remote-Anmeldung bei der Datenbank):

sudo mysql -u remote-admin -h 192.168.56.252 -p

2. Installieren Sie WordPress, konfigurieren Sie es und konfigurieren Sie Nginx. Hier konfigurieren wir jetzt nur den Teil von WordPress, wo wir die Adresse unseres entfernten Datenbankservers hinzufügen müssen. Wenn Sie detaillierte Schritte zur Installation von WordPress und zur Konfiguration von Nginx benötigen, finden Sie die Anweisungen in diesem Beitrag.

cd /var/www/html/wordpress/

sudo mv wp-config-sample.php wp-config.php

sudo nano wp-config.php

Ersetzen Sie in der Datenbankzeile localhost durch die IP-Adresse Ihres Datenbankservers. Siehe folgendes Bild als Beispiel:

3. Erstellen Sie die Nginx-conf-Datei und entfernen Sie die Standarddatei:

sudo nano /etc/nginx/sites-available/wordpress.conf

sudo ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/

Die Nginx-Konfig, die Sie verwenden können, finden Sie in demselben Beitrag, den wir zuvor erwähnt haben.

sudo rm /etc/nginx/sites-available/default

sudo rm /etc/nignx/sites-enabled/default

Nach dieser Konfiguration sollten Sie jetzt in der Lage sein, WordPress auszuführen, auf die Remote-Datenbank zuzugreifen und die WordPress-Installation abzuschließen.

Und jetzt sollten Sie eine laufende WordPress-Site mit separatem Web- und Datenbankserver haben. Sie können hier aufhören, wenn Sie mit der Einrichtung zufrieden sind. Dies waren die notwendigen Schritte, um WordPress mit einer Remote-Datenbank zu installieren, und zu diesem Zeitpunkt sollte alles betriebsbereit sein. Andernfalls fahren Sie im nächsten und letzten Kapitel fort, wie Sie die Datenbankverbindung und den Datenverkehr zwischen dem Web- und dem Datenbankserver sichern und verschlüsseln und die Einrichtung sicherer machen können.

Sichern und verschlüsseln Sie die Datenbankverbindung mit SSL (optional, aber empfohlen)

Es ist auch eine gute Sicherheitspraxis und zusätzliche Sicherheitsebene, um den Datenverkehr zwischen dem Web und dem Datenbankserver zu sichern und zu verschlüsseln. Der Grund dafür ist, dass, wenn nicht sicher und verschlüsselt, und wenn ein Angreifer irgendwie in Ihr privates Subnetz (das private LAN-Netzwerk, in dem sich die Server befinden) oder der Webserver einbricht, der Angreifer den Datenverkehr abfangen und ausspionieren kann (überwachen und Daten abrufen), was dazu führen kann, dass Ihre Website und die Server verletzt und gehackt werden.

Datenbankserverzertifikat

1. Erstellen Sie auf beiden Servern (Web und Datenbank) ein temporäres Verzeichnis zum Speichern der Zertifikate (Beispiel ssl oder certs) in Ihrem Home-Verzeichnis als Beispiel oder an einem einfachen Ort, an dem Sie sie speichern können – als Beispiel machen wir hier das certs-Verzeichnis in unserem Home-Verzeichnis:

cd

mkdir certs

Wir beginnen zuerst mit dem Datenbankserver, wechseln Sie also in das neue certs-Verzeichnis, das wir gerade erstellt haben:

cd certs

2. Auf dem Datenbankserver generieren wir den CA-Schlüssel, das Zertifikat und den privaten Schlüssel. Befolgen Sie die Anweisungen und antworten Sie entsprechend, wenn Sie dazu aufgefordert werden. Sie können die folgenden Bilder als Referenz verwenden. Eine Sache, auf die Sie achten sollten, ist die Eingabeaufforderung für den allgemeinen Namen (die sehr wichtig ist). Es fragt nach dem Namen des Datenbankservers. Hier sollten Sie die IP-Adresse des Servers (wie wir haben) oder den Domänennamen des Servers hinzufügen, wenn Sie einen Hostnamen haben. Die Informationen müssen übereinstimmen, da wir die entsprechenden Serverzertifikate und Clientschlüssel erstellen.:

sudo openssl genrsa 4096 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 1825 -key ca-key.pem -out cacert.pem

Im zweiten Befehl weist das Attribut -days 1825 darauf hin, dass das erstellte Zertifikat 5 Jahre (1825 Tage) gültig sein wird. Sie können die Tage nach Belieben oder Bedarf einstellen.

3. Als Nächstes erstellen Sie den privaten RSA-Schlüssel und signieren das Zertifikat:

sudo openssl rsa -in server-key.pem -out server-key.pem

sudo openssl req -newkey rsa:4096 -days 1825 -nodes -keyout server-key.pem -out server-req.pem
sudo openssl x509 -req -in server-req.pem -days 1825 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

Jetzt können wir die Zertifikate an einen dauerhaften Ort verschieben:

sudo mkdir /etc/mysql/ssl

sudo mv *.* /etc/mysql/ssl

cd /etc/mysql/ssl

Webserver-Zertifikat

4. Generieren Sie das Client-Zertifikat. Die Eingabeaufforderungen sind die gleichen wie für den Datenbankserver, aber geben Sie bei der Frage Common Name die Details des Webservers ein, auf dem Wodpress installiert ist (z. B. die IP-Adresse des Webservers). Schreiben Sie die RSA und signieren Sie das Zertifikat:

sudo openssl req -newkey rsa:2048 -days 1825 -nodes -keyout client-key.pem -out client-req.pem

sudo openssl rsa -in client-key.pem -out client-key.pem

sudo openssl x509 -req -in client-req.pem -days 1825 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

SSL-Konfiguration für beide Server

Datenbankserver-Setup

1. Der nächste Schritt besteht darin, unsere Server für die Verwendung der von uns erstellten Zertifikate zu konfigurieren und die SSL-Verbindung zwischen dem Web- und dem Datenbankserver zu aktivieren. Bearbeiten Sie zuerst die Konfiguration auf der MariaDB-Serverkonfiguration:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Und suchen Sie die folgenden Zeilen, kommentieren Sie sie aus, fügen Sie die Zeilen neu hinzu, dass sie mit den Verzeichnissen und Dateien unserer Zertifikate übereinstimmen, die wir erstellt haben:

ssl-ca=/etc/mysql/ssl/cacert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

Datei speichern und beenden.

2. Melden Sie sich jetzt bei MariDB als root an und führen Sie die folgenden Abfragen aus, um auf dem Server zu aktivieren, dass Verbindungen vom Webserver nur mit SSL zugelassen werden:

sudo mysql -u root -p
GRANT ALL PRIVILEGES ON wptest.* TO 'wpadmin'@'192.168.56.251' REQUIRE SSL;
FLUSH PRIVILEGES;
exit

Starten Sie den Datenbankserver neu:

sudo systemctl restart mariadb.service
Webserver-Setup

3. Kopieren Sie noch im Verzeichnis /etc/mysql/ssl (oder verschieben Sie hierher) mit dem scp-Tool die Client-Zertifikate auf den Webserver (webuser und die IP-Adresse ersetzen Sie durch den tatsächlichen Benutzernamen und die IP-Adresse Ihres Webserver):

scp cacert.pem client-cert.pem client-key.pem [email protected]:~/certs

Wechseln/melden Sie sich jetzt zum Webserver an und verschieben Sie die Zertifikate ebenfalls an einen dauerhaften Ort (dasselbe wie für den Datenbankserver):

sudo mkdir /etc/mysql/ssl

cd certs

sudo mv /certs/*.* /etc/mysql/ssl

Bearbeiten Sie die Konfigurationsdatei für den MariaDB-Client, den wir im ersten Schritt installiert haben. Es hat denselben Speicherort wie der Server:

sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

Und finden Sie die gleiche SSL-Zeile (sollte im Abschnitt [mysql] sein) wie für den Datenbankserver und lassen Sie sie mit dem Speicherort und den Dateinamen der Zertifikate übereinstimmen, die wir im Verzeichnis /etc/mysql/ssl hinzugefügt haben:

[mysql]
ssl-ca=/etc/mysql/ssl/cacert.pem
ssl-cert=/etc/mysql/ssl/client-cert.pem
ssl-key=/etc/mysql/ssl/client-key.pem

Datei speichern, beenden.

Sie können testen, ob die Verbindung mit Remote-Login funktioniert:

mysql -u wpadmin -h 192.168.56.252 -p

4. Die letzte zu bearbeitende Datei ist wieder die wp-config.php. Wir brauchen dort auch die SSL-Konfigurationszeile:

sudo nano /var/www/html/wordpress/wp-config.php

und fügen Sie die Zeile vor der Zeile mit dem Datenbanknamen hinzu:

define( ‘MYSQL_CLIENT_FLAGS’, MYSQLI_CLIENT_SSL );

Siehe Bild:

Starten Sie den Nginx-Webserver neu und schließen Sie die WordPress-Installation über den Webbrowser ab. Es sollte betriebsbereit sein.

Zusammenfassung

Um diesen Artikel zusammenzufassen, haben wir die Schritte zur Installation von WordPress mit einer Remote-Datenbank behandelt. Wir haben auch den Prozess behandelt, wie man die Verbindung zwischen den beiden Servern sichert (wenn Sie noch keine Erfahrung mit selbstsignierten Zertifikaten haben und damit arbeiten, können Sie den Schritt überspringen, wie oben gesagt, es ist nicht notwendig, nur eine Empfehlung) . Der grundlegende Prozess selbst zur Installation von WordPress mit Remote-Datenbank ist nicht so schwierig und bietet einige Vorteile, darunter die Leistung und die Wartung des Webservers, die jetzt viel einfacher sind und die Ausfallzeiten reduzieren, wenn Wartungsarbeiten erforderlich sind.


Debian
  1. So installieren Sie einen LAMP-Server unter Debian 9 Stretch Linux

  2. Installieren Sie einen zentralen Protokollserver mit Rsyslog in Debian 9

  3. So installieren Sie den HTTP-Git-Server mit Nginx unter Debian 11

  4. Installieren Sie WordPress auf Fedora 22 / 21 mit AMP

  5. Installieren Sie WordPress auf openSUSE 13.2 mit LAMP

So installieren Sie den vsftpd-FTP-Server mit TLS unter Debian 10

Installieren Sie phpMyAdmin mit Apache (LAMP) auf Debian 10 Buster

So installieren Sie WordPress unter Debian 8

So installieren Sie Nginx mit PHP-FPM unter Debian 11

So installieren Sie WordPress auf einem Debian 8.2 Cloud-Server

So installieren Sie WordPress mit LAMP unter Debian 10