AviGNU - Mot-clé - LighttpdGroupe d'utilisateurs de logiciels libres du Grand Avignon2024-01-02T17:40:01+01:00Administrateururn:md5:8ed776652564792dba453bac492a5a6cDotclearInstallation de Dotclear en local, sous openSUSEurn:md5:4f84da0a368b59ffa4e1371c4d467b5a2011-08-13T15:54:00+02:002011-08-23T21:56:59+02:00Olivier DuchateauDocumentationDotclearFastCGILighttpdopenSUSESQLite <p><img src="http://avignu.tuxfamily.org/news-custom/public/opensuse.png" alt="logo openSUSE" style="display:block; margin:0 auto;" title="logo openSUSE" />
<img src="http://avignu.tuxfamily.org/news-custom/public/dotclear-logo.png" alt="logo de Dotclear" style="display:block; margin:0 auto;" title="logo de Dotclear" /></p>
<p>Pour célébrer les <strong><a href="http://fr.dotclear.org/blog/post/2011/08/13/Huit-ans" hreflang="fr">huit</a></strong> ans de <a href="http://fr.dotclear.org/" hreflang="fr">Dotclear</a>, j'en profite donc pour présenter une méthode pour installer ce fabuleux système de blog sur son ordinateur en « <em>local</em> ».</p>
<h3>Pré-requis</h3>
<ul>
<li>Un serveur Web, <a href="http://www.lighttpd.net/" hreflang="en">Lighttpd</a></li>
<li>PHP5 avec le module FastCGI (indispensable) ou <a href="http://php-fpm.org/" hreflang="en">PHP-FPM</a></li>
<li><a href="http://www.sqlite.org/" hreflang="en">SQLite</a> <sup>[<a href="http://avignu.tuxfamily.org/index.php?post/2011/08/13/Installation-de-Dotclear-en-local%2C-sous-openSUSE#pnote-25-1" id="rev-pnote-25-1">1</a>]</sup> (<strong>installez bien le module PHP pour cette base de données</strong>)</li>
</ul>
<p>Tous ces composants ont été installés via <strong><a href="http://en.wikipedia.org/wiki/ZYpp" hreflang="en">zypper</a></strong> (vous pouvez très bien passer par <strong>Yast2</strong>).</p>
<h3>Régler le <em>daemon</em></h3>
<p>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.</p>
<pre>
# chkconfig --list | grep lighttpd
lighttpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
</pre>
<p>On constate qu'il est activé lorsque le système est en mode <em>multi-users</em> (numéros 3 et 5).</p>
<p>Nous allons donc désactiver ce service</p>
<pre>
# chkconfig --del lighttpd
# chkconfig --list | grep lighttpd
lighttpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
</pre>
<p>Désormais, on le lancera de cette manière :</p>
<pre>
# /etc/init.d/lighttpd start
</pre>
<h3>Configuration du serveur</h3>
<p>Dans cette partie, nous allons modifier (légèrement) le comportement par défaut de Lighttpd.</p>
<p>Le fichier principale s'appelle <code>lighttpd.conf</code>, il est situé dans <code>/etc/lighttpd</code>.</p>
<p>J'ai modifié la valeur des variables <strong>server_root</strong> , <strong>server.use-ipv6</strong> et <strong>server.bind</strong>.</p>
<pre>[...]
var.server_root = "/usr/www"
[...]
##
## Use IPv6?
##
server.use-ipv6 = "disable"
##
## bind to a specific IP
##
server.bind = "127.0.0.1"
[...]
</pre>
<p>Il reste à créer les répertoires <code>/usr/www/htdocs</code> :</p>
<pre>
# mkdir -p /usr/www/htdocs
# cd /usr/www ; chown -R lighttpd:lighttpd .
</pre>
<p>Ensuite, on va autoriser le <em>listing</em> des répertoires situés dans <strong>server_root</strong>, il faut modifier le fichier <code>/etc/lighttpd/conf.d/dirlisting.conf</code></p>
<pre>[...]
##
## Enabled Directory listing
##
dir-listing.activate = "enable"
##
## Hide dot files from the listing?
## By default they are listed.
##
dir-listing.hide-dotfiles = "enable"
</pre>
<p>Pour une question de facilité, on va activer le module <strong>userdir</strong>, il faut décommenter la ligne correspondante dans le fichier <code>/etc/lighttpd/modules.conf</code> :</p>
<pre>
[...]
##
## mod_userdir
##
include "conf.d/userdir.conf"
[...]
</pre>
<p>Vous pouvez activer la variable <strong>userdir.exclude-user</strong> dans le fichier <code>/etc/lighttpd/conf.d/userdir.conf</code></p>
<pre>
[...]
userdir.exclude-user = ( "root" )
[...]
</pre>
<p>Il nous reste plus qu'à créer le dossier <code>public_html/</code> pour chaque utilisateur.</p>
<pre>
% mkdir ~/public_html
</pre>
<p>Vous pouvez maintenant tester le serveur.</p>
<h3>PHP</h3>
<p>Nous allons utilisé PHP avec le module <a href="http://fr.wikipedia.org/wiki/FastCGI" hreflang="fr">FastCGI</a>.</p>
<p>On va rechercher le nom exacte de ce binaire :</p>
<pre>
% ls /usr/bin/php* | grep cgi
/usr/bin/php-cgi **
/usr/bin/php-cgi5
</pre>
<p><strong>**</strong> : Il s'agit d'un lien symbolique vers <code>/etc/alternatives/php-cgi</code>, donc on l'oublie (vérifiez tout de même avec <code>ls -l /usr/bin/php-cgi*</code>).</p>
<p>On va rajouter ce module au démarrage du serveur, grâce au fichier <code>/etc/lighttpd/modules.conf</code></p>
<pre>
[...]
##
## FastCGI (mod_fastcgi)
##
include "conf.d/fastcgi.conf"
[...]
</pre>
<p>Il ne nous reste plus qu'à rajouter une directive dans le fichier <code>/etc/lighttpd/conf.d/fastcgi.conf</code> :</p>
<pre>
[...]
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => socket_dir + "/php-fastcgi-0.socket",
"bin-path" => "/usr/bin/php-cgi5",
"max-procs" => 1,
"check-local" => "disable"
)
)
)
[...]
</pre>
<p>On peut relancer notre serveur.</p>
<p>Ici on utilise un <em>socket UNIX</em>, mais on peut très bien utiliser un <em>socket</em> utilisant la pile TCP/IP.</p>
<h3>Installation de Dotclear</h3>
<p>1. Téléchargez et installez le dans le dossier <code>public_html/</code>.</p>
<p>2. Il faut rendre accessible en écriture le répertoire <code>cache/</code> :</p>
<pre>
% chmod a+w dotclear/cache
</pre>
<p>3. On va créer le « fichier » de la base de données (uniquement pour SQLite)</p>
<pre>
% touch db/database.db ; chmod a+w db/database.db
% chmod a+w db/
</pre>
<p>Vous pouvez donner un autre nom, ceci est un exemple.</p>
<p>4. On copie le fichier <code>inc/config.php.in</code> en <code> inc/config.php</code> et on l'édite. Les variables à modifier sont :</p>
<ul>
<li>DC_DBDRIVER</li>
<li>DC_DBNAME (mettre le chemin complet depuis la racine du fichier du §3)</li>
<li>DC_MASTER_KEY</li>
</ul>
<p>On termine l'installation en faisant pointer notre navigateur vers http://127.0.0.1/dotclear/admin/install/</p>
<h3>Finaliser la configuration du serveur</h3>
<p>On va empêcher le <em>listing</em> de la base de données, dans le fichier <code>/etc/lighttpd/conf.d/dirlisting.conf</code> on va rajouter une expression régulière à la variable <strong>dir-listing.exclude</strong> :</p>
<pre>
[...]
##
## list of regular expressions. Files that match any of the specified
## regular expressions will be excluded from directory listings.
##
dir-listing.exclude = ( "~$", ".+\.db$" )
[...]
</pre>
<p>On va également interdir l'accès (depuis un navigateur) aux répertoires <code>dotclear/db/</code> et <code>dotclear/admin/install/</code>. Pour cela il faut activer le module, <strong>mod_access</strong> (via le fichier <code>/etc/lighttpd/modules.conf</code>).</p>
<p>Dans le fichier <code>/etc/lighttpd/lighttpd.conf</code> on rajoute ces lignes :</p>
<pre>
[...]
##
## deny access to dotclear/db/ and dotclear/admin/install/
$HTTP["url"] =~ "(/db/|/install/)" {
url.access-deny = ( "" )
}
</pre>
<p>On va empêcher le <em>listing</em> du répertoire <code>public/</code>, où sont stockés les médias tels que les images, les vidéos, etc. Dans le fichier <code>/etc/lighttpd/conf.d/dirlisting.conf</code> on rajoute ces lignes :</p>
<pre>
[...]
##
## Disable listin into public/ directory
$HTTP["url"] =~ "/public/" {
dir-listing.activate = "disable"
}
[...]
</pre>
<p>Maintenant vous pouvez passer des heures à configurer votre blog.</p>
<div class="footnotes"><h4>Notes</h4>
<p>[<a href="http://avignu.tuxfamily.org/index.php?post/2011/08/13/Installation-de-Dotclear-en-local%2C-sous-openSUSE#rev-pnote-25-1" id="pnote-25-1">1</a>] Je n'avais pas envie de passer du temps à configurer MySQL ou PostgreSQL.</p></div>