DotClear 2.0 en multiblog
Par Petaramesh le jeudi 21 décembre 2006, 09:25 - Informatique non-duelle - Lien permanent
Après avoir installé DotClear 2 bêta initialement en mode "monoblog", je viens de le passer en mode multiblog, et ça le fait extrêmement bien.
Trucs et astuces, avec plein de moldave dedans.
J'héberge en effet déjà deux blogs sur ce brave Totor, et seul l'ashram était jusqu'ici sous DotClear 2.0ß installé en mode monoblog, l'autre blog tournant jusqu'ici de son côté sous DotClear 1.2.5.
Comme j'envisageais depuis l'autre jour l'éventuelle mise en route d'un nouveau blog pour mademoiselle Patâpatî (afin d'inciter celle-ci à écrire davantage, dans le but sournois - on peut rêver - d'améliorer son orthographe), j'ai décidé de rationaliser tout ça, et de tirer parti des capacités multiblog de DotClear 2.0ß pour gérer les deux blogs existants et laisser la place à de futurs petits nouveaux, le tout avec une seule installation de DotClear à faire tourner et à maintenir, comme c'est reposant...
Il existe déjà, sur le forum de DotClear 2, un fil traitant de la question, toutefois je ne m'en suis pas vraiment inspiré, préférant me fier à mon instinct et à ce que j'avais déjà compris du fonctionnement du nouveau bestiau.
Mon objectif était :
- Utilisant un serveur physique unique (une seule machine) ;
- Avoir une seule installation de DotClear ;
- Faisant tourner plusieurs blogs différents ;
- Hébergés sous des noms de domaines différents ;
- Via des serveurs HTTP virtuels (Apache) différents ;
- Ayant pour chaque blog son répertoire de base, son répertoire "public", et son répertoire de "themes" à soi, possiblement dans le "home directory" de chaque utilisateur, de manière à rendre facile pour l'utilisateur la gestion par FTP de ses thèmes et fichiers personnels.
Donc en gros, avoir une installation de DotClear unique du point de vue de l'administrateur système, mais gérant plusieurs blogs de manière "étanche" et apparemment indépendante du point de vue tant du visiteur, que du propriétaire de chaque blog.
L'opération est un succès, aussi voici comment j'ai procédé, ainsi que les limites que j'ai pu percevoir à la chose.
La limite principale me semble être que, dans la mesure où, dans la configuration de dotclear, on doit définir pour chaque blog le chemin hébergeant le répertoire "themes" et celui du répertoire "public" non seulement sous forme d'URL (relative au blog), mais également sous forme de chemin de répertoires (relatif au répertoire dans lequel le "moteur" de DotClear est installé), il apparaît que le moteur de DotClear doit être installé sur le même serveur physique que les répertoires des blogs des utilisateurs (sauf à vouloir trifouiller du NFS...).
Lors de l'installation de multiples blogs, on verra en fait que ces définitions de chemins relatifs sont les choses les plus chiantes à faire. Mais pas tant que ça, une fois qu'on a saisi le truc.
En dehors de cette histoire de chemins, l'installation de DotClear en mode multiblog est assez peu différente du mode monoblog, aussi m'a-t-il été relativement facile de convertir mon système d'un mode vers l'autre. Je ne reviendrai pas sur mon installation de base initiale, que j'avais décrite dans cet article, notamment en ce qui concerne redirections, ré-écriture d'URLs, etc.
A partir de cette base, pour passer le tout en mode multiblog, voici, ce que j'ai fait :
- J'ai installé tous les fichiers de DotClear quelque part sous la racine de mon serveur web "principal", par exemple sous
/var/www/html/dotclear/. - Je me suis ensuite arrangé, par une petite ruse de Sioux, pour que cette installation soit "invisible" pour un visiteur de mon serveur principal (s'il requiert cette URL, il se mangera un "404 Ça n'existe pas !", et non pas un "403 Niet tovarich !".)
Ensuite, et pour chaque blog à héberger :
- Créer un répertoire de base pour le "serveur" virtuel, où on le souhaite.
- Dans la configuration du serveur virtuel, définir simplement deux "Alias" pour l'installation de DotClear et l'accès à son interface d'administration :
<IfModule mod_alias.c>
Alias /blog/ "/var/www/html/dotclear/"
Alias /admin "/var/www/html/dotclear/admin"
</IfModule>
...rendant ainsi l'installation unique accessible depuis des serveurs virtuels installés dans un répertoire de base franchement différent.
Puis, installer dans le répertoire de chaque blog, uniquement :
- Un fichier "
index.php" appelant le blog ; - Le répertoire "themes" contenant les thèmes que le blog utilisera, et que son propriétaire pourra personnaliser à loisir (Ne pas oublier d'y copier le répertoire du thème "default" !) ;
- Le répertoire "public" dans lequel le propriétaire du blog pourra mettre ses fichiers attachés personnels.
On voit donc que l'installation pour chaque blog est extrêmement "légère", le truc un peu glauquesque étant seulement la bonne définition des chemins :
- Pour l'"
index.php" de chaque blog, deux lignes sont particulièrement importantes, et doivent être soigneusement réglées :
define('DC_BLOG_ID','nomdemonblog');
Celle-ci se passerait presque de commentaire : Il faut y indiquer le nom du blog que cet index.php devra afficher ;-)
require dirname(__FILE__).'/../../../../var/www/html/dotclear/inc/public/prepend.php';
Celle-ci est plus poilue des fesses, et c'est bien elle qui m'a donné du mal, à cause de la rafale de point-slash à doser convenablement, car on doit :
- Aboutir au fichier "
prepend.php" de l'installation "unique" de DotClear ; - Le chemin spécifié est relatif à l'emplacement de l'index.php ;
- Bien que commençant par un "/", qui est "nécessaire mais ignoré", en quelque sorte ;
- On est donc obligé de définir un chemin relatif, en remontant jusqu'à la racine du filesystem (d'où les ../../../...), puis en redescendant de là, dans
/var - C'est en fait le seul truc vraiment tordu, mais pas de doute, il est tordu.
Ceci étant fait, il ne reste plus qu'à définir, pour chaque blog, les chemins d'accès au répertoire de thèmes, et au répertoire "public", dans son "about:config"
Voici ce que ça donne chez moi :
public_path : /home/tartempion/web/public public_url : /public themes_path : /home/tartempion/web/themes themes_url: /themes
Et c'est tout !
On voit simplement que le "path" est relatif au filesystem du serveur, tandis que l'URLest relative à la racine du serveur web virtuel. C'est toute l'astuce.
A partir de là, ça gazouille gentiment.
Enjoy !









Commentaires
L'idéal serait d'utiliser le thème par défaut du blog (qui se trouverait quelque par dans /var/www) s'il n'y a pas de thème spécifique défini dans le /home de l'utilisateur.
Tu saurais faire ça toi ?
'tain, j'ai rien compris ...
J'ai quelques années d'infos sous la ceinture, mais mon "major" à l'uni c'était plutôt les applications industrielles de l'info (robotique, ihm, toussa toussa), pas le système et les OS ... Remarque, j'ai pas pratiqué depuis ... houlà ... au moins ... Mon boulot actuel est plutôt commercial ...
Maintenant, je retiens quand même que ça a l'air vachement pratique ce truc ...
Mézencore, ce qui me fait lever le sourcil c'est cette histoire de serveur à domicile ...
Moi qui suis installé en Chine, loin de mon provider, qui m'em...merquiquine parce que je ne peux pas fileziller comme je veux, je me pose la question de savoir si ça ne pourrait pas le faire, utiliser un des vieux PC comme serveur ...
J'ai bien essayer de lire ce qui se raconte sur Apache là, mais euh ... béotien un jour béotien toujours ...
Tu n'aurais pas fait un billet explicatif sur le sujet par hasard ?
À mon avis, le premier / n'est pas ignoré, et le chemin n'est pas forcément relatif, c'est juste que tu le compose en concaténant (avec l'opérateur .) le chemin du fichier actuel (dirname(FILE)) avec ton chemin relatif. Tu devrait pouvoir entrer un chemin absolu de la sorte : require '/var/www/etc'; ça serait plus simple, non ?
Après je n'y connais pas grand chose en php, et j'ai pas testé, je dis peut-être une connerie...
@Thesa : Tu as certainement raison, et ceci me rappelle s'il en était besoin à quel point je suis une buse en PHP : pour n'avoir même pas tenté de comprendre qu'il y avait là "
dirname(__FILE__).'/../dc2/inc/public/prepend.php'" la concaténation du résultat d'une fonction, et d'une constante chaîne...Honte à moi. Enfin, maintenant, quand je dirai , on me croira :-}
@GZLaowai : J'ai bien peur que pour la configuration et la mise en oeuvre d'Apache, un simple "billet explicatif" ne suffise pas, et qu'il vaille mieux se plonger dans la lecture de la belle et bonne documentation, puis se monter un petit serveur et... expérimenter par soi-même ;-)
Je me disais aussi ... *soupir*
N'empêche, même pour les bases j'ai du mal ...
Avoir un PC branché sur le modem, ça je comprends.
Que les autres bestioles de la maison soient branchées en réseau dessus, je comprends aussi.
Qu'il faille installer un mystérieux machin avec un nom de tribu indienne, je veux bien admettre ... mais c'est là que ça commence à se gâter ...
Que sur le PC serveur tournent un certains nombre d'applis, ça paraît logique.
Mais là où ça devient nébuleux, c'est quand je commence à penser à ces histoires d'adresse IP (mais comment diable peut-on avoir une adresse stable, que les visiteurs s'y retrouvent ???), de nom de domaine (ton petaramesh.org, tu ne l'as pas juste inventé quand même ? non parce que j'ai entendu parler d'un organisme là, qui est supposé réguler tout ça) ... Et puis, si tu héberges ton blog et que tu reçois tes courriers ... ouille ouille ouille ... j'ai le cerveau qui commence à faire des noeuds moi ...
Bon ... je crois qu'il va falloir que je révise les bases pour commencer ...
Qui cherche ... trouve des tas de trucs un peu partout !
L'incontournable Framasoft propose un tuto en 48 pages que je n'ai encore parcouru qu'en diagonale, mais qui a l'air intéressant.
Un autre tuto Apache chez Giminik (oui je sais, c'est sous Win ...)
Et puis je viens de découvrir avec surprise ? Etonnement ? Que l'on peut se faire un serveur FTP à la maison en 5 minutes ...
@GZLaowai :
Ton adresse IP est attribuée par ton fournisseur d'accès. Soit elle est dynamique (elle change souvent), tu l'obtiens d'un serveur via le protocole DHCP, et c'est emmerdant pour faire tourner un serveur (ça exige de recourir à des services de DNS dynamique, comme par exemple DynDNS), soit elle est fixe, et tu peux la définir de manière fixe sur ton système ce qui est beaucoup mieux pour faire tourner un serveur, effectivement.
>
Ben si. Puis déposé, chez Gandi, registrar hautement sattvique. Cela coûte 12 Euros par an.
>
L'ICANN.
>
...Il te faut un serveur mail (MTA). Postfix roulaize, mais configurer ça... c'est un métier ;-)
>
C'est pour ça que si tu fais
ftp://petaramesh.org, ça marchera :-}Sur à peu près n'importe quelle distribution Linux, il suffit de démarrer le service correspondant pour avoir un serveur mail, web ou FTP, qui tourne en 30 secondes. Et avoir, par exemple, le serveur web qui t'affiche
bêtementsimplement la page de bienvenue de la distribution.Bien évidemment, pour en faire quelque chose d'utile, il faut du travail en plus. Beaucoup.
Et le problème annexe, c'est qu'un serveur configuré en 10 minutes par un ignorant, est un serveur hacké en 5 minutes par un malfaisant ;-)
ya pas un script tout fait à télécharger? Ou un site qui propose ça gratos et que je pourrai intégrer à mon site ?
@Mike : Comme on dit :
Je ne doute pas que si tu trouves toutes ces belles choses gratos, tu reviendras ici nous mettre un joli lien et nous expliquer où ça se trouve et comment ça marche ;-)