Je décide donc d'installer dotclear 2.0 (beta6 au moment où j'écris cela). Avant de déménager complètement, je vais faire quelques essais. En fait, je souhaiterais ajouter deux autres blogs à mon blog principal et pour cela utiliser des sous-domaines.

Ce billet traite donc de l'installation multiblog en sous-domaines, sachant que l'installation de Dotclear se fait sur un domaine principal www.monsite.com et que les blogs sont installés sous des sous-domaines de ce même site blog1.monsite.com et blog2.monsite.com

Avertissement

Ce tutoriel est surtout une "bidouille" que je ne recommande pas vraiment. Il présente l'avantage de permettre de n'installer qu'une fois Dotclear et de n'avoir qu'une interface d'administration pour plusieurs blogs, mais a recours à des "trucs" pas très nets. Si vous ne vous sentez pas l'âme bidouilleuse et si vous ne comprenez rien aux chemins relatifs, aux espaces webs ou aux sous-domaines, passez votre chemin et préférez plusieurs installations de Dotclear, une par racine de chacun de vos sites et sous-domaines.

Pré-requis

Cette bidouille ne fonctionne QUE si vous hébergez domaine principal et sous-domaines sur Ouvaton 3 sous le même numéro de coopérateur. Elle est grandement facilitée si vous accédez à votre espace web principal en FTP par le biais de votre identifiant/mot de passe "général", en l'occurence monsite.com plutôt que www.monsite.com.

Installation

Préparer le domaine

Je choisis d'héberger l'installation principale de mon blog dans un dossier /blogs de mon site de base. Pour une installation sur Ouvaton 3, il suffit de suivre les instructions que l'on trouve dans ces différents documents :

Le plus important pour bien commencer est d'expliquer que je veux que dotclear tourne sous php5. Pour cela, dans le dossier racine de mon site, je rajoute un fichier .htaccess comportant l'instruction suivante :

AddType application/x-suexec-php5 .php

Comme indiqué ici.

Installer Dotclear

Ceci fait, je choisis d'installer Dotclear à partir du fichier config.php

Pour ouvaton, ça donne ça :

// Database driver (mysql, pgsql, sqlite)
define('DC_DBDRIVER','mysql');

// Database hostname (usually "localhost")
define('DC_DBHOST','127.0.0.1'); c'est le chemin vers la base sur Ouvaton 3

// Database user
define('DC_DBUSER','votre_user_name'

// Database name
define('DC_DBNAME','nom_de_la_base');

// Tables' prefix
define('DC_DBPREFIX','prefixe_');

// Crypt key (password storage)
define('DC_MASTER_KEY','une phrase qui vous va bien sans apostrophe sinon ca casse tout');

// Admin URL. You need to set it for some features.
define('DC_ADMIN_URL','http://www.monsite.com/votre_repertoire_dotclear/admin/');

Je décommente aussi les histoires de PATH_INFO en supprimant les // devant les dernières lignes du fichier.

// If you have PATH_INFO issue, uncomment following lines
if (!isset($_SERVER['ORIG_PATH_INFO'])) {
$_SERVER['ORIG_PATH_INFO'] = '';
}
$_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];



Pour le blog principal, c'est fait. Il est maintenant accessible par http://www.monsite.com/blogs/.

Installation multiblog

Seulement, je le voudrais que mes autres blogs soient accessibles non sous le nom de mon domaine principal, mais par le biais d'un sous domaine du style : http://monblog.monsite.com/. Là, ça se complique, et ça se complique carrément, parce que Ouvaton 3 ne me permet pas de pointer des url vers le dossier de mon choix sur l'espace web de mon choix. Conclusion, suivre les instructions de Simon [1]que j'avais repérées n'est pas possible, puisque la dernière étape (pointer les url vers les dossiers) n'est pas une option que me permet Ouvaton. Je cherche donc ailleurs.

Du coup je reviens à la mise en place de base du multiblog expliquée par Kozlika dans ce guide. Et je l'adapte.

Créer deux espaces web "sous-domaines"

Sur Ouvaton 3, je crée deux espaces web et deux accès ftp destinés à accueillir les dossiers /public et /theme (avec le thème par défaut à l'intérieur) ainsi que le fichier index.php de mes différents blogs : blog1.monsite.com et blog2.monsite.com. Ces espaces web vont remplacer les dossiers /blog1 et /blog2 dans le tutoriel de Kozlika.

La création de ces deux espaces web, grâce (ou à cause de) la configuration d'Ouvaton 3, va faire en sorte que lorsqu'on tape l'adresse http://blog1.monsite.com dans un navigateur, on va arriver directement sur l'espace web blog1.monsite.com, sans avoir à créer de sous-domaine en IN A ou autres trucs bizarres. En l'occurence, c'est un problème, mais on va dire que c'est une "feature".

Adapter les fichiers index.php aux sous-domaines

Puisque les sous-domaines vont remplacer les dossiers /blog1 et /blog2, on va donc créer dans ces espaces web les dossiers /public et /themes nécessaires à l'installation des blogs. Et y ajouter le fichier index.php comme l'indique Kozlika, mais aménagé comme suit :

<?php

define('DC_BLOG_ID','blog1'); # adapter ici avec identifiant de votre blog

require '../../www.monsite.com/html/blogs/inc/public/prepend.php';

?>

même chose pour le blog2 en remplaçant l'identifiant par blog2

En gros, on demande à Dotclear d'aller chercher le prepend.php à l'endroit où il se trouve en remontant dans l'architecture d'Ouvaton.

Pour ceux que ça intéresse, le chemin est le suivant (les fichiers sont déposés dans le dossier /html de mes sous-domaines) :



mon fichier est dans :
/space/www/gl-ouv/1/2/1234567890123456/web/monsite.com/blog1.monsite.com/html
Je lui demande de remonter dans :
/space/www/gl-ouv/1/2/1234567890123456/web/monsite.com/
et de redescendre dans :
/space/www/gl-ouv/1/2/1234567890123456/web/monsite.com/www.monsite.com/html/blogs/public/

sachant qu'il faut évidemment adapter le dossier /blogs au dossier que vous avez choisi. ET gardant à l'esprit que d'un chemin relatif, on passe à un chemin absolu (ou presque) et que donc, si Ouvaton décide demain de changer l'architecture et d'héberger mes sous-domaines ailleurs. Paf, c'est mort. Mais bon, on va partir du principe qu'Ouvaton ne fera pas ça. Héhé.

Ne pas oublier de rajouter un .htaccess à la racine de chaque sous-domaine

Puisque les sous-domaines sont indépendants du site principal, ne pas oublier, en plus des dossiers /theme (avec le thème par défaut), /public et du fichier index.php, de rajouter à la racine de vos sous-domaine un .htaccess avec les mêmes informations que le précédent, soit :

AddType application/x-suexec-php5 .php

Je peux maintenant créer les blogs blog1 et blog2.

Pour cela, je continue de suivre les indications de Kozlika et j'adapte. Je n'oublie pas, tel que décrit à l'étape 4, de mettre à la racine du dossier contenant l'installation Dotclear le nouvel index.php dans lequel je ne change rien (suivant mon architecture donc, dans le dossier /blogs.

Création des autres blogs

Je crée donc deux blogs, l'un dont l'identifiant sera blog1, et l'autre blog2.

Adapter les URL

Dans Blogs > blog1 > Paramètres du blog dans l'interface Dotclear, j'entre l'URL en indiquant mon sous-domaine :
http://blog1.monsite.com/index.php/
idem pour le blog2

Adapter les chemins dans l'interface d'administration de Dotclear

Dans blog1 > about:config , je dois encore indiquer les informations suivantes :

  • public_path : ../../../blog1.monsite.com/html/public
  • public_url : http://blog1.monsite.com/public
  • theme_path : ../../../blog1.monsite.com/html/themes
  • theme_url : http://blog1.monsite.com/themes

idem pour mon blog2 en adaptant bien sûr les chemins. Notez la même manipulation que précédemment, avec des chemins relatifs et comptez bien le nombre de ../ que vous devrez adapter à vos chemins.

Voilà. Ca marche. J'ai maintenant trois blogs, l'un accessible à http://www.monsite.com/blogs/ et deux autres accessibles respectivement à http://blog1.monsite.com et http://blog2.monsite.com.

Prochaine étape... les zolies URL, mais ce n'est pas gagné. Du tout.

[Edit 28/08/2007] - Remplacement de tous les liens morts par des liens qui fonctionnent

Note

[1] edit: remplacement du lien mort vers un lien vers archive.org