((/news-custom/public/opensuse.png|logo openSUSE|C|logo openSUSE))
((/news-custom/public/dotclear-logo.png|logo de Dotclear|C|logo de Dotclear))

Pour célébrer les __[huit|http://fr.dotclear.org/blog/post/2011/08/13/Huit-ans|fr]__ ans de [Dotclear|http://fr.dotclear.org/|fr], j’en profite donc pour présenter une méthode pour installer ce fabuleux système de blog sur son ordinateur en «  »local » ».

!!!Pré-requis

* Un serveur Web, [Lighttpd|http://www.lighttpd.net/|en]
* PHP5 avec le module FastCGI (indispensable) ou [PHP-FPM|http://php-fpm.org/|en]
* [SQLite|http://www.sqlite.org/|en] $$Je n’avais pas envie de passer du temps à configurer MySQL ou PostgreSQL.$$ (__installez bien le module PHP pour cette base de données__)

Tous ces composants ont été installés via __[zypper|http://en.wikipedia.org/wiki/ZYpp|en]__ (vous pouvez très bien passer par __Yast2__).

!!!Régler le  »daemon »

Comme il s’agit de mon ordinateur de bureau, je n’ai pas l’intention de le lancer à chaque démarrage, il sera utilisé ponctuellement.

///
# chkconfig –list | grep lighttpd
lighttpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
///

On constate qu’il est activé lorsque le système est en mode  »multi-users » (numéros 3 et 5).

Nous allons donc désactiver ce service

///
# chkconfig –del lighttpd
# chkconfig –list | grep lighttpd
lighttpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
///

Désormais, on le lancera de cette manière :

///
# /etc/init.d/lighttpd start
///

!!!Configuration du serveur

Dans cette partie, nous allons modifier (légèrement) le comportement par défaut de Lighttpd.

Le fichier principale s’appelle @@lighttpd.conf@@, il est situé dans @@/etc/lighttpd@@.

J’ai modifié la valeur des variables __server_root__ , __server.use-ipv6__ et __server.bind__.

///[…]
var.server_root = « /usr/www »

[…]
##
## Use IPv6?
##
server.use-ipv6 = « disable »

##
## bind to a specific IP
##
server.bind = « 127.0.0.1 »

[…]
///

Il reste à créer les répertoires @@/usr/www/htdocs@@ :

///
# mkdir -p /usr/www/htdocs
# cd /usr/www ; chown -R lighttpd:lighttpd .
///

Ensuite, on va autoriser le  »listing » des répertoires situés dans __server_root__, il faut modifier le fichier @@/etc/lighttpd/conf.d/dirlisting.conf@@

///[…]
##
## Enabled Directory listing
##
dir-listing.activate = « enable »

##
## Hide dot files from the listing?
## By default they are listed.
##
dir-listing.hide-dotfiles = « enable »
///

Pour une question de facilité, on va activer le module __userdir__, il faut décommenter la ligne correspondante dans le fichier @@/etc/lighttpd/modules.conf@@ :

///
[…]

##
## mod_userdir
##
include « conf.d/userdir.conf »

[…]
///

Vous pouvez activer la variable __userdir.exclude-user__ dans le fichier @@/etc/lighttpd/conf.d/userdir.conf@@

///
[…]
userdir.exclude-user = ( « root » )

[…]
///

Il nous reste plus qu’à créer le dossier @@public_html/@@ pour chaque utilisateur.

///
% mkdir ~/public_html
///

Vous pouvez maintenant tester le serveur.

!!!PHP

Nous allons utilisé PHP avec le module [FastCGI|http://fr.wikipedia.org/wiki/FastCGI|fr].

On va rechercher le nom exacte de ce binaire :

///
% ls /usr/bin/php* | grep cgi
/usr/bin/php-cgi **
/usr/bin/php-cgi5
///

__**__ : Il s’agit d’un lien symbolique vers @@/etc/alternatives/php-cgi@@, donc on l’oublie (vérifiez tout de même avec @@ls -l /usr/bin/php-cgi*@@).

On va rajouter ce module au démarrage du serveur, grâce au fichier @@/etc/lighttpd/modules.conf@@

///
[…]
##
## FastCGI (mod_fastcgi)
##
include « conf.d/fastcgi.conf »

[…]
///

Il ne nous reste plus qu’à rajouter une directive dans le fichier @@/etc/lighttpd/conf.d/fastcgi.conf@@ :

///
[…]

fastcgi.server = ( « .php » =>
( « localhost » =>
(
« socket » => socket_dir + « /php-fastcgi-0.socket »,
« bin-path » => « /usr/bin/php-cgi5 »,
« max-procs » => 1,
« check-local » => « disable »
)
)
)

[…]
///

On peut relancer notre serveur.

Ici on utilise un  »socket UNIX », mais on peut très bien utiliser un  »socket » utilisant la pile TCP/IP.

!!!Installation de Dotclear

1. Téléchargez et installez le dans le dossier @@public_html/@@.

2. Il faut rendre accessible en écriture le répertoire @@cache/@@ :

///
% chmod a+w dotclear/cache
///

3. On va créer le « fichier » de la base de données (uniquement pour SQLite)

///
% touch db/database.db ; chmod a+w db/database.db
% chmod a+w db/
///

Vous pouvez donner un autre nom, ceci est un exemple.

4. On copie le fichier @@inc/config.php.in@@ en @@ inc/config.php@@ et on l’édite. Les variables à modifier sont :

* DC_DBDRIVER
* DC_DBNAME (mettre le chemin complet depuis la racine du fichier du §3)
* DC_MASTER_KEY

On termine l’installation en faisant pointer notre navigateur vers http://127.0.0.1/dotclear/admin/install/

!!!Finaliser la configuration du serveur

On va empêcher le  »listing » de la base de données, dans le fichier @@/etc/lighttpd/conf.d/dirlisting.conf@@ on va rajouter une expression régulière à la variable __dir-listing.exclude__ :

///
[…]

##
## list of regular expressions. Files that match any of the specified
## regular expressions will be excluded from directory listings.
##
dir-listing.exclude = ( « ~$ », « .+.db$ » )

[…]
///

On va également interdir l’accès (depuis un navigateur) aux répertoires @@dotclear/db/@@ et @@dotclear/admin/install/@@. Pour cela il faut activer le module, __mod_access__ (via le fichier @@/etc/lighttpd/modules.conf@@).

Dans le fichier @@/etc/lighttpd/lighttpd.conf@@ on rajoute ces lignes :

///
[…]

##
## deny access to dotclear/db/ and dotclear/admin/install/
$HTTP[« url »] =~ « (/db/|/install/) » {
url.access-deny = ( «  » )
}
///

On va empêcher le  »listing » du répertoire @@public/@@, où sont stockés les médias tels que les images, les vidéos, etc. Dans le fichier @@/etc/lighttpd/conf.d/dirlisting.conf@@ on rajoute ces lignes :

///
[…]

##
## Disable listin into public/ directory
$HTTP[« url »] =~ « /public/ » {
dir-listing.activate = « disable »
}

[…]
///

Maintenant vous pouvez passer des heures à configurer votre blog.