Introduction

IconeCherokee est un petit serveur web écrit en C et ne dépendant que de la libC. Même si ses fonctions sont limités par rapport au mastodonte Apache, il est largement suffisant pour un serveur web personnel. Il supporte quand même la plupart des fonctions de base que l'on peux attendre d'un serveur web dans un environnement non professionnel[1]. Nous pouvons citer :

Enfin, sa légèreté lui permet de fonctionner facilement sur des machines un peu anciennes.

Installation

La manière la plus facile est d'installer la version située dans les dépots dapper. Pour cela, un simple sudo apt-get install cherokee suffit sans problème.

Mais la version disponible est la 0.4.29, version assez ancienne, qui souffre d'un certain nombre de bugs et semble aussi avoir une faille de sécurité[2] :-o Pour contrer cela, j'ai réalisé un petit backport de la version disponible dans Edgy, à savoir la 0.5.4 qui est la dernière stable disponible. Pour ceux qui sont intéressés, vous trouverez les détails en fin d'article.

Pour l'installer, téléchargez les paquets disponibles ici et installez les avec dpkg :
sudo dpkg -i cherokee_0.5.4-1_i386.deb libcherokee-base0_0.5.4-1_i386.deb libcherokee-server0_0.5.4-1_i386.deb

Pointez alors votre navigateur vers http://localhost/ et vous avez accès au répertoire racine.
Les fichiers du site web sont situés dans /var/www et les fichiers de configuration dans /etc/cherokee

Configuration

Générale

Cela se passe dans le fichier /etc/cherokee/cherokee.conf. Les paramètres les plus intérressants sont

  • Port 80 : si vous voulez changer le port d'écoute par défaut
  • Listen 127.0.0.1 : à commenter pour que le serveur soit accessible de l'extèrieur
  • User et Group : qui définissent l'utilisateur qui execute le serveur

La configuration des différents sites se fait dans des fichiers sous /etc/cherokee/sites-available. Il ne seront accessibles que si un lien pointe vers eux dans /etc/cherokee/sites-enabled. Vous disposez au départ de deux fichiers default et example.com. Ce deuxième n'étant pas activé.

hôte virtuel

Si vous hébergez plusieurs adresses sur le même serveur, vous pouvez les configurer pour avoir des fonctionnement différents, par exemple photos.chezmoi.com ou websvn.chezmoi.com ...

Sinon, utilisez le fichier default et passez au paragraphe suivant.

Commencez par créer un fichier dans /etc/cherokee/sites-availables/ à partir du fichier example.com puis liez le dans sites-enabled :
sudo cp /etc/cherokee/sites-availables/example.com /etc/cherokee/sites-availables/photos
sudo ln -s /etc/cherokee/sites-availables/photos /etc/cherokee/sites-enabled/photos
Il devrait ressembler à cela :

Server photos.chezmoi.com {
       DocumentRoot /var/wwwphotos/ # la racine de votre galerie photo
       DirectoryIndex index.php, index.htm
       Directory / {
               Handler common
       }
       # recopiez ici la configuration de php si necessaire
}
php fcgi

Le fcgi est une évolution de cgi qui permet d'accélérer l'éxecution des scripts[3]. Commencez par installer php compilé de cette manière :
icone sudo apt-get install php4-cgi
$ php-cgi -v
PHP 4.4.2-1build1 (cgi-fcgi) (built: Apr 6 2006 09:40:55)
puis éditez le fichier du site par défaut (ou de votre hôte virtuel) :
sudo vi /etc/cherokee/sites-available/default
et remplacer les dernières lignes par celles-ci :

Extension php, php3, php4 {
       Handler fcgi {
               Server localhost:8000 {
                       Env PHP_FCGI_CHILDREN     "5"
                       Interpreter "/usr/bin/php-cgi -b 8000"
               }
       }
}

Il vous faut alors redémarrer le serveur web :
sudo invoke-rc.d cherokee restart
Vous pouvez tester que cela fonctionne en ajoutant un fichier info.php à la racine de votre site[4] :

<?php
   phpinfo();
?>

Vous pouvez aussi utiliser un fichier common.conf que vous inclurez dans les différents hôtes virtuels :

Include /etc/cherokee/sites-enabled/common.conf
Authentification

Pour une authentification simple, il suffit d'ajouter ces lignes dans votre directive Directory :

Auth Basic {
   Name "Test Login"
   Method plain {
      PasswdFile  /etc/cherokee/passwords
   }
}

Le fichier password[5] est de la forme :

user:password

Pour plus de sécurité, vous pouvez utiliser d'autres manières de conserver les mot de passe voir une Auth Digest qui évite d'envoyer les passwords en clair[6]

Pour aller plus loin ...

Il faut lire la documentation ;)

Bonus : le backport pour Ubuntu Dapper

Note: Vous pouvez vous contenter de télécharger directement les paquets binaires du backport cherokee. Cette procédure n'est la qu'a titre informatif.
J'ai simplement récupéré les paquets sources de edgy et je les ai recompilés avec ma dapper. Voici rapidement la procédure que j'ai suivie : Remplacer le dépot source universe de dapper par celui d'edgy dans /etc/apt/sources.list

par exemple par la ligne : deb-src ftp://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu edgy universe
$ sudo apt-get update

Télécharger les sources de cherokee et compiler le paquet :

$ cd /tmp/cherokee
$ apt-get source cherokee
$ cd cherokee-0.5.4
# tant que ca ne compile pas :
  $ fakeroot dpkg-buildpackage
  $ sudo apt-get install <PaquetManquant>

Les paquets sont alors créés dans le répertoire parent et il ne reste plus qu'a les installer :)

Attention : Pensez bien à rétablir votre sources.list avec le dépot pour dapper

Notes

[1] voir même dans un professionnel si les besoins sont simples

[2] même si je n'ai pas réussit à la reproduire

[3] en bref, on dispose d'un serveur ce qui permet d'éviter des fork à chaque appel. Plus de détails ici

[4] ne le laissez pas en place après tests, il donne beaucoup trop d'informations sur votre installation

[5] ne devrait être lisible que par l'utilisateur du site web

[6] mais je n'ai pas réussit à la faire fonctionner :(