LCMP : Linux Cherokee MariaDB PHP un serveur web qui tient la route

Aujourd’hui je vais vous présenter un remplaçant pour le traditionnel LAMP : Linux Apache MySQL PHP.
Historiquement et incontestablement leader du marché de l’hébergement web, l’assemblage LAMP assure aujourd’hui la robustesse et la fiabilité de la toile à travers le monde, cependant il reste toujours intéressant de découvrir les autres technologies disponibles.

Notre but est d’héberger des applicatif web PHP, nous allons évidemment rester sur des technologies compatibles GNU\Linux libres.
Le but ici n’est pas la performance ultime mais plus le confort d’utilisation pour l’admin-web lambda.

Coté serveur web :

Vous connaissez certainement le populaire NGinx comme concurrent à Apache, mais ce serveur HTTP est assez spécifique et surtout utilisé pour délivrer du contenu HTML statique ou servir de reverse proxy. On peut aussi parler de Lighttpd mais son déclin par rapport aux autres solutions — en terme de part de marché — n’est pas des plus rassurant et c’est en prenant en compte le critère confort d’utilisation que je me suis tout de suite tourné vers Cherokee.

Cherokee est un serveur HTTP cross-plateform sous licence GPL écrit en C, il met en avant un design modulaire léger et haute-performance. Innovation intéressante, Cherokee dispose d’une interface web d’administration « cherokee-admin » qui permet de modifier graphiquement la configuration du serveur.

L’exécution de PHP se fait via FastCGI. Contrairement au mod_php5 d’Apache qui intègre directement le langage dans le serveur HTTP sous forme de module, FastCGI est une technique permettant de déléguer la génération de la page demandée à un programme tiers, dans notre cas « php-cgi ». Ceci donne aussi la possibilité à Cherokee de délocaliser et de répartir l’exécution du code sur un ou plusieurs serveurs dédiés.

L’installation se fait grâce au gestionnaire de paquet :

apt-get install cherokee cherokee-mod-rrd cherokee-doc

Vous pouvez d’ores et déjà vous connecter sur le port 80 de votre machine et découvrir le « It’s Works » version cherokee :

Vous pouvez maintenant démarrer l’interface web d’administration et vous y connecter sur le port indiqué ( 9090 ) avec le mot de passe fourni. Lorsque vous aurez fini vos modifications, un « CTRL+C » vous permettra d’arrêter l’interface.

#cherokee-admin -b
Login:
User: admin
One-time Password: goixKrnGLTtV4nZt
Web Interface:
URL: http://localhost:9090/

Cette interface d’administration super-intuitive est aussi simple que complète et vous permet de régler le moindre détail de la configuration de votre serveur web en quelques clics. On y retrouve les principaux paramètres que l’on connait sur Apache et le plus souvent sous la même dénomination. Autant dire que l’on n’est pas trop dépaysé, on trouve en plus des innovations intéressantes telles que le load-balancing php/mysql, un mécanisme permettant de générer des url temporaires jetables pour le téléchargement de fichiers, de nouveaux mécanismes d’authentification comme PAM ( Utilisateurs Système ) ou même une liste user/mdp gérée en dur dans la configuration ; le tout étant, qui plus est, fort bien documenté.

Pour installer le support PHP rien de plus simple, il suffit d’installer le package php-cgi :

#apt-get install php5-cgi php5-mysql

Dans l’onglet vServer (vHost) rajoutez maintenant une règle (Behavior) PHP dans le vServer par défaut ou créez un nouveau vServer de type PHP. Cliquez ensuite sur « sauvegarder » et le serveur vous proposera de redémarrer le service pour charger la configuration.

Cherokee peut collecter des statistiques sur vos différents vServer et vous les restituer sous forme de graphique — uniquement si vous avez installé le package « cherokee-mod-rrd » — ce qui donne une bonne vue d’ensemble de la consommation de bande passante ou du nombre de requête mais ne remplacera absolument pas une vraie solution de monitoring/supervision.

On notera la présence de template de vServer pour les applicatifs web les plus connus que ce soit des CMS (Drupal, Joomla, WordPress), des serveurs d’applications ( Glassfish, ColdFusion ), des plateformes de développement ( Symphony, Zend, Django, RubyOnRails ), des langages de programation ( PHP, .Net avec Mono ) ou encore d’autres applicatifs comme SugarCRM ou PhpBB ainsi que pour les configurations de redirection, proxy, contenu statique, …

Je vous conseille de jeter un coup d’œil à l’aide — disponible uniquement si vous avez installé le package « cherokee-doc ». Plutôt bien construite, elle propose même des liens vers des screencasts détaillants la plupart des fonctionnalités.

Pour conclure, Cherokee est un serveur web très proche d’Apache dans sa philosophie — son nom vous avait peut-être mis la puce à l’oreille — mais extrêmement plus agréable et rapide à configurer. Niveau performance rien à redire pour ce petit serveur web qui s’en sort très bien puisqu’il est souvent présenté comme au moins 2 fois plus rapide que son homologue.

Coté BDD :

Depuis le rachat de MySQL ( Sun ) par Oracle, j’ai envie de me tourner vers MariaDB.
Réalisé par Michael Widenius qui n’est autre que le principal auteur de MySQL, MariaDB actuellement en version 5.2.6 est un Fork libre de MySQL sous licence GPL.

Complétement compatible avec un MySQL de même version , MariaDB propose un nouveau moteur de base de donnée « crash safe » nommé Maria pour remplacer innoDB et MyIASM. Le code de MariaDB a été également optimisé, les requêtes complexes devraient être plus rapides, de nombreux cas d’interblocage sont corrigés et on notera l’arrivée en avance de fonctionnalité comme le « thread pool » prévu pour le futur MySQL 6.0 qui « permet d’ores et déjà de charger les requêtes de façon plus efficace ».

L’installation se déroule le plus simplement du monde après avoir rajouter ce dépôt dans le fichier /etc/apt/sources.list :

# MariaDB repository list
deb http://mirror.switch.ch/mirror/mariadb/repo/5.1/debian squeeze main
deb-src http://mirror.switch.ch/mirror/mariadb/repo/5.1/debian squeeze main

Sans oublier d’importer la clef du dépôt :

apt-key adv –recv-keys –keyserver keyserver.ubuntu.com 1BB943DB

 

Enfin il reste à installer le méta-paquet mariadb-server pour obtenir la dernière version disponible ( ici 5.1 ) :

apt-get update
apt-get install mariadb-server

On essaye de se connecter à la base et normalement tout roule :

root@webserver:~# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 5.1.55-MariaDB-mariadb98~squeeze-log (MariaDB – http://mariadb.com/)

This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MariaDB [(none)]>

Bref au niveau de l’installation c’est exactement comme mysql, premier point rassurant pour un admin habitué à ce dernier.

Nous allons maintenant installer PhpMyAdmin et WordPress pour vérifier la compatibilité et la fiabilité de l’assemblage.

PhpMyAdmin :

Primo : télécharger la dernière version des sources sur le site http://phpmyadmin.org

Secondo : les décompresser dans le répertoire de votre convenance ( /var/www/phpmyadmin par exemple).

Tertio : créer un vServer de type PHP pointant sur ce répertoire dans l’interface d’administration Cherokee.

That’s it 🙂

WordPress :

On récupère directement les dernières sources comme ceci :

wget http://fr.wordpress.org/latest-fr_FR.zip

On les décompresse dans le répertoire de notre choix ( /var/www/wordpress par exemple)

On crée un vServer de type WordPress pointant sur ce répertoire dans l’interface d’administration Cherokee.

On crée une base de donnée WordPress — via phpmyadmin 😉 — avec un utilisateur wordpress disposant de tous les droits sur cette base.

Normalement a ce stade, il ne reste plus qu’à se connecter à WordPress pour faire l’installation. Cependant, la valeur par défaut des colonnes de type « date » choisie par wordpress est ‘0000-00-00 00:00:00’ — ce qui il faut l’avouer ne représente pas réellement une date concrète — or elle n’est pas acceptée par MariaDB. On va donc remplacer les occurrences de cette date dans le code WordPress avec cette ligne de commande :

cd /var/www/wordpress
find . -type f -name ‘*.php’ -ls -exec sed -i s/0000-00-00\ 00:00:00/1000-01-01\ 00:00:00/ {} \;

Pour les explications détaillées du problème et pour aller plus loin dans la configuration ( passage au moteur de BDD Maria, optimisations,…), c’est ici : http://byte-consult.be/2011/06/07/running-wordpress-nginx/

La « Full Compatibility » assurée par Michael Widenius ne serait elle qu’un mythe ? Rassurez vous, dans 99% des cas vous n’aurez pas le moindre souci.

L’installation se déroule maintenant sans aucun problème 🙂

Conclusion :

Le test est plutôt réussi, Cherokee-admin est un vrai plus pour l’admin-web et les fonctionnalités supplémentaires qu’il propose sont vraiment intéressantes. MariaDB propose un bon nombre d’options qui permettent d’optimiser la fiabilité du stockage de vos données ce qui est essentiel. Niveau performance — même si ce n’est pas le but premier — on se retrouve devant un système assez léger et plutôt réactif face à la charge, reste à voir si ça pourrait suivre le rythme dans un environnement de production. Personnellement le manque effectif d’utilisateurs m’interdit un déploiement en production car la perte de temps générée par la résolution des problèmes non documentés serait colossale. Par contre je l’ai déjà adopté à la maison et je ne peux que vous conseiller de faire de même 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *