Rendre DotClear plus joli avec php5.3 fpm et lighttpd
Par Mathieu Lecarme le mercredi, 6 octobre 2010, 20:34 - Lien permanent
Bon, ok, c'est de la beauté intérieur. Mais ce sera moins gourmand en RAM et plus véloce qu'avec le classique Apache. Voici les informations pour déployer un Dotclear sur un lighttpd avec un PHP 5.3.3.
Lighttpd
J'ai choisi lighttpd pour arrêter de me battre avec les fichiers de conf d'Apache. Depuis, je suis devenu accro, mais Nginx est aussi tentant, plus moche que lighty, mais plus vivant.
Deux grosses différences avec Apache, il n'y a ni mod_php ni mod_rewrite. Tant mieux.
Sur Ubuntu, le fichier de conf de lighttpd est découpé en petit morceau (à la mode apache). Il faut donc créer un fichier en .conf dans le dossier /etc/lighttpd/conf-available/ puis de faire un lien symbolique vers /etc/lighttpd/conf-enabled/
On commence par réclamer des modules :
server.modules += (
"mod_rewrite",
"mod_fastcgi"
)
On peu ensuite attaquer le virtualhosting
$HTTP["host"] == "blog.garambrogne.net" {
static-file.etags = "enable"
accesslog.filename = "/var/log/lighttpd/blog.log"
server.document-root = "/data/www//blog.garambrogne.net"
fastcgi.server = ( ".php" => (
("host" => "127.0.0.1",
"port" => 9000
)
))
url.rewrite-once = ( "^/(index\.php|admin|public|images|themes).*" => "$0",
"^/([^?]*)(?:\?(.*))?" => "/index.php?$1&$2"
)
}
Il faut reconnaitre que c'est moins moche que du Apache, non? L'idée de base est de définir un bloc via une clause, puis d'y définir des réglages. La conf est bien lisible, il y a juste deux points à remarquer. PHP est sur un serveur fastcgi. Pour avoir de jolis urls, il y a réécriture. On laisse tranquille les urls statiques, pour les autres, on réécrit l'url en mettant index.php au début. C'est tout. On profite des réglages par défaut de lighttpd.
Les réglages à faire dans Dotclear sont simple. Dans Paramètres du blog :

Dotclear rale, mais ça passe bien.
PHP fpm
J'avais déjà écrit un billet sur php-fpm : Apache est mort, depuis, ça a évolué, fpm fait parti de php depuis la version 5.3.3.
C'est en compilant des applications que l'on se rends compte du service rendu par les packages. Il manque forcément des morceaux, ça prends des plombes, et il faut recommencer à chaque mise à jour. Mais en compilant son application, ON EST MODERNE, ON VOIT LE FUTUR. La doc de fpm est suffisante. Il y a une pétouille sur Ubuntu, il n'arrive pas à découvrir les lib jpeg et png. Sur une Ubuntu un peu vieille, il faut aussi se fader la compilation de libevent, ce qui ce fait sans douleurs. Si on ne fait pas attention avec les options de configuration de php, on peut tomber sur des bugs qui n'existent pas, comme la conversion des images qui fonctionnent sur du jpeg mais pas sur du png. Dotclear, par exemple estime qu'il est impensable de ne pas avoir le module mysql alors que je pensais que mysqli était le drivers par défaut.
./configure --prefix=/opt/php533 --enable-fpm \ --with-fpm-user=www-data --with-openssl \ --with-fpm-group=nogroup --disable-cgi --with-zlib \ --with-pcre-regex --with-bz2 --with-curl --with-gd \ --enable-mbstring --with-mysqli --with-pdo-mysql \ --without-pdo-sqlite --enable-sockets --with-tidy \ --enable-zip --with-pear --with-libevent-dir=/opt/libevent \ --enable-exif --with-jpeg-dir=/usr/lib/ \ --with-png-dir=/usr/lib/ --with-mysql
Voilà, avec ça, le futur est à portée de main. Ca permet de valider le fait que Dotclear est pas codé avec les pieds, le passage en 5.3 se fait sans douleur, et il n'est pas marié avec Apache.

