vendredi , 5 avril 2024

Upgrader un stack Lamp Bitnami

Attention : Dans ce tutoriel, nous allons réaliser un upgrade vers un stack configuré avec PHP 8.0. Cette version de PHP est uniquement supportée par WordPress 5.6. Mais de nombreux plugins ne sont toujours pas adaptés pour fonctionner avec PHP8. Par conséquent, pour un site de production, je vous suggère d’utiliser un stack configuré pour faire fonctionner PHP 7.3 ou PHP 7.4.

Si vous avez installé votre serveur LAMP depuis un certain temps, il est peut-être nécessaire de faire un upgrade. Cela peut être pour des raisons de sécurité, de performance ou de fonctionnalités.

Il n’y a malheureusement pas de système automatique pour faire un upgrade d’un stack LAMP Bitnami. L’upgrade du stack consiste donc en la désactivation du stack actuel, de l’installation du dernier stack LAMP disponible et du transfert des données vers ce nouveau stack.

Il y a cependant un gros avantage concernant l’upgrade. Comme un stack bitnami est contenu dans un unique réperoire, il est très simple de faire un backup complet du stack actuel. Si vous n’arrivez pas ou n’avez pas le temps de terminer l’upgrade, il suffira de réactiver votre stack actuel (puisque toutes les informations du stack sont contenues dans le répertoire /opt/bitnami/).

Sauvegarder vos bases de données MYSQL

Avant de commencer l’upgrade de votre stack LAMP Bitnami, il est donc important de faire un backup de vos bases de données actuelles. En effet, pour faire l’upgrade, on désactive le stack actuel. Il ne sera donc plus possible (directement) de récupérer les données de vos bases de données.

Pour info : par simplicité, seul un stack LAMP sera actif simultanément sur le serveur. Il serait possible de faire fonctionner plusieurs stacks LAMP sur un seul serveur mais cela nécessiterait de jouer avec les ports utilisés pour apache, mysql, …

Identifiez toutes les bases de données à sauvegarder.

Pour cela, le plus simple est de vous connecter sur phpMyAdmin de votre serveur (http://localhost:8891/phpmyadmin/).

Pour ce tutoriel, on va uniquement sauvegarder la base de données « bitnami_wordpress« . Si vous avez plusieurs base de données à sauvegarder, effectuez les opérations ci-dessous pour chacune de vos bases de données.

Exporter les bases de données MYSQL (Backup)

Ouvrez un terminal SSH (personnellement, j’utilise l’application Putty) et entrez les commandes ci-dessous. Ces commandes permettent de se positionner dans le répertoire « home » et d’exporter la base de donnée « bitnami_wordpress » vers le fichier ~/backup_bitnami_wordpress.sql.

cd ~
/opt/bitnami/mysql/bin/mysqldump -u bn_wordpress -p bitnami_wordpress > backup_bitnami_wordpress.sql

Après avoir indiqué votre mot de passe, le backup de la base de données sera exécuté. En fonction de la taille de votre base de données, cette opération peut prendre plusieurs minutes.

Une méthode existe pour faire un backup complet du serveur MYSQL. Cette commande pourrait également être utilisée dans un processus de backup automatisé. Pour faire un export complet, exécutez la commande suivante (vous devrez indiquer le mot de passe root du serveur MYSQL) :

/opt/bitnami/mysql/bin/mysqldump -A -u root -p > backup_server.sql

Stoppez le stack LAMP existant

Exécutez la commande suivante pour stopper complètement le serveur LAMP (Apache, Mysql et les autres services liés) :

sudo /opt/bitnami/ctlscript.sh stop

Si tout se passe bien, vous devriez voir quelque chose comme cela :

Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd stopped
/opt/bitnami/php/scripts/ctl.sh : php-fpm stopped
/opt/bitnami/mysql/scripts/ctl.sh : mysql stopped

A partir de ce moment, vos applications ne sont plus accessibles.

Téléchargez la dernière version du LAMP stack de Bitnami

Rendez-vous sur le site https://bitnami.com/stack/lamp/installer pour récupérer l’URL de la dernière version du script d’installation du stack LAMP.

Cliquez droit sur le bouton « Download for Linux 64-bit » et choisissez « Copier l’adresse du lien ».

Dans un shell SSH, exécutez la commande suivante pour télécharger le fichier.

wget https://bitnami.com/redirect/to/1242815/bitnami-lampstack-8.0.0-0-linux-x64-installer.run

Modifiez les permissions associées au fichier pour le rendre exécutable.

chmod 755 bitnami-lampstack-8.0.0-0-linux-x64-installer.run

Installation du nouveau stack LAMP Bitnami

Avant d’exécuter la procédure d’installation, nous allons renommer le répertoire /opt/bitnami en /opt/bitnami_old. De cette manière, on pourra installer le nouveau serveur LAMP dans /opt/bitnami.

Même si cette pré-procédure n’est pas obligatoire, c’est très pratique d’avoir le stack LAMP actif dans /opt/bitnami. En effet, tous les tutos sur internet se base sur le fait que votre stack se trouve dans /opt/bitnami. Il sera par conséquent plus simple/rapide de faire des copier-coller des commandes à exécuter dans ssh (car il ne sera pas nécessaire de les modifier avant de les exécuter).

Dans certains cas, il est vraiment important (pour la simplicité) de ne pas modifier le chemin complet de votre stack (/opt/bitnami) : c’est le cas par exemple pour vos tâches CRON ! Si le chemin change, vous devrez également modifier votre fichier de configuration CronTab.

Exécutez la commande suivante pour renommer le répertoire bitnami en bitnami_old (le nom ici n’a pas beaucoup d’importance).

sudo mv /opt/bitnami/ /opt/bitnami_old/

On est maintenant prêt pour installer la dernière version du stack Bitnami. Soyez patient ! N’interrompez pas le processus même si celui-ci semble long ou bloqué. Cela peut prendre plusieurs minutes.

sudo ./bitnami-lampstack-8.0.0-0-linux-x64-installer.run

Je vous conseille donc d’indiquer « /opt/bitnami » lorsqu’on vous demande dans quel répertoire installer le serveur LAMP.

Pour le mot de passe du serveur Mysql (Bitnami LAMP Stack database root user creation), je vous conseille d’utiliser le site https://privacycanada.net/strong-password-generator/

Génération d’un mot de passe fort en utilisant un générateur de mot de passe.

Transfert des données depuis l’ancien stack vers le nouveau

Votre nouveau serveur LAMP est maintenant installé. Il faut encore s’occuper de migrer vos applications depuis votre ancien serveur (/opt/bitnami_old) vers le nouveau (/opt/bitnami).

Vous avez 2 options pour récupérer vos applications.

  • Méthode 1 (à préférer) : Vous copiez-collez vos données depuis l’ancien stack LAMP (/opt/bitnami_old/app/wordpress) vers (/opt/bitnami/app/wordpress) et vous importez votre backup de base de données dans le nouveau serveur MYSQL (il faudra également se connecter sur phpMyAdmin pour recréer les utilisateurs et leurs permissions MYSQL).
  • Méthode 2 (beaucoup plus compliquée) : Vous réinstallez les applications et vous transférez uniquement les plugins, themes, … Ensuite, il faudra également importez le backup de vos bases de données (pas besoin dans ce cas de créer les utilisateurs via phpMyAdmin car ils seront automatiquement créées au moment de l’installation). Cette méthode est à privilégier si vous avez été victime d’un hack et souhaitez repartir avec une version « propre » de vos applications.

Importez vos bases de données MYSQL

Au début de la procédure d’upgrade, on avait backupé les bases de données se trouvant sur l’ancienne version du stack LAMP. Il faut maintenant les importer sur le nouveau serveur MYSQL.

Pour importer un fichier SQL dans une base de données MYSQL, exécutez les commandes suivantes (vous devrez indiquer le mot de passe de l’utilisateur root MYSQL défini au moment de l’installation du stack LAMP.

cd ~
sudo /opt/bitnami/mysql/bin/mysql -u root -p -D bitnami_wordpress < backup_bitnami_wordpress.sql

Si une erreur est affichée indiquant que la base de données n’existe pas encore, il faut d’abord la créer. Pour cela, vous pouvez soit vous connecter sur PhpMyAdmin et créer la base de données ou vous pouvez le faire par ligne de commande :

sudo /opt/bitnami/mysql/bin/mysql -u root -p
Enter password:
mysql> create database bitnami_wordpress;

Vous devrez également créer l’utilisateur MYSQL qui aura accès à votre base de données. Pour cela, vous pouvez le faire via PhpMyAdmin ou en ligne de commande :

mysql> CREATE USER 'bn_wordpress'@'127.0.0.1' IDENTIFIED BY 'user_password';
mysql> CREATE USER 'bn_wordpress'@'localhost' IDENTIFIED BY 'user_password';
mysql> GRANT ALL PRIVILEGES on bitnami_wordpress.* TO 'bn_wordpress'@'127.0.0.1';
mysql> GRANT ALL PRIVILEGES on bitnami_wordpress.* TO 'bn_wordpress'@'localhost';
mysql> exit

Pour être certain que ces modifications soient appliquées, redémarrez le serveur MYSQL.

sudo /opt/bitnami/ctlscript.sh restart mysql

Méthode 2 : si vous utilisez WordPress et que le préfixe de vos tables n’est pas « wp_ », n’oubliez pas de modifier le fichier wp-config.php en conséquence.

Transférez vos fichiers depuis l’ancien LAMP stack.

Exécutez les commandes pour copier les apps depuis l’ancien serveur LAMP vers le nouveau serveur LAMP.

Exécutez la commande ci-dessous pour transférer une application WordPress depuis l’ancien stack vers le nouveau stack.

sudo mkdir /opt/bitnami/apps/wordpress
sudo cp -Rp /opt/bitnami_old/apps/wordpress/* /opt/bitnami/apps/wordpress/

Si besoin, modifiez le fichier wp-config.php pour ajuster les informations de connexion à la base de données.

Pour activer votre application sur le stack nouvellement installé :

sudo nano /opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf

Et ajoutez la ligne suivante :

Include "/opt/bitnami/apps/wordpress/conf/httpd-prefix.conf"

Si vous utilisez des vhosts (dans le cas où vous avez plusieurs applications installées sur le même LAMP server, vous devez modifier le fichier de configuration des vhosts de Bitnami.

sudo nano /opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf

Et ajoutez la ligne suivante :

Include "/opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf"

Redémarrez ensuite le serveur Apache pour appliquer les modifications :

sudo /opt/bitnami/ctlscript.sh restart apache

Pour installer WordPress (uniquement pour la méthode 2)

  1. Si vous souhaitez repartir d’une toute nouvelle installation wordpress, vous pouvez suivre le tutoriel disponible à l’adresse suivante : Installer WordPress dans un stack LAMP Bitnami.

2. Lorsque WordPress est réinstallé, vous pouvez réimporter vos bases de données en exécutant la commande suivante :

sudo /opt/bitnami/mysql/bin/mysql -u root -p -D bitnami_wordpress < backup_bitnami_wordpress.sql

3. Régénérez les certificats Let’s Encrypt

4. Modifiez le fichier httpd-vhosts.conf

5. Modifiez le fichier /opt/bitnami/apps/wordpress/htdocs/wp-config.php

6. Transférez depuis /opt/bitnami_old vers /opt/bitnami les plugins, thèmes, … tous les fichiers nécessaires au bon fonctionnement de votre site.

sudo cp -Rp /opt/bitnami_old/apps/wordpress/htdocs/wp-content/* /opt/bitnami/apps/wordpress/htdocs/wp-content/

Régénérez les certificats SSL

Si les certificats SSL (Let’s Encrypt) sont gérés/générés via un script bitnami, vous devez recréer/récupérer ces certificats. En effet, les certificats sont stockés dans le répertoire du stack (/opt/bitnami/letsencrypt/certificates/). Comme on a créé un nouveau stack, les certificats ne sont plus accessibles.

Normalement, il suffit de copier-coller les certificats se trouvant dans l’ancien stack :

sudo cp -Rp /opt/bitnami_old/letsencrypt/certificates/* /opt/bitnami/letsencrypt/certificates/
sudo cp -p /opt/bitnami_old/letsencrypt/scripts/renew-certificate.sh /opt/bitnami/letsencrypt/scripts/renew-certificate.sh
sudo /opt/bitnami/ctlscript.sh restart apache

Si cela ne fonctionne pas, suivez la procédure pour générer des certificats SSL pour Bitnami.

HTTPS, HTTP/2, Redis, …

  1. Suivez le tutoriel « Comment activer HTTP/2 sur votre serveur LAMP« . HTTP/2 est un protocole beaucoup plus rapide que HTTP/1. C’est relativement simple à activer mais nécessite d’activer HTTPS.
  2. Installez un serveur REDIS pour optimiser vos applications. Attention, si vous modifiez votre version PHP, il est nécessaire de recompiler l’extension redis.so ! Il faut donc refaire l’étape « Installer l’extension Redis pour PHP« .

Optimisation du serveur PHP

Il y a quelques modifications que vous pouvez apporter au fichier php.ini.

sudo nano /opt/bitnami/php/etc/php.ini

Modifiez les lignes suivantes :

; Maximum size of POST data that PHP will accept.
post_max_size = 128M

; Maximum allowed size for uploaded files.
upload_max_filesize = 128M

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Paris"

Redémarrez le serveur pour que vos modidifications soient prises en compte.

sudo /opt/bitnami/ctlscript.sh restart

Optimisation du serveur Apache

Si vous comptez installer et optimiser WordPress, vous serez amené à utiliser des directives HTACCESS qui utilisent le module mod_expires.c.

Cette extension n’est pas activée par défaut sur un stack LAMP Bitnami. Il est néanmoins très simple de l’activer.

sudo nano /opt/bitnami/apache2/conf/httpd.conf

Décommentez la ligne :

LoadModule expires_module modules/mod_expires.so

Comme toujours, pour que la modification soit effective, il faut redémarrer le serveur Apache

sudo /opt/bitnami/ctlscript.sh restart apache

Pour vérifier les modules activés sur votre serveur Apache, il suffit d’exécuter la commande ci-dessous et de vérifier si expires_module (shared) se trouve bien dans la liste.

sudo /opt/bitnami/apache2/bin/apachectl -M

Je veux revenir à l’ancien stack !

Si pour une raison ou une autre vous souhaitez réactiver l’ancien LAMP stack, c’est très simple.

Commencez par arrêter le stack LAMP

sudo /opt/bitnami/ctlscript.sh stop

Renommez le folder contenant le nouveau LAMP Stack (celui que vous venez d’installer mais que vous voulez désactiver).

sudo mv /opt/bitnami /opt/bitnami_new_bad

Renommez le folder de l’ancien stack et réactivez le.

sudo mv /opt/bitnami_old /opt/bitnami
sudo /opt/bitnami/ctlscript.sh start

Normalement, tout devrait être revenu comme avant.

Ledger Wallet

Check Also

Activer HTTP2 sur un Stack Lamp Bitnami

Pour améliorer les performances d’affichage de votre site web, il est (vraiment) recommandé d’activer HTTP/2. …

Laisser un commentaire

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