Linux : Installer plusieurs versions de xampp sans VM

plusieurs versions de xampp

Comme je l’écrivais récemment, l’aventure avec Ampps ne s’est pas bien déroulée. Je me suis donc résolu à relancer les recherches pour avoir plusieurs versions de PHP sur un même serveur local, et bien entendu sans machine virtuelle.
Plutôt flemmard, j’abandonne l’idée d’installer un LAMP à la main et de compiler moi-même les versions de PHP. Me reste alors la possibilité d’installer plusieurs versions de Xampp.

Pourquoi plusieurs versions de Xampp ?

Il existe des tas de raisons pour devoir utiliser plusieurs versions de Xampp, ou tout autre logiciel bien sûr.
Pour ma part, avec les hébergeurs qui restent en PHP 5.6, d’autres qui proposent de passer au 7, et les derniers qui passent de force à la dernière version sous couvert de meilleures performances, j’essaye de tester mon code avec PHP 5 et PHP 7.

En ce moment par exemple, je cherche à bidouiller le code du bilboplanet, le moteur du site planet-libre. Le code étant vieux, il fait encore usage des fonctions

mysql_*
  ou
ereg*
 .
Mais plutôt que d’installer un unique PHP 7 et me retrouver face à une page blanche causée par de trop nombreuses erreurs, mon approche est de tester et modifier au fur et à mesure sous la version 5, qui fonctionne, pour tester ensuite sous PHP 7.

Explorons d’autres possibilités

Si j’en suis là, forcément, c’est que j’ai épuisé les autres solutions qui s’offraient à moi.
On peut s’en sortir relativement aisément avec Nginx, ou en compilant les versions de PHP nécessaires, quitte à installer d’autres outils.
Enfin, installer un LAMP à la main, très peu pour moi.

J’ai beau utiliser Linux, j’aime pas me faire chier gratuitement. Il me faut du produit fini, du out of the box, et pas des solutions chronophages à souhait, en usant mon clavier sur un shell, bancales avec un tas de dépendances. Pi bon, c’est un peu de ma faute aussi. J’ai quasi toujours utilisé Xampp, et quand j’ai un truc qui fonctionne, j’ai tendance à chercher chez les concurrents tous les points qui font que ça ne marche pas pareil. Ouais, je suis devenu un vieux con

Retour sur Xampp

Nous partons donc sur Xampp, dont je ne ferai pas l’éloge ici. Mais en bref, je n’ai jamais été déçu.

J’ai trouvé pléthore d’articles décrivant comment installer plusieurs versions de Xampp cote à cote. Le problème est que ces bribes d’informations datent de 2013 ou plus tôt, et qu’à l’époque Apache Friends, l’équipe qui soutient le projet, n’avait pas codé les chemins d’utilisation en dur. Ainsi on pouvait décompresser les différentes archives là où bon nous semblait, et pas de problème.
A présent, les chemins sont codés en dur, les archives ont laissé place aux fichiers .deb, et l’installation ne peut se faire que dans le dossier /opt/lampp, sous peine que rien ne fonctionne. Aussi, ces articles n’ont actuellement plus cours.
De plus, l’usage qui en est fait n’est pas suffisant pour moi.

Détaillons à présent comment faire cela.

Première version

Si Xampp n’est toujours pas installé, faites-le dès à présent. Sinon, inutile de supprimer quoi que ce soit, une install déjà existante dans /opt/lampp peut être conservée.
Pour ma part, j’ai déjà la version 7.1 présente.

Modification du chemin

Avant toute chose, nous allons créer dans le dossier /opt un dossier xampp. C’est lui qui contiendra toutes les versions de Xampp :

sudo mkdir /opt/xampp

Puis on va déplacer notre version de Xampp (le dossier /opt/lampp) dans ce dossier, en le renommant du nom de la version qu’elle contient. Par exemple, pour déplacer ma version 7.1 :

sudo mv /opt/lampp /opt/xampp/7.1

À présent, passons à une seconde installation de Xampp.

Seconde version

Installez à présent une autre version de Xampp. Pour ma part, j’installe une 5.6.

Une fois l’installation terminée, nous allons déplacer le contenu de cette nouvelle version dans notre dossier /opt/xampp :

sudo mv /opt/lampp /opt/xampp/5.6

Vous devriez alors avoir cette arborescence :

Si vous souhaitez installer d’autres versions de Xampp, répétez cette opération autant de fois que nécessaire.

Lancement de Xampp

À présent, intéressons-nous au lancement du soft.
Je l’ai dit plus haut, mais si Xampp n’est pas installé dans /opt/lampp, il ne démarrera pas, et donc pas d’Apache et autres.

Avec Linux heureusement, il est possible de créer des liens symboliques, et donc simuler la présence d’un dossier.

Nous allons donc créer un petit script shell qui nous demandera quelle version de Xampp nous souhaitons utiliser, créera un lien symbolique depuis /opt/lampp vers la version voulue.
Enfin, le script lancera la stack lampp normalement.

Dans votre dossier personnel, créez un fichier xampp.sh par exemple, et collez-y le contenu du script bash :

#!/bin/bash

echo 'Versions disponibles :'
# Liste des dossiers 
ls -l /opt/xampp | awk '{print $9}'

echo

# Demande de la version à lancer
read -p 'Lancer la version : ' version

echo
# Arret de lampp s'il est déjà lancé
sudo /opt/lampp/lampp stop

# Suppression d'un éventuel lien symbolique
sudo rm /opt/lampp

# Création du lien symbolique
sudo ln -s /opt/xampp/$version /opt/lampp

echo
# Démarrage de lampp
sudo /opt/lampp/lampp start

sleep 3

L’idée de ce script n’est pas de moi, j’ai pompé la majeure partie sur ce gist.

Les commentaires devraient suffire. Sinon les commentaires sont là pour ça.
Notez la présence à la fin d’un

sleep
, facultatif, pour laisser le temps de voir si tout s’est bien déroulé.

Donnez la permission à ce fichier d’être exécuté comme un programme, et lancez-le :

Et voilà le résultat

A noter : Personnellement, j’ai créé un dossier bin dans mon home (

mkdir ~/bin
), et ai mis le script dedans. Ainsi, depuis ma console, j’ai juste à lancer :
xampp.sh

pour lancer le script, sans avoir à retaper le chemin à chaque fois.

Et MySQL ?

Si j’ai osé dire “bribes d’informations” tout à l’heure, quand je parlais d’autres articles, c’est à cause de cela notamment. Je n’ai trouvé dans aucun blog la solution pour faire tourner les différentes versions de Xampp avec les mêmes bases de données.

Ben oui, plusieurs versions de PHP c’est bien, mais si je dois me taper la réplication de mes DB à chaque fois, c’est pas la peine.
Il est donc possible d’utiliser plusieurs versions de MySQL (MariaDB avec Xampp), en utilisant les mêmes bases de données.

Voyons comment faire cela.

Stockage

Avant toute chose, il faut savoir comment cela fonctionne. C’est très simple en fait, puisque dans Xampp, MySQL stocke toutes ses infos (tables, données etc) dans le dossier /opt/lampp/var/mysql .
En suivant ce chemin, vous trouverez normalement un dossier par database, qui contient lui-même pas mal de fichiers contenants les tables et données.

Il s’agit alors de faire pointer tous les accès vers ces données en un point central : Le stockage d’une seule version.

La source

Il faut déjà déterminer quelle version de Xampp sera utilisée pour stocker ces données. Pour ma part, ce sera la 7.1.

Les autres

Pour les autres versions, vous pouvez tout simplement supprimer ou renommer le dossier qui contient ces données. Donc ici pour moi, la 5.6, qui n’a pas but de stocker :

sudo rm -r /opt/xampp/5.6/var/mysql

Puis on va créer un lien symbolique depuis la version 5.6, qui redirigera les appels à la 7.1 :

sudo ln -s /opt/xampp/7.1/var/mysql /opt/xampp/5.6/var/mysql

Si vous avez d’autres versions, répétez la procédure.

En lançant les différentes versions de Xampp, on peut alors créer et modifier les bases de données, et voir que l’on utilise les mêmes schémas, sous des moteurs différents.

Dossier htdocs

Enfin, dernier point important, le stockage des scripts.
Comme pour les bases de données, je n’ai pas envie de devoir répliquer à la main mes scripts, mais plutôt qu’un même fichier puisse être accessible depuis n’importe quelle version. Logique non ?

Pour cela, je vais créer un dossier dans mon home, que je nommerai www :

mkdir ~/www

C’est lui qui contiendra les dossiers de mes sites à faire tourner.

Puis, pour rendre accessible ce dossier depuis chaque version de Xampp, il faut à nouveau créer un lien symbolique depuis le dossier htdocs de chaque versions :

sudo ln -s ~/www /opt/xampp/5.6/htdocs/www
sudo ln -s ~/www /opt/xampp/7.1/htdocs/www

A partir de maintenant, en stockant vos scripts dans le dossier /home/www, ils vous sont accessibles depuis n’importe quelle version de Xampp, à l’adresse

http://localhost/www/
.

Des questions ?

L’article Linux : Installer plusieurs versions de xampp sans VM est apparu en premier sur Max-Koder.

Vus : 723
Publié par Max Koder : 16