Ferme à SPIP

Un petit article synthétique qui explique en quelques mots et captures d’écrans comment faire une « ferme à SPIP » avec le plugin "Mutualisation" à partir d’un nom de domaine principal.

ATTENTION , cet article nécessite d’utiliser une version stable > à 2.0

Les prérequis (au 1er janvier 2008) :

-  posséder un nom de domaine disponible
-  avoir la possibilité de modifier la configuration apache

Dans l’exemple suivant on supposera que l’on cherche à mettre la ferme sur le site GrmlEU [1]

Installation SPIP

Installer un SPIP (une version récente est recommandée). Pour la suite de l’exercice on supposera que le SPIP est installé dans le répertoire « /home/grml/public_html/ ».

Installation plugin mutualisation

Installer le plugin Mutualisation [2] (il est plus simple de ne pas le mettre dans le répertoire plugin) . Nous avons donc « /home/grml/public_html/mutualisation »

Configuration apache

Modifier la configuration apache

Si vous êtes sur apache2 il faut créer un fichier grml.eu.

etc/apache2/sites-available# more grml.eu 
<VirtualHost *>
ServerName grml.eu
ServerAlias *.grml.eu
DocumentRoot /home/grml/public_html
</VirtualHost>

Ce qui veut dire que tous les sous domaines de grml.eu vont pointer vers le répertoire « /home/grml/public_html ».

Ensuite il faut faire une lien symbolique pour que le domaine soit actif

cd etc/apache2/sites-enable
ln -s /etc/apache2/sites-available/grml.eu  grml.eu 

Enfin il faut prendre en compte ces changements

/etc/init.d/apache2 force-reload 

Configuration DNS

Il faut maintenant que lorsque l’on tape grml.eu, il redirige vers l’adresse ip du serveur

voici la config utilisée chez gandi

Configuration de la mutualisation

Copier le fichier /home/grml/public_html/mutualisation/mes_options.php.txt vers « /home/grml/public_html/config » et enlevez l’extension « .txt » . Ouvrez ce fichier et procédez au paramétrage.

Pour vous aider voici le fichier de config utilisé sur scriibe

<?php

        $GLOBALS['taille_des_logs']=1000;
        #parametrage a faire 
        $monTld="scriibe.net";

        require _DIR_RACINE.'mutualisation/mutualiser.php';
        define ('_ID_WEBMESTRES', 1);

        $site = $_SERVER['HTTP_HOST'];

        $type_urls = 'propres2'; # par defaut, surchargeable ci-dessous

        switch($site) {
                case "www.$monTld":
                        $site=$monTld;
                        break;
                case 'www.spip-blog.net':
                        $site='spipblog';
                        break;
                case 'spip-blog.net':
                        $site='spipblog';
                        break;
                default :
                        $site = str_replace('.scriibe.net', '', $site);
                        break ; 
        }
        define ('_SITES_ADMIN_MUTUALISATION', ''); // ici sites esclaves
        define ('_INSTALL_SERVER_DB', 'mysql');
        define ('_INSTALL_HOST_DB', 'plouf');
        define ('_INSTALL_USER_DB_ROOT', 'plouf');
        define ('_INSTALL_PASS_DB_ROOT', 'plouf');
        define ('_INSTALL_TABLE_PREFIX', 'spip');
        define ('_INSTALL_NAME_DB', 'scr_'.prefixe_mutualisation($site));
        if ($site != "$monTld") {
                demarrer_site($site,
                        array(
                        'creer_site' => true,
                        'creer_base' => true,
                        'code' => 'plouf',
                        'url_img_courtes' => true,
                        'creer_user_base' => true,
                        'mail' => 'ben.spip@gmail.com'
                        )
                );
        }
        else {
        $GLOBALS['dossier_squelettes']=":mutualisation";
        }

?>

pour celui sur GrmlEU

<?php

        if (!defined("_ECRIRE_INC_VERSION")) return;
        require _DIR_RACINE.'mutualisation/mutualiser.php';

        $site = str_replace('www.', '', $_SERVER['HTTP_HOST']);
        if ($site != $_SERVER['HTTP_HOST']) {
                include_spip('inc/headers');
                redirige_par_entete('http://'.$site.'/');
        }

        define ('_INSTALL_SERVER_DB', 'mysql');
        define ('_INSTALL_HOST_DB', 'localhost');
        define ('_INSTALL_USER_DB', 'plouf');
        define ('_INSTALL_PASS_DB', 'plouf');
        define ('_INSTALL_NAME_DB', 'grml');
        #define ('_INSTALL_TABLE_PREFIX', 'spip');
 
        define ('_SITES_ADMIN_MUTUALISATION', 'grml.eu');


        demarrer_site($site,
                array(
                        'creer_site' => true,  
                        'creer_base' => false,
                        'creer_user_base' => false,
                        'mail' => 'ben.spip@gmail.com',               
                        'code' => 'ecureuil',
                        'table_prefix' => true,     
                        'cookie_prefix' => true,   
                        'repertoire' => 'sites',     
                        'url_img_courtes' => true, 
                        'url_creer_base' => '' 
                )
        );

?>

On peut noter que pour scriibe, une base et un utilisateur mysql sont créés pour chaque site. Par contre sur GrmlEU, il n’y a qu’un user et qu’une seule base, avec un préfixe différent pour les tables de chaque site.

Notes

[1GrmlEU est un site qui permet d’essayer SPIP : vous pouvez créer un SPIP en quelques clics. Les sites sont effacés tous les mois

Discussion

50 discussions

  • 8

    Bonjour,

    J’ai testé cette procédure en local et tout fonctionne parfaitement. J’ai juste un soucis dans l’espace privé ou tout les styles ont sautés (affichage brute) sur l’ensemble des sites mutualisés. En revanche, coté publique cela fonctionne nickel.

    Est-ce que quelqu’un a déjà eu ce problème ? Une constante dans mes_options.php a définir ?

    J’ai vidé le dossier tmp, vider le cache, supprimer mes plugins, restauré la base de donnée mais rien n’y fait.

    J’utilise php 5.6.30 avec Spip 3.1.3

    Merci pour votre aide.

    • J’ai un peu avancé dans mon problème.

      C’est au moment de la création du dossier « plugins » que le problème arrive.

    • En faite, je crois que j’ai pas bien compris comment définir de nouveaux squelettes dans mes sites mutualisés (différent par site).

      Chacun de mes sites on des dossiers squelettes différents. J’ai donc mis pour chacun, un fichier mes_options.php dans leur dossier config avec des appellations de squelettes différents.

      $GLOBALS['dossier_squelettes'] = _DIR_SITE . 'squelettes' . _DIR_SITE . 'squelettes-01' . _DIR_SITE . 'squelettes-02';

      Mais il semblerait que cela soit faux... :(

    • Bonjour,

      Tu veux faire un squelettes par site ?

      Normalement /sites/site1.example.com/squelettes fonctionne.

    • Ben j’aimerais faire quelque chose du style :

      /site1/config/mes_options.php
      (squelettes, squelettes-abc, squelettes-def)

      /site2/config/mes_options.php
      (squelettes, squelettes-ghi, squelettes-jkl)

      /site3/config/mes_options.php
      (squelettes, squelettes-mno, squelettes-pqr)

      Mon code plus haut fonctionne mais il fait planté mon espace privé.

    • Et sans les _DIR_SITE ?

      L’idée est de proposer plusieurs squelettes par site ?

    • Cela ne marche pas non plus en enlevant les « _DIR_SITE ».

    • Si on se réfère à : http://www.spip.net/fr_article1825.html

      La syntaxe est

      <?php
          $GLOBALS['dossier_squelettes'] = 'mes_skel1:mes_skel2';
      ?>

      Donc la syntaxe serais plutôt :

      $GLOBALS['dossier_squelettes'] = _DIR_SITE.'squelette1:'._DIR_SITE.'squelette2';

      @chez moi ça marche,

      cela dit je ne vois pas trop l’intérêt ou le but, moi je m’en sert plutot pour faire de A/B test et passer rapidement d’un skel à un autre avec une ligne par skel et en commentant/dé-commentant.

      Bonne journée

    Répondre à ce message

  • Bonjour,

    J’ai pu configurer sans problème un SPIP 3.1 mutualisé avec 4 sous-domaines. Très intéressant cette méthode. Cependant, j’aurais deux questions :

    1. Est-ce que je peux avoir en commun un dossier « squelettes-all » pour tout mes sous-domaine et partager les mêmes ressources (css, js, img, formulaires, modèles, etc...) ?

    2. Dans ma configuration j’ai ces 4 sites ci-dessous :

    site1.example.com
    site2.exemple.com
    site3.exemple.com
    site4.exemple.com

    Mais quand au site principale : www.exemple.com, est-ce que je peux acquérir les informations de chaque sous-domaines ? Ou chacune des ces ressources sont distinctes.

    Merci, Julien.

    Répondre à ce message

  • Bonjour,
    Je viens de tester sous Spip 3.1 et la dernière version du plugin.
    Quand je crée un nouveau site, tout est parfaitement géré, sauf qu’à la fin il m’envoie vers http://www.example.com/ecrire/ecrire/?exec=install, donc un ecrire/ de trop dans l’url ...

    Répondre à ce message

  • 7

    Ce plugin est-il compatible avec la nouvelle version 3.1 ?

    • Bonsoir,

      Pas encore tester mais tu peux et nous dire si tu as des problèmes.

    • Merci, mais très honnêtement, j’ai plus de vingt sites mutualisés, je ne vois pas commenter tester avec un seul et voir si ça marche ou pas ! je préfère d’autres retours d’expériences que mon crash éventuel... :- !

    • Je te conseil de monter une mutu en 3.1 et modifier tes vhost pour tester.
      perso je passe pas encore en 3.1 car j’ai des plugins non compatible.

    • Ça tombe bien, moi aussi ;-) J’attendrai donc !

    • Bonjour,

      J’ai testé en local ce plugin avec SPIP 3.1 et j’ai des problèmes pour créer de nouveaux sites. A noter que tout fonctionnait parfaitement en 3.0 . Avec les sites déjà installés tout semble OK.

      Les fichiers connect.php et chmod.php ne sont pas créés dans config.

      Tout semble se passer bien jusqu’à la phase d’installation de SPIP c’est à dire :
      -  Activation avec un code OK
      -  Création du répertoire dans sites/ OK
      -  Création des répertoires config, IMG, local et tmp OK
      -  Création de la base de donnée (vide !) OK

      On arrive alors à l’écran indiquant : La base de donnée mu_mondomaine a été créée. Vous pouvez poursuivre l’installation de SPIP.

      On démarre la phase Installation du Système de publication... puis suivant... puis on reste bloqué sur Installation du système de publication à l’étape 1. Dans les logs de SPIP, on a : Pub : !INFO : spip_connect : fichier de connexion ’’ non trouve .

      A suivre !

    • Pour ma part, je suis passé en 3.1 dès juillet 2015. En mutu. Et j’ai créé plusieurs sites sans problème.

      Voici mon config/mes_options.php :

      require _DIR_RACINE.'mutualisation/mutualiser.php';
      
      $site = str_replace('www.', '', $_SERVER['HTTP_HOST']);
      $site = str_replace('ww2.', '', $site);
      $site = str_replace('ww3.', '', $site);
      
      define ('_INSTALL_SERVER_DB', 'mysql');
      define ('_INSTALL_HOST_DB', 'localhost');
      define ('_INSTALL_HOST_DB_LOCALNAME', 'localhost');
      define ('_INSTALL_USER_DB_ROOT', 'root');
      define ('_INSTALL_PASS_DB_ROOT', 'mot2passeroot');
      define ('_INSTALL_NAME_DB', 'mutu_'.prefixe_mutualisation($site));
      define ('_INSTALL_USER_DB', prefixe_mutualisation($site));
      define ('_INSTALL_TABLE_PREFIX', 'spip');
      
      demarrer_site($site,
      	array(
      		'creer_site' => true, 
      		'cookie_prefix' => false, 
      		'table_prefix' => false,
      		'creer_base' => true,
      		'creer_user_base' => true,
      		'code' => 'ecureuil',
      		'mail' => 'mutualisation@domaine.tld',
      		'annonce' => '<h3>SPIP 3.1</h3>',
      		)
      	);
      // Pour bloquer l'installation automatique des plugins
      define('_DIR_PLUGINS_AUTO', '');
      // Pas de log pour gagner en écritures
      #$GLOBALS['nombre_de_logs'] = 0;
      #$GLOBALS['taille_des_logs'] = 0;
      
      # Dans le cadre d'une mutualisation, l'affichage d'une nouvelle version de SPIP est inutile
      function genie_mise_a_jour($t) {
      	effacer_meta('info_maj_spip');
      	return 1;
      }
    • J’ai finalement entièrement réinstallé SPIP sans rien changé à mon fichier mes_options.php et ça marche !

      Désolé pour le bruit !

    Répondre à ce message

  • 2

    Bonjour,
    J’essaie d’installer la mutualisation sur Gandi Simple Hosting.
    J’avais réussi sur Gandi Serveurs, mais là je sèche.
    J’ai suivi la méthode indiquée ici : http://www.spip-contrib.net/La-mutualisation-facile-modifications-manuelles, avec le plugin Mutualisation, et le fichier mes_options.php dans /config/ + .htacess à la racine.
    J’ai mis les fichiers spip 2.1 dans un répertoire de vhosts, sans site spip installé.

    Seulement, quand je lance l’install pour un 1er site mutualisé (depuis un nom.domaine.tld dirigé vers le vhost où se trouve Spip, j’ai les formulaires d’installation de Spip standards (pas de mutualisation, pas de code d’activation ecureuil demandé).
    Que faire ?

    Peut-être qu’il faut avoir obligatoirement déjà installé un site spip standard avant d’en installer des mutualisés ?

    Merci pour toute piste utile.

    Voici mon mes_options.php (on dirait qu’il n’est pas pris en compte du tout ?) :

    <?php
    
    	/*
    	 * Inscrire ici le nom du site d'administration du tableau de bord
    	 * de la mutualisation (ou plusieurs, separes par des virgules)
    	 * (dans cet exemple, 'scriibe.net' est le top level domain, TLD)
    	 * pour autoriser tous les sites, ne pas definir la constante ;
    	 * Si le site maitre n'est pas dans sites/ mais a la racine, mettre ''
    	 * et ajouter 'mutualisation' dans $dossier_squelettes
    	 */
    	define ('_SITES_ADMIN_MUTUALISATION', 'nom.domaine.tld');
    
    	if (!defined("_ECRIRE_INC_VERSION")) return;
    	if (!is_readable (_DIR_RACINE.'mutualisation/mutualiser.php')) {
    		echo _L("Fichier 'mutualisation/mutualiser.php' manquant dans la racine " . _DIR_RACINE);
    		exit;
    	}
    	require _DIR_RACINE.'mutualisation/mutualiser.php';
    
    	/* placer dans ce tableau les sites ou l'on ne veut pas la redirection canonique */ 
    	$www = array();
    	
    	$site = str_replace('www.', '', $_SERVER['HTTP_HOST']);
    	if ($site != $_SERVER['HTTP_HOST'] AND !in_array($site, $www)) {
    		include_spip('inc/headers');
    		$req = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '/';
    		if (isset($_SERVER['HTTPS']) 
    		AND test_valeur_serveur($_SERVER['HTTPS']))
    			$protocole = 'https';
    		elseif (!isset($_SERVER["SCRIPT_URI"]) OR !($p = strpos($_SERVER["SCRIPT_URI"], '://')))
    			$protocole = 'http';
    		else $protocole = substr($_SERVER["SCRIPT_URI"],0,$p);
    		redirige_par_entete($protocole . '://' . $site . $req);
    	}
    
    	// Compatibilite avec le ":" de $dossier_squelettes
    	// Si l'url indique explicitement un port (grace a ":")
    	// tout eliminer s'il s'agit du port 80
    	// et remplacer ":" par _ pour les autres ports
    
    	if (strpos($site, ':')) {
    		if (preg_match('/:80$/', $site)) $site = substr($site,-3);
    		else $site = str_replace(':', '_', $site);
    	}
    
    	define ('_INSTALL_SITE_PREF', prefixe_mutualisation($site));
    	define ('_INSTALL_NAME_DB', 'mu_'. _INSTALL_SITE_PREF);
    
    	define ('_INSTALL_SERVER_DB', 'mysql'); 
    	define ('_INSTALL_HOST_DB', 'localhost'); 
    	define ('_INSTALL_USER_DB_ROOT', 'root');  
    	define ('_INSTALL_PASS_DB_ROOT', 'mon-mot-de-pass-root');
    	
    	/* mettre en commentaire la ligne suivante si vous utilisez l'option table_prefixe plus bas dans la config */ 
    	define ('_INSTALL_TABLE_PREFIX', 'spip');
    
    	/* 
    	 * Si le nom du serveur est different du nom dns, 
    	 * ca peut parfois poser probleme
    	 * il faut alors le definir ici
    	 */
    	# define ('_INSTALL_HOST_DB_LOCALNAME', 'nom_serveur');
    	
    	/* 
    	 * Si le serveur n'est pas mysql, il faut le preciser obligatoirement.
    	 * # define ('_INSTALL_SERVER_DB', 'pg'); // mysql|pg|sqlite2|sqlite3
    	 * 
    	 * /!\ En PG, il est conseille d'utiliser la creation d'utilisateur SQL
    	 */
    	
    	/*
    	 * Creer automatiquement les users SQL (pg|mysql)
    	 * 
    	 * Cela permet 
    	 * - d'avoir un utilisateur root possedant les droits 
    	 * de creation de bases (cet utilisateur possedant obligatoirement 
    	 * une base a son nom en PG - PG ne se connecte pas sans donner un nom de bdd)
    	 * - de creer des utilisateurs sql automatiquement 
    	 * ne possedant que les droits d'administation 
    	 * de leur base de donnee qui sera creee
    	 * 
    	 * Il faut remplacer alors 
    	 * _INSTALL_(USER|PASS)_DB par _INSTALL_(USER|PASS)_DB_ROOT
    	 * 
    	 * et ajouter dans demarrer_site l'option
    	 * 'creer_user_base' => true
    	 */ 
    	# define ('_INSTALL_USER_DB_ROOT', 'mon_root');
    	# define ('_INSTALL_PASS_DB_ROOT', '********');
     
    	/*
    	 * Creer les bases de donnees via un ping sur une URL (methode AlternC)
    	 *
    	 * Il suffit de renseigner l'option url_creer_base, en lui passant les bons parametres :
    	 * 'url_creer_base' => 'https://bureau.tld/admin/sql_doadd.php?username=USER&password=PASS&dbn='.prefixe_mutualisation($site)
    	 */
    	 
    	 
    	/*
    	 * Transformer sur les pages publiques les url des images
    	 * /sites/mon_site/IMG/* -> /IMG/*
    	 * /sites/mon_site/local/* -> /local/*
    	 * 
    	 * - Necessite le mod_rewrite (reecriture d'url) d'apache
    	 * - Ne fonctionne qu'avec des mutualisations de nom de domaine 
    	 * ('http_host' : http://mon_site_mutu.tld)
    	 * (donc pas avec une mutualisation de repertoire - http://site/mon_spip_mutu/)
    	 * 
    	 * et ajouter dans demarrer_site l'option
    	 * 'url_img_courtes' => true
    	 * 
    	 * Il est possible de regenerer les fichiers .htaccess 
    	 * crees automatiquement dans /IMG et /local
    	 * grace a ?var_mode=creer_htaccess_img
    	 * 
    	 */
    	
    	demarrer_site($site,
    		array(
    			'creer_site' => true,        // Creer ou non le site s'il n'existe pas (defaut: false) 
    			'creer_base' => true,        // Creer ou non la base de donnee si elle n'existe pas (false) 
    			'creer_user_base' => true,  // Creer ou non un utilisateur pour la nouvelle base de donnee (false)
    			'mail' => '',                // Adresse mail pour recevoir un mail lors d'une creation de site mutualise ('') 
    			'code' => 'activation',        // Code d'activation ('actvation') pour tentative VHOST spip
    			'table_prefix' => false,     // Definir automatiquement le prefixe de table (false) ... mettre true si tous les sites dans la meme base 
    			'cookie_prefix' => true,     // Definir automatiquement le prefixe de cookie (false)
    			'repertoire' => 'sites',     // Nom du repertoire contenant les sites mutualises ('sites')
    			'url_img_courtes' => true,   // Utiliser la redirection des URL d'images courtes dans la partie publique (false)
    										 // /!\ il faut qu'apache ait le droit d'ecrire dans les dossiers IMG/ et local/ a la racine du site !
    										 // C'est la que la mutualisation va ecrire les regles de redirection automatiques pour les images de chaque site
    			# 'utiliser_panel' => false, // Utiliser une table externe pour recuperer des identifiants ... (code, user, pass) permettant a un utilisateur d'installer le site (false) 
    			# 'annonce' => '<p>Un service propos&eacute; par <a href="http://www.spip.net/">la communaut&eacute; SPIP</a></p>', // Texte a afficher en bas du formulaire d'activation de la mutualisation
    			'url_creer_base' => ''       // Creer la base de donnees via une URL (methode AlternC)
    		)
    	);
    
    ?>
    • Bon, finalement, ça a marché !, avec ce même fichier mes_options.php
      en repartant à zéro sur un autre espace vhost, pourtant les réglages sont les mêmes
      Pas compris pourquoi avant ça ne marchait pas, bizarre...

      Conclusion, la mutualisation spip (2.1 en l’occurence) peut fonctionner sur Gandi Simple Hosting, si ça peut servir à d’autres...

    • Bonjour,
      Malgré les indications précédentes, je n’arrive pas à installer une mutualisation spip 3 sur Gandi Simple Hosting... Est-il possible de contourner le réglage des fichiers VirtualHost ? (etc/apache2/sites-available/ n’est pas accessible). Je serais curieux de savoir ce que DM a ajouté dans son .htaccess.
      Merci d’avance pour votre aide,
      Sébastien

    Répondre à ce message

  • 9

    Bonjour,
    je rencontre un problème avec les sites de ma ferme. Les images des squelettes des sites ne s’affichent pas avec la nomenclature classique : « squelettes/img/image.jpg ».
    Je suis obligé d’utiliser celle-ci : « sites/nomdusite/squelettes/img/image.jpg ».
    Ce qui est très embêtant lorsque je dois mettre un site en production sur un serveur client. Comment faire pour changer ce fonctionnement ?

    Merci par avance.

    • Bonjour, vous pouvez donnez le fichier mes_options ?

    • Bonsoir Pierre,
      le fichier mes_option.php à la racine dans le dossier config contient ce code :

      <?php
      define ('_SITES_ADMIN_MUTUALISATION', '');
      
      if (!defined("_ECRIRE_INC_VERSION")) return;
      if (!is_readable (_DIR_RACINE.'mutualisation/mutualiser.php')) {
      echo _L("Fichier 'mutualisation/mutualiser.php' manquant dans la racine " . _DIR_RACINE);
      exit;
      }
      require _DIR_RACINE.'mutualisation/mutualiser.php';
      
      $www = array();
      	
      $site = str_replace('www.', '', $_SERVER['HTTP_HOST']);
      if ($site != $_SERVER['HTTP_HOST'] AND !in_array($site, $www)) {
      include_spip('inc/headers');
      $req = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '/';
      if (isset($_SERVER['HTTPS']) 
      AND test_valeur_serveur($_SERVER['HTTPS']))
      $protocole = 'https';
      elseif (!isset($_SERVER["SCRIPT_URI"]) OR !($p = strpos($_SERVER["SCRIPT_URI"], '://')))
      $protocole = 'http';
      else $protocole = substr($_SERVER["SCRIPT_URI"],0,$p);
      redirige_par_entete($protocole . '://' . $site . $req);
      }
      
      if (strpos($site, ':')) {
      if (preg_match('/:80$/', $site)) $site = substr($site,-3);
      else $site = str_replace(':', '_', $site);
      }
      
      define ('_INSTALL_PREFIX_DB','mu_');
      define ('_INSTALL_SITE_PREF', prefixe_mutualisation($site));
      define ('_INSTALL_NAME_DB', _INSTALL_PREFIX_DB. _INSTALL_SITE_PREF);
      
      define ('_INSTALL_SERVER_DB', 'mysql'); 
      define ('_INSTALL_HOST_DB', 'localhost'); 
      define ('_INSTALL_USER_DB', 'root');  
      define ('_INSTALL_PASS_DB', 'root'); 
      	
      define ('_INSTALL_TABLE_PREFIX', 'spip');
      	
      demarrer_site($site,
      array(
      'creer_site' => true,  
      'creer_base' => true,       
      'creer_user_base' => false, 
      'mail' => '',  
      'code' => 'ecureuil',
      'table_prefix' => false,
      'cookie_prefix' => true,  
      'repertoire' => 'sites',  
      'url_img_courtes' => true, 
      'url_creer_base' => '' 
      )
      );
      ?>

      Je pensais que ça pouvait venir d’une mauvaise configuration de Mamp mais sur serveur OVH il y a le même problème. Le problème concerne uniquement les images référencées dans les squelettes, les images du back-office s’affichent normalement.

      Merci par avance.
      Mathieu.

    • Comment tu appels les images sur le site ?

    • Classique : <img src="squelettes/img/image.jpg" alt="" />

    • Euh utilise #CHEMIN alors

    • Malheureusement ça ne donne rien.

    • Tu fait comment exactement ?
      </code

    • <img src="#CHEMIN{img/image.jpg}" alt="" />

    • Yes merci ça marche, je faisais <img src="#CHEMIN{squelettes/img/image.jpg}" alt="" />

      Merci encore.

    Répondre à ce message

  • 2

    Bonjour, J’ai 16 sites SPIP mutualisés en 3.0.16. Jusque là je n’ai eu aucun problème non résolu mais là... Le code d’activation ne fonctionne plus pour le 17e site ! Le pire c’est que je l’ai noté quelque part et donc c’est ce code que je rentre mais j’ai toujours « Erreur » qui s’affiche. Mystère très ennuyeux...
    Où puis-je trouver le code ? J’ai fait une première recherche dans chmod.php sans succès.
    Merci d’avance.
    Philippe G.

    • Honte sur moi, le code est dans mes_options.php (en plus c’est moi qui l’ai mis). Par contre il ne marche plus ! !! :-(

    • Bonjour,
      Je vois un caractère  sur la capture, c’est pas logique déjà.

    Répondre à ce message

  • 18

    Bonjour,

    J’ai un soucis avec les plugins sur un spip3 mutualisé.
    Dès que je mets à jour un plugin sur le noyau mutualisé et que je repasse sur chacun des sites, le plugin mis à jour ne se réactive pas... je suis obligé de les réactiver un par un manuellement.
    Dans spip2 ca fonctionnais correctement, un plugin mis a jour dans la mutualisation était automatiquement mis à jour et activé dans les sites mutualisés.

    Help, c’est hyper pénible !

    • Bonjour

      Tu as une dépendance par hasard qui s’active en même temps ?
      Comment mets tu à jour ?

    • Je mets a jour les plugins dans la mutualisation / gestion des plugins quand elle est signalée.
      Mes plugins sont dans plugins/auto/
      Pas de problèmes de dépendances, même une mise à jour mineure (3.1.1 à 3.1.12 par exemple) n’est pas réactivée automatiquement. J’ai testé sur tous les plugins de ma mutualisation (50 au moins), ca ne marche jamais (CFG, Couteau suisse, Court cirtuit, barre typo, etc...) je dois réactiver 1 par 1.

    • Je réactive le sujet car il semble que ce soit un souci récurrent cette histoire de désagréments constatés mise à jour de plugin dans le cadre d’une mutualisation...
      Quelqu’un pourrait-il faire un point là-dessus et donner la bonne méthode pour effectuer les mises à jour sans que « ça casse » ?

    • pierrot

      Je constate le même problème et pour l’instant j’envisage de basculer sur un dossier plugins par site au lieu d’un dossier plugins central pour éviter ce problème.
      Mais je rencontre un problème avec le plugin Saisies (enfin pas forcément avec ce plugin mais c’est ce plugin qui semble le révéler), je le décrit ici :

      http://contrib.spip.net/Saisies?debut_comments-list=-1#forum470211

      P.

    • Même problème (spip 3.0.14) chez moi.
      Seul le site d’où la mise à jour du plugin se fait reste activé. Le plugin se désactive sur les autres sites, et du coup peut générer des erreurs sur le site public, etc.
      Parfois (dans le cas je crois des mises à jour Saisies et/ou Couteau Suisse), j’ai été obligé de vider le cache pour me sortir des pages publiques blanches qui ont suivies ce genre d’erreurs.
      (le problème est le même qu’une mise à jour soit lancée depuis la page plugin de l’admin ou depuis la page « mise à jour auto » du Couteau Suisse)

      Donc, peut-être que je vais devoir faire comme Pierrot, un dossier plugin par site, au moins pour les sites les plus importants. Mais c’est ennuyeux car on perd un des intérêts de la mutualisation du noyau...

    • Non ! Il faut garder la mutualisation car sinon, effectivement on perd l’intérêt du truc.
      Le souci rencontré est dû au fonctionnement de SVP qui « nomme » les dossiers.Lors d’une mise à jour, le nom du dossier change, et du coup, paf, les plugins des autres sites se désactivent. Normal.
      La solution consiste à faire les mises à jour sans passer par SVP.
      Soit tu mets à jour par SVN
      Soit tu fais la mise à jour par FTP : le nom du dossier ne changeant pas (seuls les fichiers contenus sont modifiés) et rien ne se désactivera.

    • Pour ma part j’ai essayé ceci :

      http://contrib.spip.net/Et-si-on-automatisait-tout-ca

      Vers le bas, Gestion des plugins et suggestions de modifs du plugin SVP pour que la mise à jour de plugins conserve les versions précédentes et ainsi ne désactive rien dans les autres sites de la ferme. Il faut ensuite bien sûr passer sur chaque site pour activer les nouveaux plugins si on souhaite les mettre à jour.

    • Ok Manu, merci pour le truc.
      Par ftp, je sais faire, ce n’est pas très pratique, mais c’est mieux que de devoir réactiver les plugins sur chaque site.
      Par SVN, je ne sais pas bien faire. Il faut un accès ssh pour le faire direct sur l’espace d’hébergement des sites c’est ça ? Pas sûr que ça marche sur mon hébergeur Gandi Simple Hosting...

      J’imagine que je peux gérer un dossier des plugins sur mon disque dur mis à jour par SVN ?, et envoyer ça par FTP ensuite (en gardant les mêmes noms des dossiers des plugins)
      Dans ce cas, il vaut mieux sortir les plugins du site du dossier « auto » non ?

      Pour les solutions de Pierrot, ça parait trop compliqué pour mo !, ça a l’air intéressant, mais j’attendrai une version ad hoc du plugin Mutualisation. En tout cas, merci, là je comprends mieux pourquoi ça plante actuellement.
      D’autant que je n’ai pas de sites Maître/esclaves, ils sont tous au même niveau a priori.

      -  Idée : Pour l’avenir, un truc qui serait top, c’est que la page admin (plugins actifs ou inactifs) des plugins dans Spip puisse afficher la liste des sites web qui utilisent chaque plugin, pour mieux s’y retrouver.

    • Si on ne peut pas utiliser SVP pour faire la mise a jour (c’est presque aussi dommage de pas pouvoir mutualiser ses mises a jour ;-), il faut peut-etre revenir au systeme précédent :
      avant, en SPIP2 (et meme au debut de SPIP 3 par habitude), j’utilisais une lame du couteau suisse pour identifier et lancer les mises a jour..... http://contrib.spip.net/Mise-a-jour-automatique-des-plugins

      Mais, ne l’ayant pas appliqué sur des mutualisations, je n’ai pas vérifié le fonctionnement en détail sur le point évoqué.... l’un d’entre vous peut-il essayer ? et transmettre son résultat...

      Cdlt
      @+

    • DavidM : - Idée : Pour l’avenir, un truc qui serait top, c’est que la page admin (plugins actifs ou inactifs) des plugins dans Spip puisse afficher la liste des sites web qui utilisent chaque plugin, pour mieux s’y retrouver.
      => tu as cela sur la page exec=mutualisation, disponible dans le site maitre uniquement.

    • @YannX, j’ai testé la mise à jour auto par la lame Couteau Suisse, pour le plugin Saisies ça a désactivé pareillement les plugins sur les autres sites.
      Donc a priori ça ne marche pas mieux que SVP de spip 3...

    • @ Pierre, je croyais qu’il n’y avait plus de site Maître dans cette configuration ? C’est le site où est installé les fichiers spip communs ? Je ne l’ai pas créé celui-ci (j’utilise 7 sites mutualisés, dont 4 en production).

    • Euh perso j’en indique 1 dans le fichier de configuration du plugins afin de limiter qui utilise cette page.

    • Pardon, je n’avais pas regardé ça attentivement. Du coup, j’avais mal compris et mis un site non actif (celui avec Spip) dans le code         define ('_SITES_ADMIN_MUTUALISATION', 'monsite.tld'); de mes_options.php

      Là j’ai mis un site actif à la place, et j’ai effectivement une liste utile avec ecrire/ ?exec=mutualisation, merci !

    • J’ai testé pour un plugin le fait de l’avoir dans un dossier « plugins » pour un seul site mutualisé :

      Il faut mettre un code dans le fichier mes_options.php du site concerné :
      // code pour que le dossier plugins/auto du site concerné soit prix en compte en plus du dossier plugins/auto de l’install spip mutualisée qui est à la racine :

      define('_DIR_PLUGINS_SUPPL',_DIR_RACINE.'sites/monsite.tld/plugins/');

      En mettant ce code (remplacer monsite.tld par le bon nom de site), le plugin test apparaît bien sur le site concerné (il faut juste le réactiver après son déplacement d’un dossier à l’autre), et la mise à jour ensuite est ok.

      Comme ça je peux mettre à jour les plugins de chaque site séparément, en évitant les plantages dues aux mises à jour qui ne sont pas suivies par les autres sites (problème SVP indiqué ci-dessus).
      Accessoirement, ça permet de tester une màj plugin sur un seul site.

    • Pierrot

      Bonjour,

      J’ai évoqué cette solution mais elle me pose (en tous cas me posait) des pbms évoqués ici :

      http://contrib.spip.net/Saisies?debut_comments-list=-1#forum470211

      Certains plugins semblent buguer sur cette solution, peut-être n’utilisez-vous pas ces plugins ou peut être qu’un bug a été corrigé. Pour ma part j’ai fini par peu à peu abandonner ces mutualisations qui me posaient plus de soucis que de gains, chaque mise à jour était un sac de noeuds, la modif de SVP était à surveiller ... bref j’ai re-séparé mes installations et c’est beaucoup plus zen (j’avais 3 fermes avec environ 25 sites).

    • Après quelques essais supplémentaires, je me suis rendu compte que le système décrit ci-dessus n’est pas terrible. En fait, si on met les plugins de chaque site dans « auto », avec une mise à jour du plugin la nouvelle version du plugin se remet dans le dossier plugins du spip mutualisé, c’est retour à la case départ.

      Finalement, j’ai laissé tel quel (les plugins mutualisés pour tous les sites), c’est encore le moins compliqué, et je met à jour les plugins un par un depuis un site, avec ensuite réactivation du plugin sur chacun des autres sites.
      En attendant une solution intégrée, je ferai donc les mises à jour moins souvent.

    • @ Pierrot : Récemment (sur spip 3.0.14), je n’ai pas eu de problème avec la mise à jour de Saisies. Faut juste le réactiver sur tous les sites.... comme pour les autres plugins. Perso j’ai 7-8 sites, donc 5 seulement sont publics, donc c’est gérable.

      Sinon, comme disait je crois Pierrot sur un autre fil, peut-être que pour la méthode que j’ai testée (http://contrib.spip.net/Ferme-a-SPIP#forum475819, ci-dessus) marche pour les mises à jour, il faudrait supprimer le dossier plugins du site mutualisé ? (pour éviter que Spip ne remette les plugins dedans lors d’une mise jour de plugin)
      Mais je ne testerai pas, pas le temps. Je préfère rester comme ça et attendre une vraie solution qui permette de vraiment mutualiser les plugins efficacement en plus de spip.

    Répondre à ce message

  • 1

    Bonjour,

    J’ai passé la matinée pour réussir à monter une ferme, je pense avoir à peu près tout compris, même si certaines zones restent un peu obscures pour moi.

    Je pense que la partie configuration du fichier mes_options mériterait quelques informations supplémentaires car il y a plusieurs façons de travailler (il suffit de voir les deux exemples qui sont différents)
    Particulièrement le paramétrage de la variable de SITE_ADMIN ... parfois blanc, parfois pas ... comment cela marche exactement m’échappe.

    Ce que je sais uniquement c’est qu’en le remplissant et en essayant de configurer un site qui n’était pas le même que la dedans, ça plantait ...

    Bon mes questions sont les suivantes :

    La doc du wiki indique que le site « principal » n’est pas accessible. Moi je me suis inspiré du fichier de scriibe.net et l’ai configuré pour créer mon premier site. La procédure a été jusqu’au bout.
    Initialement j’ai créé le spip à l’adresse « fermeaspip.e-delmotte.com », installation sans soucis, j’ai ajouté tout un jeu de plugins à l’intérieur, les ai activé, puis suis passé à la suite ...

    Question 1 :
    -  si je tape aujourd’hui « fermeaspip.e-delmotte.com » j’arrive sur une page avec erreur de squelettes, à priori autour de z ... pourquoi mon domaine est joignable ? Je pensais arriver sur un dashboard particulier.
    Si tel n’est pas le cas, à quoi sert cette adresse ? Comment accede t on a « l’administration de la mutualisation » comme on en parle dans le wiki ?

    Question 2 :
    -  quand j’ai installé le second site, il avait tous les plugins ... mais inactifs, c’est le comportement attendu ? On active les plugins qui nous intéresse en fonction des sites ?

    Question 3 :
    -  on peut installer des plugins depuis n’importe quel site et ils sont mis à disposition de tout le monde ?

    Merci d’avance

    Répondre à ce message

  • Bonjour,

    Depuis la mise en place du pluggin (spip 3) je n’arrive plus à lire mes fichiers pdf (plugin pdf.js) -> spip.php ?page=pdfjs&id_document=x..
    Dans le fichier sip.log j’ai le message d’erreur ci dessous :
    :Pri:ERREUR : fonction execute_pipeline_renseigner_document absente : pipeline desactive

    Auriez vous déjà rencontré ce genre de problème ?

    Cordialement,
    Arielle.

    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 :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom