Webapp-config
webapp-config est l'installeur de Gentoo pour les applications web. Il est utilisé pour le paramétrage automatique des applications web dans un environnement hôte virtuel (NdT: Virtual Host en anglais). À l'origine écrit en tant que script bash, wepapp-config est désormais basé sur Python et est disponible dans les dépôts ebuild de Gentoo.
Concepts
webapp-config vise à procurer un système de gestion de paquet fonctionnel pour les administrateurs de serveurs web lorsqu'il est nécessaire d'héberger plusieurs sites Internet avec la même adresse IP (hôte virtuel).
Installation en deux étapes
Les gestionnaires de paquets tels que RPM et Portage sont conçus pour installer une copie d'un paquet, l'installant dans un point donné du système. Cela est conflictuel avec le besoin des environnement virtuels (NdT: pour les serveurs web), où les administrateurs ont besoin d'être capable d'installer un paquet dans différents emplacements pour qu'ils puissent faire partie de plus d'un site Internet. Cela étant dit, les gestionnaires de paquets sont essentiels pour l'entretien d'un système d'exploitation dans le temps - comment faire pour avoir le meilleur des deux mondes ?
La réponse est une installation en deux étapes. Les gestionnaires de paquets traditionnels installent une copie principale dans /usr/share/webapps/. Elle n'est pas faite pour être immédiatement fonctionnelle - mais est prête à être utilisé par l'utilitaire webapp-config pour installer un paquet unique à travers différents emplacement (du système).
Multiple installations du même paquet
webapp-config autorise l'administrateur à installer de multiple copies d'un même paquet sur le même système en parallèle. L'administrateur décidant du répertoire dans lequel chaque copie sera placée.
Dans le monde des applications web, ces installations multiples sont appelées « copies virtuelles ».
Différentes versions du même paquet peuvent être installées sur le même système en parallèle. Cela autorise les administrateurs de serveurs web à progressivement déployées une nouvelle version d'un paquet à travers différents sites (web); ils ne sont pas obligés de le faire pour chaque site un-par-un.
webapp-config minimise le nombre de fichiers dupliqués (NdT: sur le système) à son minimum. Cela rend la consommation d'espace disque (plus) faible. La majorité des fichiers sont des liens physiques (seulement pour les fichiers de configurations), concernant les autres fichiers qui ont besoin d'être modifiés ils sont copiés dans l'hôte virtuel.
Propriétaire et permissions des fichiers
Les administrateurs qui ont l'habitude d'installer des applications web à la main sauront à quel point il peut être difficile d'avoir pour chaque fichier le bon propriétaire, sans compter les permissions adéquates. Certains fichiers ont besoin d'avoir comme propriétaire l'utilisateur lançant le serveur web. D'autres ont besoin d'avoir comme propriétaire un compte shell (NdT: dans le système), afin que ces utilisateurs puissent se connecter et modifier des fichiers de configurations. Si la distribution Linux offre une gamme de serveurs web - chacun étant lancé par un utilisateur différent - même l'installeur peut avoir du mal à correctement configuré cela.
Avec webapp-config, les administrateurs indiqueront à l'installeur quel serveur web utiliser et avec quel compte shell les fichiers de configurations peuvent être édités. webapp-config installera ensuite les fichiers avec les bons propriétaires et permissions.
Fichiers de configuration protégés
webapp-config s'assure automatiquement que le contenu des fichiers de configurations ne seront jamais remplacés durant une mise à jour - même si les fichiers n'ont pas été édités depuis l'installation originale. En sus, webapp-config n'écrasera jamais les fichiers qu'il n'a pas installés, ou qui ont été modifiés depuis que l'installation a été réalisées avec webapp-config. webapp-config utilise la vérification de la somme MD5 pour déterminer si un fichier à été modifié ou non. Dans le cas des liens symboliques, webapp-config ne remplacera jamais un lien symbolique vers un fichier différent.
Quand une mise à jour tente d'écrire dans un fichier protégé, webapp-config créer un fichier ._cfg avec le nouveau contenu du fichier à l'intérieur. etc-update peut être utilisé pour compléter l'installation, comme avec la commande habituelle emerge.
Les options pour copier un fichier
Une copie virtuelle est principalement construite en créant un lien physique (NdT: Hard link) des fichiers dans /usr/share/webapps. Si un lien physique ne peut pas être créée, le fichier est à la place copié depuis /usr/share/webapps.
Les liens physiques peuvent seulement être créée vers des fichiers sur le même système de fichier. Si /usr/share/webapps et /var/www sont conservés sur différents systèmes de fichier, webapp-config ne peut pas utiliser de liens physiques et sera forcé de copier les fichiers à la place.
Il y a trois manières de contourner les problèmes de lien physique.
La méthode la plus aisée est de créer un lien symbolique de /usr/share/webapps vers un répertoire dans /var/www. Pour la plupart des administrateurs, cela assure que tout est dans le même système de fichier.
Cependant, si les sites web hébergés sont conservés sur différents systèmes de fichiers, alors webapp-config ne sera jamais capable de physiquement lier les fichiers.
En tant qu'alternative l'option en ligne de commande --soft
peut être utilisé. Cela indique alors à webapp-config de créer un lien symbolique à la place d'un lien physique.
La problématique avec l'usage des liens symboliques est que certains paquets ne fonctionnent pas quand la copie virtuelle est faite à partir de liens symboliques. Hélas beaucoup d'utilisateurs ainsi que d'administrateurs se plaignent des répertoires remplis de liens symboliques, les rendant confus. Pour ces raisons, les liens symboliques ne sont plus utilisés par défaut dans webapp-config désormais.
L'option --copy
en ligne de commande peut aussi être sélectionnée. Ce changement indique à webapp-config de directement copier les fichiers depuis /usr/share/webapps/ à la place des liens physiques. La copie en direct fonctionne à travers les systèmes de fichiers avec l’inconvénient d'utiliser plus d'espace. Cela peut être souhaitable au lieu de se reposer sur les liens symboliques dans le but de séparer les fichiers des hôtes virtuels, modifiables par les administrateurs, des fichiers dans /usr/share/webapps/.
Fichier virtuel magique
Par défaut, la copie principale contient les méta-données (NdT: metadata) qui décide quels sont les fichiers liés au sein d'une copie virtuelle et lesquels ne le sont pas. Le propriétaire des fichiers est soit le serveur web (appartenant au serveur), ou sont des fichiers de configurations (appartenant à la configuration), ou sont liés (virtuellement). Les répertoires peuvent appartenir au serveur web ou à la configuration, mais la plupart du temps ils ont seulement besoin d'être de simples répertoires (appartenance par défaut) crées à l'intérieur du répertoire d'installation (paramétré avec l'option -d
). webapp-config procure un nombre d'options qui autorisent à ré-écrire les méta-données - dans le cas où cette ré-écriture est nécessaire.
Les options --default-dirs
et --virtual-files
autorisent l'administrateur à déterminer ce que fera webapp-config si (respectivement) un répertoire ou un fichier est marqué comme étant par défaut, ou virtuel. webapp-config peut être informé de créer un répertoire ou un fichier - appartenant au serveur ou à la configuration - à la place.
${ROOT}
webapp-config est conçu pour supporter intégralement ${ROOT}
. Pour les administrateurs qui ne sont pas certains de ce que cela signifie voir la page du manuel d'emerge (man emerge).
Fonctionnalités
En utilisant le drapeau de compilation (NdT: USE flag) vhost
, webapp-config est capable de gérer les applications suivantes :
Application | Paquet | Page du projet | Description |
---|---|---|---|
ampache | www-apps/ampache | http://www.ampache.org/ | Ampache est un outil écrit en PHP pour gérer, mettre à jour et jouer des fichiers audios via une interface web. |
b2evolution | www-apps/b2evolution | http://www.b2evolution.net | Moteur de blog multi-lingues, pour plusieurs utilisateurs (NdT: multiuser) et plusieurs blogs (NdT: multi-blog). |
Bugzilla | www-apps/bugzilla | http://www.bugzilla.org | Bugzilla est l'outil de suivi des bugs du projet Mozilla. |
cgit | www-apps/cgit | http://git.zx2c4.com/cgit/about | Une interface web rapide pour les dépôts git. |
coppermine | www-apps/coppermine | http://coppermine.sourceforge.net/ | Une galerie web écrite en PHP avec un backend MySQL. |
cvsweb | www-apps/cvsweb | http://www.freebsd.org/projects/cvsweb.html | Interface WWW pour un arbre CVS. |
dokuwiki | www-apps/dokuwiki | http://wiki.splitbrain.org/wiki:dokuwiki | DokuWiki est un Wiki simple d'utilisation visant les besoins de documentations des petites sociétés. |
dragonflycms | www-apps/dragonflycms | http://dragonflycms.org | Un système de gestion de contenu riche en fonctionnalités, open source reposant sur PHP-Nuke 6.5. |
Drupal | www-apps/drupal | http://drupal.org/ | Une plateforme open source et un système de gestion de contenu basé sur PHP. |
egroupware | www-apps/egroupware | http://www.egroupware.org/ | Suite GroupWare sur le web. |
eyeos | www-apps/eyeos | http://www.eyeos.org | Environnement de bureau web basé sur AJAX. |
groupoffice | www-apps/groupoffice | http://group-office.sourceforge.net/ | Group-Office est une application puissante et modulaire de framework Intranet. |
Joomla | www-apps/joomla | http://www.joomla.org/ | Joomla est un système de gestion de contenu puissant et open source. |
mantisbt | www-apps/mantisbt | http://www.mantisbt.org/ | Système de suivi de bugs sur le web basé sur PHP/MySQL. |
MediaWiki | www-apps/mediawiki | http://www.mediawiki.org | L'application sur le web de Wiki MediaWiki (comme utilisé sur wikipedia.org). |
mirmon | www-apps/mirmon | http://people.cs.uu.nl/henkp/mirmon/ | Application web simple pour monitorer le statut de miroirs. |
Moodle | www-apps/moodle | http://moodle.org | Le système de gestion de cours de Moodle. |
mythweb | www-apps/mythweb | http://www.mythtv.org | Scripts PHP visant à gérer MythTV depuis un navigateur web. |
Nextcloud | www-apps/nextcloud | https://nextcloud.com/ | Cloud personnel basé sur le web à héberger sur son propre serveur. |
otrs | www-apps/otrs | http://otrs.org/ | OTRS est un système de ticket open source. |
Owncloud | www-apps/owncloud | http://owncloud.org | Application de stockage web où toutes les données sont sous le contrôle de l'administrateur. |
phpBB | www-apps/phpBB | http://www.phpbb.com/ | phpBB est un moteur de forum open source. |
phpmp | www-apps/phpmp | http://www.musicpd.org/ | phpMp est un programme-client pour mpd (Music Player Daemon). |
phpsysinfo | www-apps/phpsysinfo | http://rk4an.github.com/phpsysinfo/ | phpSysInfo est un outil sympathique qui affichera les statistiques du système via PHP. |
postfixadmin | www-apps/postfixadmin | http://postfixadmin.sourceforge.net | Outil de gestion sur le web pour gérer les domaines virtuels et les utilisateurs de Postfix. |
rutorrent | www-apps/rutorrent | https://github.com/Novik/ruTorrent | ruTorrent est un front-end pour le populaire client rTorrent. |
trac | www-apps/trac | http://trac.edgewall.com/ | Trac est un outil minimaliste basé sur le web pour la gestion des projets, wikis, bugs ou problèmes. |
tt-rss | www-apps/tt-rss | http://tt-rss.org/ | Tiny Tiny RSS - Un agrégateur de flux d'actualités (RSS/Atom) sur le web et basé sur AJAX. |
venus | www-apps/venus | http://intertwingly.net/code/venus/ | Une application d'agrégateur de flux d'actualités. |
viewvc | www-apps/viewvc | http://viewvc.org/ | ViewVC, une interface web pour CVS et Subversions. |
wiliki | www-apps/wiliki | http://practical-scheme.net/wiliki/ | WiLiKi est un moteur de wiki léger écrit avec Gauche Scheme et tournant dessus. |
WordPress | www-apps/wordpress | http://wordpress.org/ | Outil de gestion de contenu Wordpress basé sur PHP et MySQL. |
Installation
USE flags
USE flags for app-admin/webapp-config Gentoo's installer for web-based applications
+portage
|
Propagate python_targets dependencies to sys-apps/portage |
Emerge
Installer webapp-config :
root #
emerge --ask app-admin/webapp-config
Configuration
Paramétrage du serveur web
webapp-config a besoin de connaître quel serveur web est en place pour héberger les applications. Les choix populaires incluent :
Si un serveur web n'a pas été paramétré précédemment à cette étape dans le processus (d'installation) de webapp-config, il faut le faire avant de continuer la lecture de cet article. Visiter les liens de références ci-dessus pour installer et configurer un serveur web. Une fois que le serveur web a été paramétré, retourner à cet article
Modifier la ligne suivante dans le fichier /etc/vhosts/webapp-config pour paramétré un serveur web. Cet exemple est adéquate si le serveur web sélectionné est lighttp (www-servers/lighttpd) :
vhost_server="lighttpd"
Utilisation
Actions à réaliser
- -I, --install
- Activer le mode d'installation.
- -U, --upgrade
- Activer le mode mise à niveau.
- -C, --clean
- Activer le mode de suppression.
Exemples
Pour l'exemple suivant Owncloud sera utilisé comme application web. Owncloud peut être remplacé par n'importe quelles applications listées dans la table ci-dessus.
Remplacer
<version>
avec la version de l'application web sur laquelle travailler.Pour installer une application web :
root #
webapp-config -I owncloud <version>
Pour lister les applications web installées :
root #
webapp-config --list-installs
Pour voir les applications web installées :
root #
webapp-config --show-installed
Pour mettre à jour une application web installée précédemment :
root #
webapp-config -U owncloud <version>
Pour supprimer une application web installée :
root #
webapp-config -C owncloud <version>
Dépannage
Installation fantôme
Des entrées existent toujours en lançant webapp-config --list-installs lorsque les fichiers dans le répertoire /var/www/ ont été supprimés.
Le problème à probablement pour origine la suppression incorrecte d'une application web. Si les fichiers dans /var/www/ sont manuellement supprimés alors le programme webapp-config peut ne pas savoir ce qu'il en est. Les désinstallations devraient être gérées en lançant webapp-config -C <nom_application> <version_application>.
Désinstaller webapp-config :
root #
emerge --depclean --verbose app-admin/webapp-config
Une fois supprimé, enlever les fichiers d'installation restant qui se trouvent dans le répertoire /var/db/webapps/.
root #
rm -rf /var/db/webapps/
Ré-installer webapp-config et lancer la commande avec l'option --list-installs
. Toutes les installations fantômes devraient avoir disparus.