Objectifs:

  • Monter une ou plusieurs stacks LAMP totalement personnalisées sur une machine
  • Avoir une outil simple ET puissant pour les gérer

Champs d'application :

  • Le poste de travail d'un développeur qui intervient sur plusieurs projets en parallèle
  • Une plate-forme d'intégration continue (PIC) de sites et applications web
  • Un hébergement web mutualisé

Problématiques :

  • Avoir plusieurs versions de PHP sur la même machine, ce qui implique :
  1. Compiler chaque version de PHP en prenant en compte les spécificités de chacune
  2. Monter PHP sur le serveur web en FastCGI avec FPM, ce qui implique de gérer les pools FPM et le démarrage automatique des services au démarrage de la machine
  3. Ranger les fichiers (binaires, configuration, logs...), les reconnaître, inclure les binaires dans le path, choisir un binaire par défaut, etc.
  4. Installer PEAR, des extensions PECL, Xdebug, etc.
  • Éventuellement, avoir plusieurs serveurs web (Apache, Nginx) si on a des besoins spécifiques (version requise différente de celle présente dans la distribution Linux, module requis spécifiquement pour un site et incompatible avec un autre, etc.), ce qui implique :
  1. Compiler chaque serveur web en prenant en compte les spécificités de chaque version
  2. Compiler FastCGI et le configurer pour gérer les pools de FPM à monter
  3. Gérer les hôtes virtuels et définir, pour chacun d'eux, quel pool FPM interprétera le PHP
  4. Gérer les modules et leurs dépendances
  5. Gérer le démarrage automatique des services au démarrage de la machine
  6. Gérer les conflits de ports, avec éventuellement un serveur servant de reverse-proxy devant les autres
  • Éventuellement, gérer les outils qui gravitent autour d'une stack LAMP :
  1. phpMyAdmin : Pouvoir l'installer sans les paquets de la distribution Linux, pour ne pas avoir à installer toutes les dépendances dont on ne veut pas; Le configurer correctement (activer le concepteur, le répertoire de dépôt de scripts SQL, etc.);

L'outil proposé : OpenWebArch, est un assemblage de composants représentant les briques d'une stack LAMP :

Quelques caractéristiques :

  • Licence GPLv3 (pas encore en place mais ça va venir)
  1. 100% Bash pour ne dépendre de rien
  2. Contient de quoi afficher des messages signalés OpenWebArch, de quoi gérer les erreurs proprement, etc.
  3. Contient une documentation de base pour la plupart des commandes. Il manque de la documentation sur les possibilités de surcharge des options de compilation et certaines commandes du plugin Apache
  4. Petit bonus rendant la chose facile à manipuler : l'auto-complétion Bash ! Les commandes étant assez longues, rien de tel que de la suggestion automatique pour savoir sur quel version de PHP on veut agir, et quelle est la commande à lancer !
  1. La démarche de compilation complète est fournie, pour qu'installer PHP se résume à une commande (cf. la doc !)
  2. Des options de compilations par défaut sont fournies, mais peuvent être surchargées pour chaque version
  3. Par défaut, PHP est compilé pour fonctionner avec FPM
  4. Par défaut, PHP est compilé sans aucune extension intégrée, mais avec un maximum d'extensions disponibles en fichiers externes
  5. Les extensions se gèrent ensuite par des commandes simples (liste, activer, désactiver, cf. la doc !)
  6. L'installation de Xdebug se fait en une commande (cf. la doc !)
  7. L'installation d'extensions PECL (comme APC) se fait en une commande si on a a déjà installé PEAR, également en une commande (cf. la doc !)
  1. La démarche de compilation complète est fournie, pour qu'installer Apache se résume à une commande (cf. la doc !)
  2. Des options de compilations par défaut sont fournies, mais peuvent être surchargées pour chaque version
  3. Par défaut, Apache est compilé sans aucun module chargé, mais avec tous les modules possibles disponibles en DSO
  4. Les modules se gèrent ensuite par des commandes simples (liste, activer, désactiver), sur le même modèle que PHP (cf. la doc !)
  5. Par défaut, un hôte virtuel est créé (localhost)
  6. Les hôtes virtuels se gèrent ensuite par des commandes simples (liste, activer, désactiver), sur le même modèle que les modules (cf. la doc !)
  7. L'installation du module FastCGI se fait en une commande, et l'ajout de workers FPM également (manque de documentation sur cette partie)
  1. La démarche d'installation et configuration complète est fournie, pour qu'installer un phpMyAdmin bien configuré se résume à une commande (cf. la doc !).
  2. Par défaut, un serveur géré est ajouté
  3. Il est possible d'en ajouter par une simple commande (cf. la doc !)
  • L'avenir :
  1. Une gestion des erreurs plus systématique ?
  2. Une documentation plus rigoureuse ?
  3. Un plugin Nginx ?
  4. Un plugin MySQL ?