GNU/Linux >> Tutoriels Linux >  >> Debian

Installer WordPress avec une base de données distante sur Debian

Aperçu

Dans le post suivant, nous couvrirons le scénario où nous allons installer WordPress avec une base de données distante sur Debian. En d'autres termes, nous aurons un environnement où nous aurons deux serveurs distincts, l'un qui n'aura que l'installation de WordPress (ce qui signifie qu'il hébergera uniquement le site Web) et l'autre n'aura que la base de données (agir uniquement comme un serveur de base de données) .

Il existe de nombreuses raisons bénéfiques pour lesquelles ce type d'environnement est configuré - l'une étant la facilité de maintenance du site Web et de la maintenance de la base de données, l'augmentation des performances (c'est-à-dire le wordpress puisqu'il ne dépend pas d'un serveur, cela prendra beaucoup moins de ressources).

Mais l'inconvénient est que puisque nous avons maintenant deux serveurs, la maintenance du serveur augmentera.

Cette configuration sera configurée sur deux serveurs Debian (tous deux sur le même réseau/même LAN).

La pile sera LEMP - serveur Web Nginx, serveur PHP et MariaDB.

Configuration du serveur de base de données

Nous nous concentrerons d'abord sur le serveur de base de données :

1. Installez le serveur MariaDB

sudo apt install mariadb-server

Exécutez mysql_secure_installation

sudo mysql_secure_installation

2. Modifiez le fichier de configuration de la base de données et modifiez le paramètre bind-address et entrez l'adresse privée de votre serveur de base de données :

Le fichier à modifier :

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

Ligne à modifier – bind-address =127.0.0.1

adresse de liaison =192.168.56.252

Enregistrez et quittez, redémarrez et activez le service mariadb.

sudo systemctl restart mariadb.service

sudo systemctl enabled mariadb.service

Pour connaître l'adresse IP de votre serveur de base de données, exécutez la commande – ip a.

3. Créez la base de données, l'utilisateur et définissez les privilèges (les informations dans les commandes sont utilisées à titre d'exemple)

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

Sur la base de données, il est nécessaire de créer un utilisateur distant, c'est-à-dire le compte utilisateur que notre installation WordPress utilisera pour se connecter sur la base de données. Il est nécessaire que vous connaissiez l'adresse IP du serveur WordPress et que vous la spécifiiez/liiez-la au compte de l'utilisateur distant.

Configuration du pare-feu

Si vous avez un pare-feu en cours d'exécution sur votre serveur de base de données, il est nécessaire d'ouvrir le port 3306 afin d'accepter la connexion du serveur Web et d'accéder à la base de données. Juste pour être sûr, il est bon de configurer les règles pour n'accepter que les connexions provenant uniquement de notre serveur Web.

Configuration du pare-feu UFW

sudo ufw allow from 192.168.56.251 to any port 3306

Configuration IPTABLES

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

Configuration du serveur Web

1. Installez le serveur Web Nginx avec les autres bibliothèques PHP nécessaires pour exécuter WordPress et pour communiquer avec le serveur de base de données et le client mysql/mariadb.

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

Nous pouvons tester la connexion au serveur de base de données si nous exécutons cette commande à partir de notre serveur Web (essentiellement, en se connectant à distance à la base de données) :

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

2. Installez WordPress, configurez-le et configurez Nginx. Ici, nous allons maintenant configurer uniquement la partie de WordPress où nous devons ajouter l'adresse de notre serveur de base de données distant. Si vous avez besoin des étapes détaillées pour installer WordPress et configurer Nginx, vous pouvez trouver les instructions sur ce post.

cd /var/www/html/wordpress/

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

sudo nano wp-config.php

À la ligne de la base de données, remplacez localhost par l'adresse IP de votre serveur de base de données. Reportez-vous à l'image ci-dessous à titre d'exemple :

3. Créez le fichier de configuration Nginx et supprimez celui par défaut :

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

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

La conf Nginx que vous pouvez utiliser, vous pouvez la localiser sur le même post que nous avons mentionné plus tôt.

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

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

Après cette configuration, vous devriez maintenant pouvoir exécuter WordPress, accéder à sa base de données distante et terminer l'installation de WordPress.

Et maintenant, vous devriez avoir un site WordPress en cours d'exécution avec un serveur Web et un serveur de base de données séparés. Vous pouvez vous arrêter ici si vous êtes satisfait de la configuration. Voici les étapes nécessaires pour installer WordPress avec une base de données distante, et à ce stade, tout devrait être opérationnel. Sinon, continuez au chapitre suivant et final sur la manière de sécuriser et de chiffrer la connexion à la base de données et le trafic entre le serveur Web et la base de données et de rendre la configuration plus sécurisée.

Sécuriser et chiffrer la connexion à la base de données avec un SSL (facultatif mais recommandé)

C'est également une bonne pratique de sécurité et une couche de sécurité supplémentaire pour sécuriser et chiffrer le trafic entre le serveur Web et le serveur de base de données. La raison en est que s'il n'est pas sécurisé et crypté, et SI d'une manière ou d'une autre un attaquant s'introduit dans votre sous-réseau privé (le réseau LAN privé où se trouvent les serveurs) ou le serveur Web, l'attaquant peut alors intercepter et renifler le trafic (le surveiller et obtenir des données) qui peut entraîner une violation et un piratage de votre site Web et des serveurs.

Certificat de serveur de base de données

1. Sur les deux serveurs (web et base de données), créez un répertoire temporaire pour stocker les certificats (exemple ssl ou certs) dans votre répertoire personnel pour un exemple ou dans un endroit facile pour vous de les stocker - à titre d'exemple, ici nous allons faire le répertoire certs sur notre répertoire personnel :

cd

mkdir certs

Nous allons d'abord commencer par le serveur de base de données, alors passez au nouveau répertoire certs que nous venons de créer :

cd certs

2. Sur le serveur de base de données, nous allons générer la clé CA, le certificat et la clé privée. Suivez les invites et répondez en conséquence lorsque vous y êtes invité. Vous pouvez utiliser les images ci-dessous comme référence. Une chose à surveiller est l'invite Nom commun (qui est assez importante). Il demande le nom du serveur de base de données. Ici, vous devez ajouter l'adresse IP du serveur (comme nous l'avons) ou le nom de domaine du serveur si vous avez un nom d'hôte. Les informations doivent correspondre puisque nous allons créer les certificats de serveur et les clés client correspondants :

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

Dans la deuxième commande, l'attribut -days 1825 indique que le certificat créé sera valide pendant 5 ans (1825 jours). Vous pouvez définir les jours comme vous le souhaitez ou en avez besoin.

3. Ensuite, créez la clé privée RSA et signez le certificat :

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

Nous pouvons maintenant déplacer les certificats vers un emplacement permanent :

sudo mkdir /etc/mysql/ssl

sudo mv *.* /etc/mysql/ssl

cd /etc/mysql/ssl

Certificat de serveur Web

4. Générez le certificat client. Les invites seront les mêmes que pour le serveur de base de données, mais sur la question du nom commun, entrez les détails du serveur Web sur lequel Wodpress est installé (comme l'adresse IP du serveur Web). Rédigez le RSA et signez le certificat :

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

Configuration SSL pour les deux serveurs

Configuration du serveur de base de données

1. La prochaine étape consiste à configurer nos serveurs pour utiliser les certificats que nous avons créés et activer la connexion SSL entre le serveur Web et la base de données. Modifiez d'abord la configuration sur la configuration du serveur MariaDB :

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

Et trouvez les lignes suivantes, décommentez-les et réécrivez les lignes correspondant aux répertoires et fichiers de nos certificats que nous avons créés :

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

Enregistrez le fichier et quittez.

2. Connectez-vous maintenant sur MariDB en tant que root et exécutez les requêtes suivantes pour activer sur le serveur qu'il autorisera la connexion à partir du serveur Web uniquement avec SSL :

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

Redémarrez le serveur de base de données :

sudo systemctl restart mariadb.service
Configuration du serveur Web

3. Toujours dans le répertoire /etc/mysql/ssl (ou déplacez-vous ici), avec l'outil scp, copiez les certificats client sur le serveur Web (l'utilisateur Web et l'adresse IP sont remplacés par le nom d'utilisateur et l'adresse IP réels de votre serveur Web):

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

Maintenant, basculez/connectez-vous au serveur Web et déplacez également les certificats de manière permanente (comme pour le serveur de base de données) :

sudo mkdir /etc/mysql/ssl

cd certs

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

Modifiez le fichier de configuration du client MariaDB que nous avons installé lors de la première étape. Il a le même emplacement que le serveur :

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

Et trouvez la même ligne SSL (devrait être sous la section [mysql]) que nous l'avons fait pour le serveur de base de données et faites-les correspondre à l'emplacement et aux noms de fichiers des certificats que nous avons ajoutés dans le répertoire /etc/mysql/ssl :

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

Enregistrez le fichier, quittez.

Vous pouvez tester si la connexion fonctionne avec la connexion à distance :

mysql -u wpadmin -h 192.168.56.252 -p

4. Le dernier fichier à modifier est à nouveau le wp-config.php. Nous avons également besoin de la ligne de configuration SSL :

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

et ajoutez la ligne avant la ligne avec le nom de la base :

définir( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );

Reportez-vous à l'image :

Redémarrez le serveur Web Nginx et terminez l'installation de WordPress à partir du navigateur Web. Il devrait être opérationnel.

Résumé

Pour résumer cet article, nous avons couvert les étapes d'installation de WordPress avec une base de données distante. Nous avons également couvert le processus de sécurisation de la connexion entre les deux serveurs (si vous n'avez pas expérimenté auparavant les certificats auto-signés et comment travailler avec, vous pouvez ignorer l'étape, comme indiqué ci-dessus, ce n'est pas nécessaire, seulement une recommandation) . Le processus de base lui-même sur la façon d'installer WordPress avec une base de données distante n'est pas si difficile et offre quelques avantages, l'un étant la performance et la maintenance du serveur Web peut maintenant être plutôt plus facile et réduire les temps d'arrêt lorsque la maintenance est nécessaire.


Debian
  1. Comment installer un serveur LAMP sur Debian 9 Stretch Linux

  2. Installer un serveur de journal centralisé avec Rsyslog dans Debian 9

  3. Comment installer le serveur HTTP Git avec Nginx sur Debian 11

  4. Installer WordPress sur Fedora 22/21 avec AMP

  5. Installer phpMyAdmin sur Debian 11 avec Nginx

Comment installer le serveur FTP vsftpd avec TLS sur Debian 10

Installer phpMyAdmin avec Apache (LAMP) sur Debian 10 Buster

Comment installer WordPress sur Debian 8

Comment installer Nginx avec PHP-FPM sur Debian 11

Comment installer WordPress sur un serveur cloud Debian 8.2

Comment installer WordPress avec LAMP sur Debian 10