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
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 :
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 :
www/maferme
Alors, pour le 1er point, je pense qu’il faut mettre dans la conf apache
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
# 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
j’ai mis
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).