WebArea/Compat/Dotclear2/Fr

From TuxFamilyFAQ
Jump to: navigation, search

L'installation de Dotclear 2 sur Tuxfamily ne pose aucun problème particulier. Cependant, Dotclear stocke par défaut tous ses fichiers, y compris les fichiers privés, dans la partie publique de votre espace web. Ce guide vous explique comment déplacer les fichiers privés vers la partie privée de votre espace web.

Mieux protéger les fichiers privés

Par défaut dans Dotclear...

Par défaut, Dotclear installe tous ses fichiers dans le répertoire public de votre espace web (le répertoire htdocs/), y compris les fichiers privés. Il est donc obligatoire de protéger ces fichiers pour qu'ils ne soient pas accessibles depuis un navigateur, ce que Dotclear réalise par défaut avec un fichier .htaccess.

Ces fichiers, dont l'un d'entre eux contient tout de même le mot de passe en clair pour accéder à votre base de données, ne sont protégés que tant qu'aucune erreur de configuration n'est commise... De plus, cette organisation n'obéit pas à la tradition Unix, où le répertoire htdocs/ ne devrait contenir que les fichiers pouvant être envoyés par le serveur HTTP.

Tuxfamily permet de stocker des fichiers sans qu'ils ne soient accessibles depuis un navigateur : il suffit de les placer dans un répertoire à côté du répertoire htdocs/. Par défaut, et pour vous inciter à suivre cette bonne pratique, Tuxfamily crée d'ailleurs les répertoires php-include/ et tmp/.

Cette page explique comment déplacer les fichiers privés de Dotclear hors de la partie publique du site, sans casser votre blog.

Une arborescence Dotclear type

Si vous avez installé votre blog dans le répertoire htdocs/dotclear/ de votre espace web, l'arborescence ressemble à ceci :

  • htdocs/
    • htdocs/dotclear/
      admin/ 
      répertoire contenant l'interface d'administration de votre blog,
      inc/ 
      répertoire privé contenant la plus grande partie du code de Dotclear, ainsi que vos paramètres de connexion à la base de données,
      themes/ 
      répertoire contenant les thèmes de votre blog,
      cache/ 
      répertoire privé dans lequel Dotclear stocke les pages qu'il génère (pour ne pas les recalculer à chaque visite sur le blog),
      public/ 
      répertoire pour stocker vos fichiers publics,
      plugins/ 
      répertoire privé contenant le code des plugins installé sur votre blog ;
  • php-include/
    • répertoire vide par défaut, inaccessible depuis un navigateur. Il est destiné à contenir le code privé de votre application,
  • tmp/
    • même chose, sauf que ce répertoire est destiné à accueillir les fichiers temporaires créés par votre application.

À quoi ressemblera le résultat

  • htdocs/
    • dotclear/
      admin/ 
      répertoire contenant l'interface d'administration de votre blog,
      themes/ 
      répertoire contenant les thèmes de votre blog,
      public/ 
      répertoire pour stocker vos fichiers publics,
  • php-include/
    • dotclear/
      inc/ 
      répertoire privé contenant la plus grande partie du code de Dotclear, ainsi que vos paramètres de connexion à la base de données,
      admin/ 
      répertoire contenant l'interface d'administration de votre blog,
      plugins/ 
      répertoire privé contenant le code des plugins installé sur votre blog ;
  • tmp/
    • dotclear/ : répertoire de cache.

Quelle version

Les indications données sur cette page ont été testées avec la version 2.1.6 de Dotclear. Les modifications apportées par ce guide désactiveront la possibilité de mettre à jour Dotclear directement depuis l'interface d'administration du blog. À chaque nouvelle version, il faudra donc installer les fichiers manuellement, et probablement répéter les opérations décrites ici pour adapter les fichiers de cette version.

Sauvegarde du blog

Au delà de cette étape, votre blog ne fonctionnera plus jusqu'à ce que vous soyez arrivés à la fin de ce guide.

Faites immédiatement une sauvegarde de votre blog (les fichiers, ainsi que la base de données). Si l'opération venait à mal tourner, vous aurez une sauvegarde à restaurer.

Changement du répertoire des thèmes

Le code qui se trouve dans le répertoire inc/ a besoin de connaître l'emplacement des thèmes de votre blog. Il utilise pour cela les paramètres themes_path et themes_url, stockés dans votre base de données.

  1. Ouvrez l'interface d'administration de votre blog avec un navigateur web,
  2. Allez sur la page about:config,
  3. Remplacez la valeur du champ themes_path par ../../htdocs/dotclear/themes. themes_path indique l'emplacement du répertoire themes/ par rapport au répertoire parent du répertoire inc/,
  4. Laissez le champ themes_url à la valeur themes.

Déplacement des répertoires

Déplacement

Avec votre client FTP, ou en vous connectant via SSH à votre compte Tuxfamily :

  1. créez un répertoire dotclear/ à l'intérieur du répertoire php-include déjà existant,
  2. déplacez htdocs/dotclear/inc vers php-include/dotclear/inc/,
  3. déplacez htdocs/dotclear/plugins vers php-include/dotclear/plugins/,
  4. créez un répertoire dotclear sous le répertoire tmp/ déjà existant,
  5. supprimez le répertoire htdocs/dotclear/cache et tout son contenu.

Configuration du répertoire de cache

Il faut indiquer à Dotclear d'utiliser le répertoire tmp/dotclear à la place du répertoire htdocs/cache pour stocker ses fichiers temporaires. Pour cela, dans le fichier php-include/dotclear/inc/config.php, remplacez la ligne :

// Template cache directory
define('DC_TPL_CACHE',dirname(__FILE__).'/../cache');

par :

// Template cache directory
define('DC_TPL_CACHE',dirname(__FILE__).'/../../../tmp/cache');

L'expression dirname(__FILE__) renvoie le répertoire dans lequel se trouve le fichier config.php, c'est-à-dire dans ce cas php-include/dotclear/inc.

Réparer la partie publique

Dans le fichier dotclear/index.php, il faut indiquer le nouvel emplacement du répertoire inc/. Pour cela, remplacez dans dotclear/index.php la ligne :

require dirname(__FILE__).'/inc/public/prepend.php';

par :

require dirname(__FILE__).'/../../php-include/dotclear/inc/public/prepend.php';

L'expression dirname(__FILE__) renvoie en effet dans le cas présent le répertoire dans lequel se trouve index.php, c'est-à-dire htdocs/dotclear/.

Réparer l'interface d'administration

À cette étape, la partie publique de votre blog devrait fonctionner si le cache est vide. Cependant, l'interface d'administration fait encore référence à l'ancien emplacement du répertoire inc/. Il faut donc indiquer dans chaque fichier PHP du répertoire admin/ où se trouve désormais inc/.

Pour cela, dans chaque fichier PHP du répertoire dotclear/admin/, remplacez les lignes de la forme :

require dirname(__FILE__).'/../inc/admin/prepend.php';

par :

require dirname(__FILE__).'/../../../php-include/dotclear/inc/admin/prepend.php';

Attention : il peut être nécessaire d'effectuer plusieurs remplacements dans un même fichier.

De plus, dans le fichier auth.php, remplacez la ligne :

l10n::set(dirname(__FILE__).'/../locales/'.$dlang.'/main');

par :

l10n::set(dirname(__FILE__).'/../../../php-include/dotclear/locales/'.$dlang.'/main');

Vider le cache

Si vous avez conservé le contenu du répertoire cache/ de Dotclear, il est fort probable que la page d'accueil de votre blog ne s'affiche pas correctement (notamment, les balises {{tpl:...}} de Dotclear s'affichent telles quelles). Il suffit de vider complètement le répertoire de cache de Dotclear pour corriger cela.

Bonus : gestionnaire de médias et espaces de téléchargement

Pour stocker vos fichiers supplémentaires (fichiers attachés à un billet, photos pour des galleries), Dotclear utilise le répertoire htdocs/dotclear/public. Cependant, sur Tuxfamily, il est préférable d'utiliser les espaces de téléchargement pour cette tâche.

Pour que Dotclear utilise votre espace de téléchargement à la place du répertoire dotclear/public/, rendez-vous sur la page about:config de votre interface d'administration Dotclear. Les réglages intéressants sont :

public_path 
cette variable indique le chemin pour accéder au répertoire sur le serveur. Pour utiliser votre espace de téléchargement, il faut indiquer le chemin /data/repository/mon_projet/.
public_url 
cette variable indique l'URL publique sous laquelle le répertoire précédent est accessible. Pour un espace de téléchargement, il s'agit de http://download.tuxfamily.org/mon_projet/.