Gérer beaucoup de sites SPIP en local sous MacOsX

mercredi 11 janvier 2012, mise à jour lundi 31 août 2015, par Maïeul
Suivre la vie du site RSS 2.0 Forum

Cet article ne s’adresse pas aux SPIPeurs débutants qui souhaiteraient créer un site web en local sous Mac. Un article existe déjà sur le sujet. Non, cet article s’adresse aux personnes qui souhaitent gérer beaucoup de site web en local en n’ayant qu’une installation de SPIP par version, autrement dit en mutualisant le noyau de SPIP.

J’y détaille ma pratique, que j’utilise depuis trois ans, donc que j’estime mûre.

Principe

Je développe en local 30 sites. Chaque site que je développe possède une adresse réelle, par exemple http://maieul.net [1], correspondant à la version cours de production, et une adresse locale, correspondante à la version en cours de développement.

Par principe, chaque adresse d’un site local termine par .dev. Par exemple maieul.dev, geek.dev, maman.dev etc. Pourquoi .dev ? Parce que cette extension n’existe pas, donc je suis certain que lorsque j’utilise .dev je suis en version locale.

Je vais dire à mon ordinateur, via la modification d’un fichier caché, d’orienter mes adresses en .dev vers l’IP 127.0.0.1, autrement dit vers mon propre ordinateur.

Conséquent : lorsque dans mon navigateur je frapperais http://maieul.dev, celui-ci me redirigera vers 127.0.0.1. Là, mon serveur local, MAMP, me renverra vers mon SPIP, que j’aurais organisé selon le principe de la mutualisation facile, c’est à dire à que j’aurais réglé pour avoir un seul noyau SPIP pour plusieurs sites (par exemple maman.dev, papa.dev etc.)

Par ailleurs, un site fera exception localhost : ce site sert de brouillon pour toutes les expériences.

De plus, je souhaite pouvoir disposer de différentes branches de SPIP : je souhaite pouvoir orienter vers la branche 2.0.z ou vers la branche 2.1.z ou vers la branche 3.0.z selon le cas. En revanche, je souhaite pouvoir facilement mettre à jour une branche.

Je vais donc créer un dossier par branches, avec dans chaque dossier une mutualisation. Je configurerais mon serveur Apache local (installé via MAMP) pour qu’il me renvoi sur l’un ou l’autre des dossiers selon l’URL du site.

Bon, tout ceci c’était la théorie, passons à la pratique.

Cette pratique nécessite d’utiliser les Terminal, pour frapper quelques commandes.

Préparer les versions de SPIP

Dans le terminal, rendons-nous dans le dossier sites du répertoire de départ :

cd ~/sites

Puis récupérons les dernieres versions stables des différentes branches de SPIP. Ces versions sont situées dans le dossier tags du serveur SVN de SPIP.

svn co svn://trac.rezo.net/spip/tags/spip-2.0.9 SPIP 20
svn co svn://trac.rezo.net/spip/tags/spip-2.1.12 SPIP21

Et soyons fous, prenons même la dernière version de dev de SPIP, instable (pour le moment c’est SPIP 3)

svn co svn://trac.rezo.net/spip/spip SPIPdev

Je me retrouve donc dans mon dossier sites avec trois dossiers : SPIP20 SPIP21 et SPIPdev.

Par défaut mes sites pointeront vers SPIP21. Les autres sites seront des exceptions.

Préparer la mutualisation

Maintenant rendons-nous dans le dossier SPIP21 pour préparer le chemin à la mutualisation des sites SPIP.

cd ~/SPIP21

D’abord il faut récupérer le plugin mutualisation facile :

svn://zone.spip.org/spip-zone/_plugins_/mutualisation

Ensuite il me faut copier le fichier mes_options.php dans le dossier config.

cp mutualisation mes_options.php.txt mes_options.php

Puis ouvrir le fichier config/mes_options.php avec le logiciel de mon choix.

Il va falloir régler pour indiquer les réglages MySQL de Mamp.

Voici le contenu de ce fichier

Les lignes à changer sont les lignes en mettant 44 et 45 :

        define ('_INSTALL_USER_DB', 'root');  
        define ('_INSTALL_PASS_DB', 'root');

Il nous reste ensuite à créer un répertoire sites :

mkdir sites

Affinage

Comme je suis sur un site local, donc de dev, je ne veux pas de cache. Je met donc dans le fichier mes_options.php la ligne suivante :

define('_NO_CACHE',-1);

Dans le dossier extensions, je peux mettre tout les plugins que je souhaite actifs automatiquement pour l’ensemble des sites. Dans le dossier plugins, je met les plugins qui ne sont pas automatiquement actif.

Répétition pour les autres versions de SPIP

Il me faut installer la mutualisation dans chaque dossier correspondant à chaque version de SPIP.

Installation et Configuration de Mamp

Tout d’abord, vérifier dans les Préférences Système que le partage web n’est pas activé. Puis télécharger MAMP et l’installer.

Ouvrir MAMP dans le dossier MAMP du dossier Application.

Dans les réglages, aller dans ports, et mettre le port Apache sur 80.

Ensuite comme je ne désire pas renvoyer mes sites systématiquement vers le même dossier, il va falloir faire une intervention à la main dans les fichiers de MAMP.

Ouvrir le dossier /Applications/MAMP/conf/Apache et faire une copie de sécurité du fichier httpd.conf.

Puis l’ouvrir avec un éditeur de texte.

Chercher les lignes où il est écrit :

# MAMP DOCUMENT_ROOT !! Don't remove this line !!
DocumentRoot "/Applications/MAMP/htdocs"

Et faire exactement ce qu’il est dit de ne pas faire, en remplacant DocumentRoot "/Applications/MAMP/htdocs" par Include /Applications/MAMP/conf/Apache/vhost.conf

Par cela, je signale que je veux que la gestion des dossiers se fasse dans un fichier vhost.conf du dossier /Applications/MAMP/conf/Apache/.

Je crée ce fichier. Voici ce que j’y met :

<VirtualHost *>
DocumentRoot "/Users/maieul/Sites/SPIP21"
</VirtualHost> 

Évidemment, il faut remplacer maieul par le nom de votre dossier de départ.

Cela indique que par défaut, mes sites locaux correspondent au dossier /Users/maieul/Sites/SPIP21 de mon ordinateur. Donc mes sites sont créés par défaut avec SPIP 2.1

En revanche, si je souhaite que le site toto.dev soit en SPIP 2.0, je met en dessous de ces lignes :

<VirtualHost *>
DocumentRoot "/Users/maieul/Sites/SPIP20"
ServerName toto.dev
</VirtualHost>

Et ainsi de suite pour chaque site ne fonctionnant pas avec SPIP 2.1.

Rediriger le site bidule.dev vers 127.0.0.1

Bon, maintenant je peux lancer mon site bidule.dev Pour ce faire, je vais modifier le fichier /etc/hosts, qui indique les redirections des adresses web, propres à mon ordinateur. Pour ce faire, dans le terminal je frappe :

sudo pico /etc/hosts

Après la saisie de mon mot de passe administrateur, avec le clavier je me rend sur juste avant la ligne 255.255.255.255 broadcasthost, et j’insére la ligne suivante :

127.0.0.1 toto.dev

J’enregistre en frappant ctrl + X À chaque fois que je voudrais créer un nouveau site local, je ferais de même.

Lancement du site

Aller, on y va ! Dans la barre d’adresse du navigateur, j’écris http://toto.dev.

Je me retrouve alors sur la page me demandant le mot de passe de la mutualisation.

Comme je ne l’ai pas modifié, c’est facile : ecureuil. Je le rentre donc, et je clique sur ok.

Je passe ensuite les étapes suivantes, qui sont automatiques.

Vient ensuite l’habituel formulaire de création des comptes sur SPIP, que je remplis comme d’habitude :

Et voilà mon site lancé.

Particularité de la mutualisation

Chaque sites possèdent un dossier propre dans le dossier sites. Dans chaque dossier de sites se trouvent les habituelles dossiers config ; IMG ; local ;tmp et éventuellement squelettes.

Mise à jour mineure de SPIP

Imaginons que la version 2.1.13 de SPIP sorte.

Pour faire ma mise à jour en local, c’est simple.

1. D’abord se rendre dans le dossier avec le terminal

cd ~/sites/SPIP21

2. Ensuite mettre à jour

svn switch svn://trac.rezo.net/spip/tags/spip-2.1.12 

P.-S.

Comme d’habitude, j’attends les réactions des SPIPeurs.

Voici quelques liens utiles :

Notes

[1Je sais, c’est un peu narcissique, mais que voulez-vous…

Vos commentaires

  • Le 31 janvier 2012 à 17:28, par Manu En réponse à : Gérer beaucoup de sites SPIP en local sous MacOsX

    Bonjour, Alexandra m’a indiqué cette page où, pensait-elle, je trouverais peut-être réponse à mon soucis... Hélas, non !

    Mon problème est très simple dans son exposé : je développe mes sites avec une organisation assez similaire à la votre : 1 serveur local disposant d’une ferme à SPIP. Ce que je cherche à faire est de me servir ponctuellement de cette ferme comme site de démonstration, c’est à dire de permettre à certains clients de pouvoir accéder à la version de développement telle qu’est est sur ma machine.

    Le problème est que je ne sais pas comment configure apache pour qu’il fasse ça corectement.

    Situation actuelle Ma ferme à SPIP est installée dans le répertoire www/maferme/ J’ai créé un domaine noisetier au niveau de mon serveur Mes sites sont sagement rangés ainsi :

    • www/maferme/site1.maferme.noisetier
    • www/maferme/site2.maferme.noisetier
    • En local, j’appelle les différents sites en invoquant l’url http://site1.maferme.noisetier, http://site2.maferme.noisetier etc...

    Quelques constats Si un internaute tente d’accéder à mon serveur depuis une de ses machines en saisissant dans son navigateur :

    Je n’arrive pas à comprendre ce qu’il faut faire pour que des adresses du type http://mondyndns.org/site1.maferme.noisetier ou http://mondyndns.org/site1.noisetier ou quelque chose du genre lui permettent de consulter les différents sites mutualisés !

    Auriez-vous une piste à me proposer pour configurer correctement apache pour que je puisse mettre en place ce fonctionnement ? Cela me simplifierait beaucoup les choses parce que, pour l’instant, il me faut tout déplacer ailleurs à chaque fois et c’est ma foi un peu fastidieux...

    merci beaucoup d’avance...

    Manu

  • Le 31 janvier 2012 à 17:57, par Maïeul En réponse à : Gérer beaucoup de sites SPIP en local sous MacOsX

    Hum, je n’ai jamais testé cela, mais deux points :

    1. Configurer Apache pour que http://mondyndns.org pointe vers www/maferme
    2. Configurer la mututalisation de SPIP pour faire correspondre les adresses « externes » aux adresses « internes ».

    Alors, pour le 1er point, je pense qu’il faut mettre dans la conf apache

    <VirtualHost *>
    DocumentRoot "cheminabsolueversmaferme"
    ServerName mondydns.org
    </VirtualHost>

    Pour le second point, dans le mes_options.php :

    En dessous de la ligne $site = str_replace('www.', '', $_SERVER['HTTP_HOST']);

    mettre :

    $site = str_replace('http://mondyndns.org/','http://',$site);

    pour faire correspondre l’adresse externe http://mondyndns.org/toto.maferme.noisetier à l’adresse locale http://toto.maferme.noisetier

  • Le 31 janvier 2012 à 22:06, par Maïeul En réponse à : Gérer beaucoup de sites SPIP en local sous MacOsX

    Attention, j’ai parlé trop vite pour la conf apache

    Le probléme c’est que tu donne des adresse de type http://domaine/chemin.

    Conséquence : avec mon réglage, tu demanderai à Apache de chercher dans cheminabsolueversmaferme/chemin.

    Il existe apparement une directive Apache qui permet de contourner cela : la directive alias.

    Typiquement dans ton cas, il semble (je dis bien « il semble », je n’ai pas testé) qu’il faille faire

    <Virtualhost *>
    Alias /site1.maferme.noisetier /cheminabsolueversmaferme
    ServerName mondydns.org
    DocumentRoot "cheminabsolueversmaferme"
    </Virtualhost>
  • Le 1er février 2012 à 09:26, par Manu En réponse à : Gérer beaucoup de sites SPIP en local sous MacOsX

    Bonjour et merci de ton aide.... J’ai appliqué ce que tu proposais dans ton post 3... Avec la déclaration de vhost que tu proposes, quand j’appelle http://mondyndns.org/site1, le browser se contente d’afficher le listing du directory site1.maferme.noisetier (IMG, squelettes, local et tmp)... C’est au niveau du /config/mes_options.php de la mutu qu’il faut agir maintenant pour que SPIP prenne la main ?

  • Le 1er février 2012 à 11:04, par Maïeul En réponse à : Gérer beaucoup de sites SPIP en local sous MacOsX

    heu, là ca veut dire que tu n’a pas pointer au bon endroit … il faut faire pointer Apache vers la racine de la mutualisation (là où se trouve le dossier mutualisation et le dossier sites)

  • Le 1er février 2012 à 14:39, par Manu En réponse à : Gérer beaucoup de sites SPIP en local sous MacOsX

    ... je manque probablement d’un peu de bases théoriques pour bien comprendre la notion de vhosts et je patauge... En attendant de m’y replonger, j’ai opté pour une autre solution qui est de créer directement sous /home/manu/www autant de sous répertoire que j’ai de sous répertoires dans maferme/sites et d’y mettre des liens symboliques vers les fichiers de la ferme.... C’est un compromis bancal, m’enfin, bon, en attendant de mieux comprendre comment fonctionne apache... Merci de ton aide !

  • Le 1er février 2012 à 18:45, par Maïeul En réponse à : Gérer beaucoup de sites SPIP en local sous MacOsX

    oui, le mieux serait de suivre un tuto sur les vhosts...

  • Le 5 novembre 2015 à 17:08, par Ospeleo En réponse à : Gérer beaucoup de sites SPIP en local sous MacOsX

    J’utilise cette méthode depuis plusieurs années, ça fonctionne bien. Soudainement, suite à un crash de mon DD, et une réinstallation mal faite, les url propres n’étaient plus reconnues en local. Plus précisément, la réécriture d’url fonctionne, mais le htaccess ne fonctionnait plus avec cette config et MAMP.

    solution trouvée :

    Au lieu de mettre, dans vhost.conf

    <VirtualHost *>
    DocumentRoot "/Users/moi/Sites/SPIP"
    </VirtualHost>

    j’ai mis

    <VirtualHost *>
    DocumentRoot "/Users/moi/Sites/SPIP"
    
        <Directory "/Users/moi/Sites/SPIP">
            Options FollowSymLinks
            AllowOverride None
        </Directory>
        <Directory "/Users/moi/Sites/SPIP">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>
    </VirtualHost>

    et le htaccess est correctement pris en compte.

  • Le 5 novembre 2015 à 17:17, par Maïeul En réponse à : Gérer beaucoup de sites SPIP en local sous MacOsX

    merci pour le commentaire. pour ma part je n’active jamais les urls propres en local (sauf pour developper des plugins d’urls propres).

Qui êtes-vous ?

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.

Acheter XeLaTeX appliqué aux sciences humaines

À propos

Titulaire d’un doctorat en théologie et d’un doctorat en histoire, sous la direction conjointe de Frédéric Amsler et d’Élisabeth_Malamut, je commence à partir du 1er août 2017 un travail d’édition critique des Actes de Barnabé.

Dans le cadre de la rédaction de mon mémoire de master puis de ma thèse de doctorat, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares. Ceci m’a conduit à maintenir ou créer plusieurs packages LaTeX et à donner plusieurs formations.

J’ai reçu en 2018 le prix DANTE e.V pour mon travail autour de LaTeX, en particulier autour de reledmac et reledpar.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul