Mercredi 1er octobre 2008 — Dernier ajout dimanche 7 septembre 2014

Mutualisation SPIP sur OVH

Avec les hébergement 90 Plan, 240 Plan, 720 Plan…

Un seul code source de SPIP pour plusieurs sites différents sur un hébergement mutualisés (à bas prix) sur OVH.

Problématique : un nom de domaine avec le souhait d’avoir plusieurs site différents partageant le même code de SPIP dans des sous domaines.

Travail préparatoire :

Configuration de l’hébergement

Les fichiers de SPIP mutualisé

Il s’agit de placer sur l’hébergement :

  • SPIP 2 [1]
  • Le faux plugin Mutualisation au même niveau que SPIP dans le dossier mutualisation/
  • De créer un dossier sites/ au même niveau que les autres
  • De créer un dossier plugins/ lui aussi à la racine du site SPIP
  • De mettre en place le fichier config/mes_options.php permettant de mutualiser SPIP
Les dossiers du site mutualisé
Les dossiers du site mutualisé

Arborescence fichiers SPIP mutualisé

Contenu du fichier config/mes_options.php

<?php
require _DIR_RACINE.'mutualisation/mutualiser.php';

$site = str_replace('www.', '', $_SERVER['HTTP_HOST']);
$site = str_replace('ww2.', '', $site);

demarrer_site($site,
        array(
                'creer_site' => true,
                'cookie_prefix' => false,
                'table_prefix' => false,
                'creer_base' => false,
                'creer_user_base' => false,
                'code' => 'ecureuil',
                'mail' => 'mutualisation@pyrat.net'
                )
        );

#$GLOBALS['type_urls'] = 'propres2';
include_spip('inc/vieilles_defs'); // Nécessaire pour les vieux plugins
define('_ID_WEBMESTRES', '1:2:3:4'); // Pour que les premiers auteurs soient aussi des Webmestre (accès à la config de SoyezCreateurs)
?>

Les lignes :

$site = str_replace('www.', '', $_SERVER['HTTP_HOST']);
$site = str_replace('ww2.', '', $site);

permettent de considérer que www.nomdedomaine.tld et ww2.nomdedomaine.tld sont un seul et même site (équivalent à nomdedomaine.tld seul).

Le mail est bien sûr à changer pour que ce soit vous qui soyez prévenus lorsqu’il y a une installation.

Contrairement à un hébergement dédié, nous ne pouvons pas demander au script de mutualisation de créer la base de données.

Du coup, il va falloir passer par le pannel d’administration d’OVH pour créer :

  • l’entrée de nom de domaine en la faisant pointer sur la racine de SPIP mutualisé.
  • la base de données à utiliser : une par site mutualisé [2].

Configuration des domaines dans le pannel OVH

Mise en place de sous domaines
Mise en place de sous domaines

Il s’agit de déclarer un sous domaine par site, en indiquant que chaque sous domaine pointe vers le dossier physique de l’hébergement où se trouve la racine du code source mutualisé de SPIP.

Dans cet exemple, il s’agit de /web/spip/sites

Il faut aussi créer une base de données par site à héberger.

Bases de données SPIP mutualisé
Bases de données SPIP mutualisé

Ne pas oublier de mettre un mot de passe à chaque base : il servira au moment de l’installation des sites. Dans ce tableau, il faut aussi noter le nom de la base et le nom du serveur (ici : mysql5-40).

Installation d’un site mutualisé

En laissant à OVH de propager les modifications (création du sous domaine et création et mot de passe de la base de données), il suffit ensuite de se rendre à l’adresse du sous domaine dans votre navigateur : http://sousdomaine.domaine.tld/

Vous avez alors la mire d’installation de la mutualisation de SPIP.

Installation SPIP mutualisé : code d'activation
Installation SPIP mutualisé : code d’activation

Le code est renseigné dans le fichier config/mes_options.php : ici, c’est ecureuil.

La suite est du type assistant avec des questions à cliquer (un seul choix).

Enfin, on arrive dans une installation classique de SPIP où renseigner les informations de connexion à la base et le compte administrateur.

Plugins et squelettes ?

Les plugins vont être communs à tous les sites. Plus exactement, c’est la liste des plugins disponibles qui sera commune. Chaque site sera libre d’activer les plugins qu’il choisira dans cette liste.

Squelettes

Les squelettes sont à placer dans le sous dossier de sites qui a été créé automatiquement par la mutualisation : racineSPIP/sites/nomdedomaine/squelettes/

Arborescence fichiers SPIP mutualisé
Arborescence fichiers SPIP mutualisé

S’il y a un mes_options spécifique au site, il doit être placé dans le dossier racineSPIP/sites/nomdedomaine/config/.

Attention, les globales doivent être déclarée explicitement comme telles.

Donc, il ne faut pas écrire : $type_urls = 'propres2'; mais $GLOBALS['type_urls'] = 'propres2';

[1Un article parle de la mutualisation de SPIP 3 chez OVH.

[2Il est fortement déconseillé sur OVH de placer plusieurs SPIP sur la même base, OVH limitant, et le nombre de connexions simultanées, et la taille des bases.

Vos réactions

  • Mutualisation SPIP 3 sur OVH en 2012 6 octobre 2012 17:36, par Régis

    Bonjour, Je me rends compte que cet article date un petit peu (ainsi que les dernières réactions), mais il correspond exactement à ce que je souhaiterais tenter de réaliser avec SPIP 3 sur du OVH mutualisé en cette fin 2012.

    Plusieurs questions :

    • Le plugin mutualisation existe toujours (http://contrib.spip.net/Ferme-a-SPIP). Est-il possible de l’utliser dans le cadre que vous décrivez sur cette page ?
      A quoi correspond au début de votre article « faux plugin Mutualisation » (pourquoi faux ?) ? Est-ce le plugin mutualisation que vous avez adapté en 2008 pour son utlisation spécifique sur du OVH mutualisé ?
      J’imagine que dans ce cas, il serait obsolète pour une utilisation avec SPIP 3 ?
    • Vous n’abordez pas le point des Virtual Host dans le cas de serveurs mutualisés de OVH ?
      Je me doute bien que sur du OVH mutualisé, il ne sera pas possible de manipuler directement la configuration du serveur Apache, mais est-il possible d’envisager la redirection d’un domaine externe vers un sous-dossier de SPIP mutualisé de façon transparent (URL Rewriting et URL propres compris) ?
      Ex : Mon site mutualisé est concrètement localisé à l’adresse monsite01.monserveur.com, mais le visiteur ne devra voir que www.monsite01.fr.
      Est-il nécessaire de souscrire un service multi-domaines chez OVH pour cela ? Comment cela se passe-t-il si un client possède déjà son nom de domaine (compte propre) mais souhaite être hébergé chez moi ?

    Merci de m’avoir lu, et merci pour votre page !

    • Mutualisation SPIP 3 sur OVH en 2012 6 octobre 2012 22:44, par Jacques Pyrat

      Bonjour,

      Le plugin de mutualisation facile est un « faux plugin » parce qu’il ne s’installe pas comme un plugin, mais via /config/mes_options.php

      Pas la peine de toucher au .htaccess puisque c’est les DNS qui pointent tous au même endroit.

      PS : utiliser la mutualisation de SPIP hors d’un serveur dédié, c’est un peu comme pédaler à 2 sur un vélo prévu pour une personne.

  • fdm 27 décembre 2009 11:57

    Bonjour,

    J’ai un peu de mal avec la mutualisation.

    1. Elle m’impose de recréer le site principal dans le dossier sites.
    2. lors de la création d’un deuxième site, au lieu d’entamer la procédure, on pointe bêtement sur le dossier site.

    Je pense avoir suivi correctement a procédure :

    • .htaccess avec un RewriteBase /
    • plugin mutualisation à la racine
    • mes_options dans le dossier ecrire à la racine

    Merci pour l’aide

    • Mutualisation SPIP sur OVH 27 décembre 2009 18:52, par Jacques PYRAT

      Pour ma part, je n’ai jamais étudié la possibilité de faire la mutualisation avec des sous-dossier, uniquement des sous-domaines.

      D’autre part, avec la mutualisation, il n’y a pas de notion de site principal (hormis pour l’accès à la page du tableau de bord de la mutualisation).

  • bruno 22 septembre 2009 16:36

    Bonjour, merci pour ce travail. Je suis hébergé chez OVH J’ai N sites avec une base unique(chaque site ayant un ensemble de rubrique et d’articles commun) (donc pas de sous domaine) Je compte organisé chaque site dans un répertoire (il ne semble pas possible de faire pointer une adresse www.xxx.fr vers un fichier.)

    Est-il possible d’utiliser cette méthode ? Par avance merci.

    Bruno

  • Mutualisation SPIP sur ---OVH---Bluehost 21 juillet 2009 17:33, par viorel

    Bonjour,

    Merçi pour ce très bon tuto qui m’a été de très grand aide. Pour moi ça marche sur un hénergement chez Bluehost. Exemple : gir.asso.fr

  • eM 27 février 2009 10:36

    Bonjour,

    Je parviens à appliquer cette méthode pour les sous-domaines, mais non pour le domaine principal (J’ai installé spip et le plugin mutualisation dans le dossier www/ et non dans un sous-dossier puisqu’OVH ne permet pas de faire pointer le domaine principal vers un sous dossier de www/).
    J’obtiens une « Redirection de page incorrecte » sur le domaine principal (www.domaine.tld) par contre l’installation des sites mutualisés sur les sous-domaines (sdom.domaine.tld) se passe bien…

    Etes-vous parvenu à mutualiser le domaine principal en même temps que les sous-domaines ?

    Merci d’avance

    • Mutualisation SPIP sur OVH 27 février 2009 10:40, par Jacques PYRAT

      Sur OVH, je n’ai pas essayé. Mais sur l’hébergement que je propose (bientôt), cela marche très très bien.

      www. n’est après tout qu’un sous domaine comme un autre.

  • Frannie 4 décembre 2008 18:32

    Bonjour,

    J’ai un hébergement 90plan chez OVH pour un site en 2 langues, avec 1 nom de domaine différent pour chaque langue. L’idée de la mutualisation se rapproche de ce que je veux réaliser, sauf que je n’ai pas besoin de 2 bases, vu que les articles et rubriques d’un des sites correspondront à ceux de l’autre, dans une autre langue et que spip gère cela. En fait j’aurais besoin d’une astuce qui permette au visiteur anglais de voir le site en anglais sur le nom de domaine anglais et même chose pour le français. Avez-vous un début de réponse pour moi ? Merci beaucoup pour votre aide.

    • Mutualisation DNS Fr/Gb sur OVH 23 janvier 2009 18:49, par Pascal-JPM

      Voui, j’ai déjà mis ça sur l’un de nos sites clients.

      Voici le code :

      <?php
      $domaineFR = "www.ton-dsn.fr";
      $domaineCOM = "www.ton-dns.com";
      $domainecourant = $_SERVER['HTTP_HOST'] ;
      $lurl = $_SERVER['REQUEST_URI'] ;
      ?>
      <BOUCLE_redirect(RUBRIQUES) {id_rubrique}>
      <?php
      $secteurlangue = #ID_SECTEUR ;
      If (($secteurlangue == 2) && ($domainecourant <> $domaineCOM)){
                      $theurl = "http://".$domaineCOM.$lurl;
                      header("Status: 301 Moved Permanently", false, 301);
                      header("Location: $theurl");
                      exit();
      }
      If (($secteurlangue == 1) && ($domainecourant <> $domaineFR)){
                      $theurl = "http://".$domaineFR.$lurl;
                      header("Status: 301 Moved Permanently", false, 301);
                      header("Location: $theurl");
                      exit();
      }       
      ?>
      </BOUCLE_redirect>

      En espérant que cela t’aide…

      • Mutualisation DNS Fr/Gb sur OVH 30 janvier 2010 00:15, par Nico

        Bonjour,

        Je suis intéresse par ce bout de code, mais il est à mettre ou ? dans mes options.php ?

        Merci du renseignement…