Ce billet décrit l'installation de Dotclear 2 version beta 6 sur l'offre mutualisée CeleoTurbo de l'hébergeur Celeonet. Cette offre obéit aux caractéristiques techniques minimales pour l'installation du logiciel.

Préambule

Après vous être connecté dans votre espace client sur Celeonet, onglet Général, vous aurez accès aux informations concernant les codes d'accès FTP et les paramètres de la base de données.

Préparation de l'environnement

Si vous ne disposez pas déjà d'une base de données MySQL, créez-en une via l'onglet MySQL , puis Création d'une base.

Vous devez également permettre l'exécution de PHP 5 sur votre espace : dans l'onglet Domaine, puis Gérer les sous-domaines et les versions php4/php5, vérifier que vous utilisez bien la bonne version.

Enfin, déposez l'archive décompressée de Dotclear2 dans le répertoire www du compte FTP (il est possible d'envoyer l'archive via l'onglet FTP, puis webftp mais la décompression n'est pas complète : cela est dû au temps d'exécution limité à 30 secondes).

Vous êtes maintenant prêts pour l'installation. Deux méthodes sont possibles : soit vous vous laissez guider par l'assistant, soit vous remplissez le fichier de configuration. Je décrirais les deux méthodes, mais je n'ai utilisé que la première.

Installation avec l'assistant

Il suffit de vous rendre sur http://url-mon-dotclear/admin/install/. Un message vous avertit que vous n'avez pas de fichier de configuration et vous propose de vous rendre sur l'assistant wizard. Cliquez sur le lien.

Un formulaire apparaît et vous demande certains renseignement de configuration :

  • Type de base de données
  • Nom d'hôte de la base de données : nom de l'hôte de la base
  • Nom de la base de données
  • Nom d'utilisateur de la base de données
  • Mot de passe de la base de données
  • Préfixe des tables de la base de données

Validez le formulaire, le programme vérifie que les conditions d'installation de Dotclear sont remplies et vous amène directement à la fin de l'installation. Rendez vous de nouveau sur la page http://url-mon-dotclear/dotclear/admin/install et répondre aux questions posées.

TODO : avec cette méthode, les lignes concernant le PATH_INFO ne sont pas décommentées dans le fichier config.php. Je ne sais pas si cela pose un problème pour la suite.

Fichier de configuration

Vous devez renommer le fichier inc/config.php.in en inc/config.php, puis le remplir avec les indications concernant votre base fournies par Celeonet.

Ce fichier configure l'accès à la base de données.

<?php
# ***** BEGIN LICENSE BLOCK *****
# This file is part of DotClear.
# Copyright (c) 2005 Olivier Meunier. All rights
# reserved.
#
# DotClear is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# DotClear is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DotClear; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# ***** END LICENSE BLOCK *****
 
// Database driver (mysql, pgsql, sqlite)
define('DC_DBDRIVER','mysql');
 
// Database hostname (usually "localhost")
define('DC_DBHOST','NOM DU SERVEUR DE LA BASE DE DONNÉES');
 
// Database user
define('DC_DBUSER','NOM D'UTILISATEUR');
 
// Database password
define('DC_DBPASSWORD','MOT DE PASSE');
 
// Database name
define('DC_DBNAME','NOM DE LA BASE DE DONNÉES');
 
// Crypt key (password storage)
define('DC_MASTER_KEY','CHANGER CECI IMPÉRATIVEMENT');
 
 
// Admin URL. You need to set it for some features.
define('DC_ADMIN_URL','URL COMPLÈTE VERS RÉPERTOIRE ADMIN');
 
// Cookie's name
define('DC_SESSION_NAME','dcxd');
 
// Plugins root
define('DC_PLUGINS_ROOT',dirname(__FILE__).'/../plugins');
 
 
// Template cache directory
define('DC_TPL_CACHE',dirname(__FILE__).'/../cache');
 
 
// 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'];
 
?>

Multiblog

J'ai choisi de séparer l'application de mes données personnelles : ainsi, en cas de mise à jour, seul le répertoire dotclear est modifié. La méthode utilisée et décrite ici s'inspire de la documentation de dcTips() et de l'installation multiblog (documentation officielle en cours d'écriture).

Création des répertoires

Sur l'espace web, on va créer un nouveau répertoire, ici journal, dans lequel on place deux nouveaux répertoires pour les données personnelles, public et themes. Dans ce dernier, on copie le répertoire /themes/default/ de /dotclear/. On a donc à la racine de l'espace web :

  • dotclear (l'installation de base)
    • ...
    • public
    • themes
      • default
    • ...
  • journal
    • public
    • themes
      • default (copie de l'installation de base)
      • zulio (ma feuille de style personnelle)
    • index.php

Pour chaque nouveau blog créé, on place un fichier index.php qui aura le contenu suivant :

<?php
   define('DC_BLOG_ID','journal'); #identifiant du blog
   require dirname(__FILE__).'/../dotclear/inc/public/prepend.php';
?>

en remplaçant la variable DC_BLOG_ID par l'identifiant du carnet que l'on aura choisi.

Modifier le fichier de dc

Création des carnets

À partir de l'interface d'administration de Dotclear, rubrique Blogs, création d'un nouveau carnet dont l'identifiant doit être identique au nom du répertoire précédemment créé. Dans mon cas, on a :

  • identifiant du carnet : journal
  • titre du carnet : Varia
  • URL du carnet : http://zulio.org/journal/index.php/
  • Méthode de lecture de l'URL : PATH_INFO

Il faut maintenant indiquer les chemins des répertoires /public/ et /themes/ en modifiant les valeurs suivantes dans about:config :

  • public_path : ../journal/public
  • public_url : /journal/public
  • themes_path : ../journal/themes
  • themes_url : /journal/themes

Comme je ne me servirai pas de dotclear comme d'un carnet, je le mets hors-ligne.

Je définis le carnet /journal/ comme carnet par défaut.

Réécriture

La réécriture des URL n'est pas uniquement qu'une opération cosmétique si, dans le cas où, comme moi, vous mettez à jour votre carnet à partir d'une version antérieure. Pour supprimer index.php dans l'URL, il faut placer un fichier .htaccess à la racine du carnet (ici, dans le répertoire /journal/) :


# AVERTISSEMENT : ce fichier fonctionne en l'état mais il demande à être vérifier auprès de l'hébergeur
#
# Le serveur est autorisé à suivre les liens symboliques dans ce répertoire : utile sur un hébergement mutualisé ?
Options +FollowSymlinks
# Activation du module de réécriture
RewriteEngine On

# Réécriture des URL 
# Pas de réécriture si le fichier (-f, file), le dossier (-d, directory) ou le lien -l, link) demandés existent :
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-l

# Réécriture de http://example.org/AAAA/MM/JJ en http://example.org/post/AAAA/MM/JJ/
RewriteRule ^([0-9]{4}/[0-9]{2}/[0-9]{2}/[0-9a-z\-]+)$ post/$1 [NC,L,R=301]

# Pour des URL sympas avec DotClear 2
RewriteBase /journal/

# On enlève index.php de l'adresse 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) index.php/$1 
RewriteRule ^index.php$  index.php/
  • toujours si vous venez d'une version antérieure, pensez à mettre à jour les flux RSS en redirigeant les anciens flux vers les nouveaux. Ces deux nouvelles règles dans le fichier .htaccess feront l'affaire :
Redirect permanent /rss.php http://www.example.org/journal/feed/rss2
Redirect permanent /atom.php http://www.example.org/journal/feed/atom
  • l'utilisation des mots-clés
  • les numéros de billets apparaissent lors de l'export voir l'extension dc1redirect en développement devrait remédier à ce problème.
  • problème de droit lorsque l'on charge un fichier à partir du Gestionnaire de média

(à suivre)