Préambule
Cet outil s’utilise actuellement dans le cadre d’une mutualisation habituelle de SPIP (par exemple avec le plugin Mutualisation) qui s’appuie sur la variable d’environnement HTTP_HOST
pour déterminer le site à démarrer. La constante _DIR_SITE
doit être définie sur le chemin du site démarré ainsi.
Le répertoire qui héberge les sites doit se nommer sites
et se situer à la racine du SPIP (à côté donc des répertoires ecrire/
ou plugins-dist/
). Cependant, ce peut être un lien symbolique vers un autre dossier en dehors de SPIP.
Installation
Si ce n’est pas fait, lier le binaire pour accéder directement à la commande spipmu
:
cd /opt/spip-cli/bin
ln -s $(pwd)/spipmu /usr/local/bin/
Usage
L’usage est simple avec 2 paramètres :
- [glob]
: tel que "*"
ou "*.domaine.tld"
indique sur quels sites appliquer la commande, à partir du nom de leur répertoire. Notons que cet argument doit être la plupart du temps entouré de guillemets, car l’étoile est remplacée en terminal par la liste des fichiers du répertoire en cours, ce qui provoquerait une erreur de commande.
- [commande]
: indique la commande à exécuter. Entourez de guillemets aussi s’il y a des options ou des arguments.
spipmu [glob] [commande]
spipmu "*" test:spip
spipmu "*.domaine.tld" "plugins:lister --export"
spipmu demo.domaine.tld "plugins:activer saisies yaml z-core"
Fonctionnement
Pour chaque répertoire validant la recherche glob, le script tente de se connecter à la base de données du site pour récupérer son URL (le champ adresse_site
dans la table spip_meta
).
Une valeur de host est calculée à partir de cette URL, si on arrive à l’obtenir.
Pour chaque site valide, on exécute la commande SPIP-Cli demandée en sous-tâche, en transmettant la variable d’environnement HTTP_HOST
que l’on avait calculé. Ainsi le SPIP démarre sur le site adéquat.
Si la commande lancée nécessite des interactions en console (par exemple pour valider une action), il faudra valider l’action pour chaque site.
L’ensemble des commandes Spip-Cli sont donc accessibles, mais il convient de préciser que certaines ne fonctionneront pas forcément dans le cadre d’une mutualisation.
Facilités avec la commande spip
Utiliser directement la commande spip
Vous pouvez aussi utiliser sur un site précis directement la commande spip, soit en connaissant le host et en le transmettant en variable d’environnement, soit en exécutant la commande depuis le répertoire du site :
cd /var/www/spip_mutualise
# host transmis, la mutualisation démarrera dessus
HTTP_HOST="sous.domaine.tld" spip test:spip
# sinon aller dans le répertoire
cd sites/sous.domaine.tld
spip test:spip
Lorsque la commande spip
est exécutée depuis un répertoire d’un Spip mutualisé, la variable d’environnement HTTP_HOST sera calculée (à partir de l’URL du site en base de données) avant de démarrer SPIP.
Exemple de sortie
spipmu "cite*" test:spip
Note : les données sont remplacées par des petits xxx ici.
spipmu *cite* test:spip
Spip Cli Mutualisation
======================
✔ SPIP trouvé.
✔ Répertoire sites trouvé.
✔ 2 sites correspondent au critère *cite*
✔ 2 sites valides
* www.cite-a-xxxxxx.fr
* www.cite-b-xxxxxx.fr
www.cite-a-xxxxxx.fr
----------------------------------------------------
Vérifier notre accès à SPIP
===========================
✔ SPIP est trouvé
✔ SPIP est démarré
✔ PDO Accessible
Nom du site : XXX
Adresse du site : http://www.cite-a-xxxxxx.fr
✔ 2 webmestre·s sur ce site (via PDO)
✔ 2 webmestre·s sur ce site (via SPIP)
------ ---------------- ----------------------------------
id nom email
------ ---------------- ----------------------------------
1 Administrateur xxx@xxxx
1234 XXXXX xxx@xxxx
------ ---------------- ----------------------------------
www.cite-b-xxxxxx.fr
--------------------------------------------------------
Vérifier notre accès à SPIP
===========================
✔ SPIP est trouvé
✔ SPIP est démarré
✔ PDO Accessible
Nom du site : XXXXXXXX
Adresse du site : http://www.cite-b-xxxxxx.fr
✔ 1 webmestre·s sur ce site (via PDO)
✔ 1 webmestre·s sur ce site (via SPIP)
---- ----------- ----------------------------------
id nom email
---- ----------- ----------------------------------
1 AdminSpip xxx@xxxx
---- ----------- ----------------------------------
Discussions par date d’activité
3 discussions
Bonjour,
Je reviens vers vous car mon ancien problème est corrigé ! L’erreur venait bien du config.php qui contenait une erreur...
Aujourd’hui, je voulais activer plusieurs plugins sur mes sites mutualisés mais quand j’écris la commande « spipmu "site*" plugins:activer nomplugin », j’obtiens le message suivant :
Le problème venait de ma syntaxe qui était fausse...
Il faut écrire : « spipmu "site*" "plugins:activer nomplugin" » !
Si ça peut aider...
Didier.
Répondre à ce message
Merci de m’aider.
Quelle que soit la commande
spipmu "fo*" test:spip
dans le dossier racine de spip, ouspip test:spip
dans le dossier sites/formation10), j’obtiens le résultat suivant (sans le début pour la deuxième solution) l’option -vvv ne donne rien de plus :Je viens de me réinstaller une mutualisation rapidement en local et je n’ai aucun problème pour ma part.
Peut être est-ce un problème de droits sur les fichiers, le PHP utilisé en Cli n’est pas le même souvent que celui utilisé en web.
Tu as une configuration particulière pour les sites ?
Le site SPIP en mutualisation est il effectivement configuré et fonctionnel ?
Oui, a priori le SPIP contient la base de données au moins, et il arrive à la lire lorsqu’il lance « spipmu » (avec le connecteur PDO de PHP ; c’est pas le même que SPIP à cet endroit, mais ça lit bien le fichier config/connect.php). Donc ce n’est pas l’absence de bdd qui pose souci.
La fichier de configuration de démo fournit avec le plugin mutualisation utilise pour tester le site en cours la variable d’environnement
$_SERVER['HTTP_HOST']
, et c’est elle qui est générée automatiquement pas Spip-cli avant d’exécuter SPIP.Ta mutualisation (dans /config/mes_options.php ) utilise cette variable aussi pour définir le site à charger ? autre chose ?
Bonjour Matthieu,
Je me remets sur la mutualisation... Un peu de vacances étaient nécessaires pour relâcher la pression et faire un peu le vide.
Merci d’avoir pris du temps pour me répondre.
Pour info, nous n’utilisons pas le plugin « mutualisation ».
Dans le fichier mes_options.php, on utilise bien la variable $_SERVER[’HTTP_HOST’] pour définir l’URL du site.
Bonjour,
J’ai remarqué que dans le cas d’une mutualisation (et sans le plug-in « mutualisation »), spipmu « * » test:spip ne fait que pointer (pour chaque site) vers le site racine et non sur les sites situés dans le dossier « sites ».
Il en est de même lorsque je lance spip test ;spip depuis un dossier situé dans « sites ».
Répondre à ce message
Bonjour,
Je suis en train de tester Spip-cli en mutualisation et j’ai le soucis suivant :
Quand je fais un spipmu « * » test:spip , j’obtiens systématiquement ceci pour tous les sites :
Quelqu’un aurait-il une idée d’où vient l’erreur ?
Merci.
Je me réponds à moi-même.
Je suis sur un Spip 3.0.24... Sur un Spip 3.2, ça fonctionne !
Bonjour,
Bon, en fait, ça ne fonctionne toujours pas (sauf sur un site sans mutualisation).
Dès que je passe sur des sites mutualisés, je retrouve le même message d’erreur... Que je lance spipmu depuis le dossier spip ou que je lance spip depuis le dossier du site, j’ai toujours ce problème.
J’ai un des sites mutualisés qui est totalement passé sous spip 3.2.7 (mise à jour de la bdd ok !) mais toujours pas accessible par spip-cli !
Je suis preneur de toute idée !
Merci.
Alors, voici quelques commandes que j’utilise très régulièrement en mutualisation, depuis la racine du SPIP :
Noter les guillemets !
Bonjour,
Quelle que soit la commande (en respectant bien la syntaxe), j’obtiens toujours le message (minipres affiché par le inc_version.php) qui considère que mon site n’est pas encore installé (site en travaux).
Il semblerait qu’il y ait _FILE_CONNECT non défini... d’où le message...
Mais c’est juste
spipmu
qui ne fonctionne pas, ou aussi spip-cli en général (regarde les autres commandes (spip test:spip) en indiquant le HTTP_HOST ou en passant par sites/x/... ?Tu as quoi comme sortie avant le HTML ?
Tu as quoi comme sortie (sans le html) si tu fais quelque chose comme (où spip est le nom de ta commande spip-cli) :
Oups, je n’ai pas fait répondre... nouvelle question...
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |