Salut la liste,
Cherokee est un exemple de serveur qui booste pas mal, offre pleins de possibilités super intéressantes.
Bonne nouvelle, l’installation dans Cherokee de SPIP se déroule sans aucun problème… jusqu’à ce qu’on veuille utiliser des urls propres / arbo / etc.
Cherokee ne supporte pas les .htaccess, propres à Apache, donc il faut trouver l’équivalent dans les fichiers de config.
J’ai bien apprécié le message d’avertissement qui apparait en fin d’installation, mais je suis resté un peu désarmé devant tout ce charabia.
Pour Cherokee, j’ai donc dû refaire (laborieusement) l’équivalent des .htaccess et des restrictions au niveau des droits d’écriture. Voici les règles que j’ai utilisées, extraites du fichier de config (bon, on ne touche jamais à ce fichier, c’est juste pour ressortir toutes les valeurs).
Est-ce que, en pratique, il ne faudrait pas, en fin d’installation de SPIP, donner accès à des infos supplémentaires pour ceux qui sont dans les situations comme la mienne (genre avec Nginx, lighttpd, etc…) ?
---- Les parties du fichier /etc/cherokee/cherokee.conf qui ont été changées par l’interface d’admin --------------------------------
On commence par dire que les fichiers seront traités par PHP :
vserver!10!rule!1500!disabled = 0
vserver!10!rule!1500!encoder!gzip = 1
vserver!10!rule!1500!handler = fcgi
vserver!10!rule!1500!handler!balancer = round_robin
vserver!10!rule!1500!handler!balancer!source!1 = 1
vserver!10!rule!1500!handler!error_handler = 1
vserver!10!rule!1500!match = extensions
vserver!10!rule!1500!match!extensions = php
vserver!10!rule!1500!match!final = 0
vserver!10!rule!1500!timeout = 30
Pas de changement pour les fichiers qui existent déjà
vserver!10!rule!1400!disabled = 0
vserver!10!rule!1400!encoder!gzip = allow
vserver!10!rule!1400!handler = common
vserver!10!rule!1400!handler!allow_dirlist = 1
vserver!10!rule!1400!handler!allow_pathinfo = 0
vserver!10!rule!1400!handler!backup = 0
vserver!10!rule!1400!handler!date = 1
vserver!10!rule!1400!handler!group = 0
vserver!10!rule!1400!handler!hidden = 0
vserver!10!rule!1400!handler!iocache = 1
vserver!10!rule!1400!handler!redir_symlinks = 0
vserver!10!rule!1400!handler!size = 1
vserver!10!rule!1400!handler!symlinks = 1
vserver!10!rule!1400!handler!theme = default
vserver!10!rule!1400!handler!user = 0
vserver!10!rule!1400!match = exists
vserver!10!rule!1400!match!final = 1
vserver!10!rule!1400!match!iocache = 0
vserver!10!rule!1400!match!match_any = 1
vserver!10!rule!1400!match!match_index_files = 1
vserver!10!rule!1400!match!match_only_files = 1
vserver!10!rule!1400!no_log = 0
vserver!10!rule!1400!only_secure = 0
Le contenu de /IMG et /local est renvoyé en mode “éléments statiques”
vserver!10!rule!1300!disabled = 0
vserver!10!rule!1300!encoder!gzip = allow
vserver!10!rule!1300!expiration = max
vserver!10!rule!1300!handler = file
vserver!10!rule!1300!handler!iocache = 1
vserver!10!rule!1300!match = or
vserver!10!rule!1300!match!final = 1
vserver!10!rule!1300!match!left = directory
vserver!10!rule!1300!match!left!directory = /IMG
vserver!10!rule!1300!match!right = directory
vserver!10!rule!1300!match!right!directory = /local
vserver!10!rule!1300!no_log = 0
vserver!10!rule!1300!only_secure = 0
Un appel à un fichier de /config ou /tmp retourne une erreur 404
Règle SUPER IMPORTANTE, à définir obligatoirement !!
vserver!10!rule!1200!disabled = 0
vserver!10!rule!1200!handler = custom_error
vserver!10!rule!1200!handler!error = 404
vserver!10!rule!1200!match = or
vserver!10!rule!1200!match!final = 1
vserver!10!rule!1200!match!left = directory
vserver!10!rule!1200!match!left!directory = /tmp
vserver!10!rule!1200!match!right = directory
vserver!10!rule!1200!match!right!directory = /config
vserver!10!rule!1200!no_log = 0
vserver!10!rule!1200!only_secure = 0
Y’a d’autres règles (pour phpmyadmin, les répertoires de Cherokee, etc…)
Ensuite, les règles principales du fichier .htaccess
vserver!10!rule!500!disabled = 0
vserver!10!rule!500!encoder!gzip = allow
vserver!10!rule!500!handler = redir
vserver!10!rule!500!handler!rewrite!1!regex = /(rubrique|article|breve|auteur|mot|site)([0-9]+)(.html)?$
vserver!10!rule!500!handler!rewrite!1!show = 0
vserver!10!rule!500!handler!rewrite!1!substring = /spip.php?page=$1&id_$1=$2
vserver!10!rule!500!match = request
vserver!10!rule!500!match!final = 1
vserver!10!rule!500!match!request = /(rubrique|article|breve|auteur|mot|site)([0-9]+)(.html)?$
vserver!10!rule!500!no_log = 0
vserver!10!rule!500!only_secure = 0
vserver!10!rule!400!disabled = 0
vserver!10!rule!400!encoder!gzip = allow
vserver!10!rule!400!handler = redir
vserver!10!rule!400!handler!rewrite!1!regex = /([1-9][0-9])$
vserver!10!rule!400!handler!rewrite!1!show = 0
vserver!10!rule!400!handler!rewrite!1!substring = /spip.php?action=redirect&type=article&id=$1
vserver!10!rule!400!match = request
vserver!10!rule!400!match!final = 1
vserver!10!rule!400!match!request = /([1-9][0-9])$
vserver!10!rule!400!no_log = 0
vserver!10!rule!400!only_secure = 0
vserver!10!rule!300!disabled = 0
vserver!10!rule!300!encoder!gzip = allow
vserver!10!rule!300!handler = redir
vserver!10!rule!300!handler!rewrite!1!regex = /[^.]+(.html)?$
vserver!10!rule!300!handler!rewrite!1!show = 0
vserver!10!rule!300!handler!rewrite!1!substring = /spip.php?url_propre=$0
vserver!10!rule!300!match = request
vserver!10!rule!300!match!final = 1
vserver!10!rule!300!match!request = /[^.]+(.html)?$
vserver!10!rule!300!no_log = 0
vserver!10!rule!300!only_secure = 0
On interdit l’accès aux fichiers .svn (est-ce vraiment utile ?)
vserver!10!rule!200!disabled = 0
vserver!10!rule!200!handler = custom_error
vserver!10!rule!200!handler!error = 404
vserver!10!rule!200!match = request
vserver!10!rule!200!match!final = 1
vserver!10!rule!200!match!request = /(.*/)?.svn
Après la dernière règle (celle par défaut), la déclaration de la ressource ‘php’ utilisée pour la 1ère règle
En principe, PHP est détecté automatiquement, mais dans mon cas j’ai dû le déclarer avant d’activer le module PHP
source!1!env!PHP_FCGI_CHILDREN = 5
source!1!env!PHP_FCGI_MAX_REQUESTS = 490
source!1!host = 127.0.0.1:47990
source!1!interpreter = /usr/bin/php-cgi -b 127.0.0.1:47990
source!1!nick = PHP Interpreter
source!1!type = interpreter
--------------------------------------------- Fin du fichier ---------------------------------------------
Je ne fais pas de tutoriel pour l’instant :
- parceque dans les 4 configurations testées [ Ubuntu 9.04, CentOS 5, Debian 5 stable (Lenny) et Debian 5 Testing (Squeeze) ], seule la dernière configuration a marché pour l’installation de Cherokee + PHP + MySQL (les doigts dans le nez, d’ailleurs : je n’ai fais que suivre ce tuto : http://www.bastien-louche.fr/2010/04/installation-cherokee-php5-debian/)
- … sauf que dans la version actuelle de Cherokee récupérée par apt-get (0.99.44, du 23 mars), il y a un bug avec Python2.5 (qui semble être corrigé en version 0.99.49). La compilation est une option que j’ai testée dans la autres environnements, mais à chaque fois on sort trop du côté “plug&play” et j’optenais systématiquement un environnement incomplet (exemple : liaison avec rrdtool pas reconnue)
- un peu par manque de temps aussi
A suivre donc.
Est-ce que d’autres ont un retour d’expérience sur Cherokee (installation et paramétrage pour SPIP) ?
.Gilles
