samedi , 15 août 2020
Home » Serveur » Apache » Installer un serveur web dans le cloud et plusieurs sites WordPress (Bitnami)

Installer un serveur web dans le cloud et plusieurs sites WordPress (Bitnami)

Voici la procédure complète pour installer un serveur web sur lequel vous pourrez héberger plusieurs sites WordPress.

La procédure ci-dessous a été réalisée sur un serveur OVH sur laquelle j’ai installé la distribution Ubuntu 20.04.

Toutes les opérations suivantes se réalisent via une console SSH (vous pouvez utiliser Putty).

Installation du serveur LAMP

  1. Rendez-vous à l’adresse https://bitnami.com/stack/lamp/installer pour récupérer le fichier .run permettant d’installer le serveur LAMP sur votre serveur Ubuntu.
    • Cliquez droit sur le bouton « Download for Linux 64-bits » et choisissez « Copier l’adresse du lien » depuis votre naviguateur.
  2. Connectez-vous à votre serveur en SSH (répertoire /home/ubuntu)
  3. Téléchargez le fichier sur votre serveur : wget https://bitnami.com/redirect/to/1094271/bitnami-lampstack-7.4.8-0-linux-x64-installer.run
  4. Modifiez les droits du fichier pour le rendre exécutable : chmod 755 bitnami-lampstack-7.4.8-0-linux-x64-installer.run
  5. Exécutez le fichier et suivez la procédure d’installation : sudo ./bitnami-lampstack-7.4.8-0-linux-x64-installer.run

Je vous conseille d’installer le serveur LAMP dans le répertoire /opt/bitnami (nom générique). De cette manière, les futures mises à jour du serveur LAMP seront facilitées car il suffira de renommer bitnami en bitnami_old et de réinstaller le nouveau serveur LAMP dans bitnami. Après une copie des fichiers depuis l’ancienne version (/opt/bitnami_old) vers la nouvelle version (/opt/bitnami), tout devrait continuer à fonctionner correctement puisqu’avec cette méthode, les chemins de fichiers seront les mêmes et cela évitera des problèmes de configuration ou de lien absolu dans la base de données.

A la fin de cette première étape, vous devriez avoir un serveur LAMP fonctionnel (Apache, Mysql, PHP).

Nous allons maintenant voir comment installer WordPress sur ce serveur LAMP mais avant cela, on va générer les certificats SSL.

Génération des certificats Let’s Encrypt (HTTPS)

Avant d’installer les sites WordPress, il est préférable de générer les certificats des sites qui seront installés sur le serveur LAMP.

Si vous ne faites pas cette opération à cette étape, il est toujours possible de le faire plus tard mais cela demandera une petite manipulation pour contourner une erreur système.

  • Stoppez le serveur LAMP avec la commande : sudo /opt/bitnami/ctlscript.sh stop
  • Exécutez le commande suivante pour générer un certificat Let’s Encrypt sudo /opt/bitnami/letsencrypt/lego --tls --e mail="info@site1.com" --domains="site1.example.com" --path="/opt/bitnami/letsencrypt" run
  • Si tout se passe correctement, vous devriez avoir dans le répertoire certificates, 4 nouveaux fichiers (sudo ls -l certificates/) :
    • site1.example.com.crt
    • site1.example.com.issuer.crt
    • site1.example.com.json
    • site1.example.com.key
  • Redémarrez le serveur LAMP pour effectuer l’installation de votre site WordPress

Si vous comptez installer plusieurs site sur le serveur LAMP, vous pouvez générer en avance les certificats Let’s Encrypt.

Attention, cette opération n’est possible que si les DNS ont déjà été modifiés et que le domaine pointe déjà vers l’ip du serveur ! Si ce n’est pas le cas, passez cette étape et continuez à suivre la procédure.

Installation de WordPress (site1)

Depuis quelques mois, Bitnami ne fournit plus de support pour l’installation de WordPress directement sur un serveur LAMP. Cependant, ils continuent de fournir un support pour XAMPP. D’après les ingénieurs Bitnami, un module WordPress développé pour XAMPP devrait fonctionner sans problème pour LAMP (ce que j’ai pu vérifier avec succès).

  1. Rendez-vous à l’adresse https://bitnami.com/stack/xampp pour télécharger le dernière version du module WordPress pour Linux.
  2. Connectez-vous à votre serveur SSH (répertoire home/ubuntu).
  3. Téléchargez le fichier sur le serveur : wget https://bitnami.com/redirect/to/1089590/bitnami-wordpress-5.4.2-1-module-linux-x64-installer.run
  4. Modifiez les permissions du fichier pour le rendre exécutable : chmod 755 bitnami-wordpress-5.4.2-1-module-linux-x64-installer.run
  5. Exécutez l’installation du module WordPress : sudo ./bitnami-wordpress-5.4.2-1-module-linux-x64-installer.run --wordpress_instance_name site1
    • Le paramètre --wordpress_instance_name site1 permet de définir le nom de votre site web (nom du répertoire dans apps). Ceci est obligatoire lorsque vous souhaitez installer plusieurs wordpress sur unique serveur LAMP. Sans l’utilisation de ce paramètre, wordpress sera installé dans le répertoire wordpress/
    • Le répertoire à indiquer lors de l’installation est (dans mon cas) est /opt/bitnami/

A ce stade, votre site devrait être accessible depuis l’url : http://<<IP adresse>>/site1.

Définir le nom de domaine du site1

Pour définir le nom de domaine associé à cette installation de wordpress, il suffit de :

  • Modifiez les DNS de votre domaine pour le faire pointer (A) vers l’adresse IP de votre serveur (attention, la modification peut prendre jusqu’à 2 jours pour être validée).
  • Connectez-vous en SSH à votre serveur
  • Exécutez la commande suivante : sudo /opt/bitnami/apps/site1/bnconfig --appdomain site1.example.com

Installation des autres sites wordpress (site2, site3, site4, …)

Pour installer les autres sites web sur votre serveur lamp, il suffit d’exécuter les commandes suivantes :

Connectez-vous en SSH sur votre serveur (répertoire /home/ubuntu).

sudo ./bitnami-wordpress-5.4.2-1-module-linux-x64-installer.run --wordpress_instance_name site2
sudo ./bitnami-wordpress-5.4.2-1-module-linux-x64-installer.run --wordpress_instance_name site3
sudo ./bitnami-wordpress-5.4.2-1-module-linux-x64-installer.run --wordpress_instance_name site4
...
sudo /opt/bitnami/apps/pictoflashdev/bnconfig --appdomain site2.example.com
sudo /opt/bitnami/apps/pictoflashdev/bnconfig --appdomain site3.example.com
sudo /opt/bitnami/apps/pictoflashdev/bnconfig --appdomain site4.example.com
...

Redémarrez votre serveur sudo /opt/bitnami/ctlscript.sh restart

Générer un certificat Let’s Encrypt

SSLCertificateFile: file does not exist or is empty

AH00526: Syntax error on line 14 of /opt/bitnami/apps/site1/conf/httpd-vhosts.conf:
SSLCertificateFile: file '/opt/bitnami/apps/site1/conf/certs/server.crt' does not exist or is empty
apache config test fails, aborting
/opt/bitnami/mysql/scripts/ctl.sh : mysql stopped
/opt/bitnami/mysql/scripts/ctl.sh : mysql started at port 3306
AH00526: Syntax error on line 14 of /opt/bitnami/apps/site1/conf/httpd-vhosts.conf:
SSLCertificateFile: file '/opt/bitnami/apps/site1/conf/certs/server.crt' does not exist or is empty
apache config test fails, aborting

Si vous voyez cette erreur apparaitre lorsque vous démarrez le serveur LAMP, faites les petites opérations suivantes avant de tenter de générer le certificat SSL (permet de stopper le serveur LAMP sans erreur) :

  • Commentez (# en début de ligne) les 3 lignes « SSLEngine on », « SSLCertificateFile » et « SSLCertificateKeyFile » sudo nano /opt/bitnami/apps/site1/conf/httpd-vhosts.conf
  • CTRL+O pour sauver et CTRL+X pour quitter le programme Nano.

Générer un certificat SSL valide (Let’s Encrypt)

  • Arrêtez le serveur LAMP avec la commande sudo /opt/bitnami/ctlscript.sh stop
  • Exécutez le commande suivante pour générer un certificat Let’s Encrypt sudo /opt/bitnami/letsencrypt/lego --tls --e mail="info@site1.com" --domains="site1.example.com" --path="/opt/bitnami/letsencrypt" run
  • Si tout se passe correctement, vous devriez avoir dans le répertoire certificates, 4 nouveaux fichiers (sudo ls -l certificates/):
    • site1.example.com.crt
    • site1.example.com.issuer.crt
    • site1.example.com.json
    • site1.example.com.key

Pour valider la commande ci-dessus, j’ai du supprimer le champs AAAA des enregistrements DNS (il faut garder uniquement l’enregistrement A)

Configurer le web serveur pour utiliser le certificat Let’s Encrypt

  • sudo ln -sf /opt/bitnami/letsencrypt/certificates/site1.example.com.key /opt/bitnami/apps/site1/conf/certs/site1.example.com.key
  • sudo ln -sf /opt/bitnami/letsencrypt/certificates/site1.example.com.crt /opt/bitnami/apps/site1/conf/certs/site1.example.com.crt
  • Décommentez les 3 lignes et adaptez les chemins si besoin dans sudo nano /opt/bitnami/apps/site1/conf/httpd-vhosts.conf
  • Redémarrez le serveur avec la commande sudo /opt/bitnami/ctlscript.sh start

Renouveler automatiquement un certificat Let’s Encrypt

Les certificats Let’s Encrypt sont valables uniquement 90 jours. Il est donc important de s’assurer qu’un renouvellement automatique est mis en place !

  • Créer le script
sudo nano /opt/bitnami/letsencrypt/scripts/renew-certificate.sh
  • Insérer le contenu suivant dans le fichier :
#!/bin/bash

sudo /opt/bitnami/ctlscript.sh stop apache
sudo /opt/bitnami/letsencrypt/lego --tls --email="info@site1.com" --domains="site1.example.com" --path="/opt/bitnami/letsencrypt" renew --days 90
sudo /opt/bitnami/ctlscript.sh start apache
  • Modifier les permissions du fichier pour qu’il soit exécutable :
sudo chmod +x /opt/bitnami/letsencrypt/scripts/renew-certificate.sh
  • Exécutez la commande suivante :
sudo crontab -e
  • Ajouter la ligne suivante pour activer le cron sur le script
0 0 1 * * /opt/bitnami/letsencrypt/scripts/renew-certificate.sh 2> /dev/null

Quelques liens utiles

Check Also

SSL : WordPress Multisites + Domain Mapping

Si comme moi vous possédez un système WordPress Multisites, il est peut-être temps de penser …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *