Installation et configuration de Cherokee sous Ubuntu

Publié le 17 mars 2010 par Nicolargo

C'est en lisant le dernier GLMF que je suis tombé sur l'article de Carl Chenet sur le serveur Web Cherokee. Ce serveur libre (licence GPL) s'annonce  stable (comme Apache), rapide (plus qu'Apache) et facile à configurer (pas comme Apache).Écrit en langage C, il propose en standard une interface Web de configuration et un système de plugins permettant de facilement adapter le serveur à nos besoins.

Nous allons donc voir le détail de l'installation de Cherokee sur une distribution GNU/Linux Ubuntu 9.10 ainsi que sa configuration standard.

Une vidéo de mise en bouche

Avant de commencer, voici un screencast d'introduction à Cherokee (en Anglais):

Cherokee Web Server - Introduction from alobbs on Vimeo.

Installation de Cherokee

Cherokee se trouve dans les dépôts standard d'Ubuntu. Seulement, la version disponible date un peut (0.99.19-1build1 au moement de l'écriture de cet article). Heureusement, il existe dans les PPA une version plus récente. On commence donc par ajouter le dépôt PPA en question:

sudo add-apt-repository ppa:cherokee-webserver
sudo aptitude update

Ensuite on passe à l'installation complète (avec support du PHP et HTTPS):

sudo aptitude install cherokee php5-cgi libcherokee-mod-rrd rrdtool libcherokee-mod-libssl openssl

On teste l'installation en pointant son navigateur Web vers l'URL: http://192.168.29.129/ (remplacer l'adresse IP par celle du serveur sur lequel vous avez installé Cherokee...). La page suivante devrait apparaitre devant vos yeux ébahis.

Si vous avez lu l'introduction vous avez noté qu'il y a une interface Web de configuration (pas besoin d'aller trifouiller des tonnes de fichiers textes...). La  configuration cette interface d'administration (sic...) s'effectue grâce aux commandes suivantes:

cherokee-admin -b

Login:
 User:   admin
 One-time Password: goixKrnGLTtV4nZt

Web Interface:
 URL:   http://localhost:9090/

Il est possible de filtrer les adresses IP sources (celle qui on le droit d'administrer Cherokee en utilisant l'option -b=192.168.29.100 seul la machine d'adresse IP 192.168.29.100 pourra accéder à l'interface d'adminsitration).

Il ne reste plus qu'a pointer son navigateur Web vers l'URL: http://192.168.29.129:9090 (ou http://localhost:9090 si vous êtes directement sur la machine).

Configuration de Cherokee

On commence la visite du propriétaire avec le menu Etat qui permet d'avoir une vue sur votre serveur Web avec notamment un graphe sur la charge du serveur (grâce à RRD):

On peut également y voir le répertoire par défaut ou doit être stocké le contenu de votre site: "Default WWW:    /var/www"

Par exemple on va créer la superbe page HTML suivante:

cd /var/www
mv index.html index.html.old
vi index.html
<HTML>
<BODY>
Une belle page HTML
</BODY>
</HTML>

Il suffit de recharger l'URL http://192.168.29.129/ pour voir s'afficher la page.

On poursuit par la découverte du deuxième menu de l'interface d'administration de Cherokee: Général. L'onglet Réseau permet de configurer le comportement de votre serveur. C'est notamment là qu'il faut activer le type de graphe RRDtools afin d'avoir de beau graphes dans le menu Etat.

On passe ensuite à l'onglet Port à écouter qui comme son nom l'indique permet de configurer les ports TCP en écoutes pour les requêtes HTTP (c'est le port 80 qui est défini par défaut). Il est possible de configurer plusieurs ports d'écoutes en HTTP et HTTPs (on reviendra sur ce point un peu plus loin):

On passe ensuite à l'onglet Permission du serveur ou l'on peut configurer le nom et le groupe système avec lequel Cherokee va être lancé:

On passe ensuite à la partie que je trouve la plus intéressante par rapport aux autres serveurs Web: la simplicité de création des Serveurs Virtuels.

Un serveur web virtuel permet d'associer un nom de machine (par exemple blog.mondomaine.com) à une arborescence précise de mon serveur Web (par exemple /var/www/blog). Il est bien sûr possible de créer autant de serveurs web virtuels que de besoins.

La première fonction permet d'ajouter simplement une association "nom de machine" / "répertoire" (option Ajouter un nouveau serveur virtuel):

Pour le support du langage PHP (Cherokee supporte également le langage PHP via le module php5-cgi, installé dans la première partie de cet article) sur un serveur virtuel existant. Il faut cliquer sur le serveur en question dans la liste puis se rendre dans l'onglet Behavior, cliquer sur le bouton Assistants puis choisir PHP dans la liste (sous menu Langues) et enfin cliquer sur Run Wizard:

La ligne PHP va être ajouté dans la liste des Behavior:

Il faut ensuite cliquer sur le radio bouton Final

On peut tester simplement la configuration en ajoutant un fichier de test index.php contenant les lignes suivantes à la racine de votre serveur virtuel:

<?php
echo phpinfo();
?>

Et le résultat de l'URL http://192.168.29.129/index.php

Pour créer un serveur virtuel il est également possible de suivre un Assistant qui va vous proposer d'installer pour vous une liste de services (Liferay, Wordpress, Dupral, Zend, Trac, MoinMoin, PhpBB, ...).

Sécuriser les échanges

On va ici parler de HTTPs qui permet de chiffrer les échanges entre votre navigateur Web et votre serveur Cherokee. Cette étape de configuration est bien sûr optionnelle.

On commence par configurer OpenSSL (le module qui va chiffrer) pour qu'il génère des certificats dédiés à notre serveur (virtuel ou pas).

openssl req -new -x509 -nodes -out serverdefault.crt -keyout serverdefault.key

Generating a 1024 bit RSA private key
...........++++++
......................++++++
unable to write 'random state'
writing new private key to 'serverdefault.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:PACA
Locality Name (eg, city) []:Cannes
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nicolargo
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:

On copie alors les deux fichiers générés dans le répertoire /etc/cherokee:

sudo cp serverdefault.crt serverdefault.key /etc/cherokee

On doit ensuite se rendre dans le menu Général / Réseau de l'interface d'administration de Cherokee et activer le module OpenSSL:

Ensuite on configure le serveur pour écouter sur le port HTTPS (TCP/443) dans le menu Général / Port à écouter:

Puis associer les clés de chiffrement à notre serveur virtuel (onglet Sécurité):

Enfin il ne faut pas oublier de redémarrer le serveur pour que la configuration soit appliquée:

Et le résultat sur l'URL https://192.168.29.129/index.php

Conclusion

Pour finir quelques resources:

  • La documentation officielle
  • Le livre de cuisine de Cherokee
  • Les benchs de Cherokee
  • Le blog d'Alvaro