((/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.