Développement web en Perl avec Mojolicious
Signature : | Mis en ligne le : 23/01/2013
Catégorie(s) :
  • GNU/Linux Magazine
  • Commentez
    Article publié dans :
    Achetez
    Linux Magazine 138 :
    Version Papier
    Version PDF
    Page 1/6
    Page suivante »

    Cela fait maintenant quelques années que Perl, en tant que langage de développement web, se fait discret. Beaucoup de développeurs l’utilisent toujours, mais la (relativement récente) vague Python/Ruby s’est ajoutée à PHP pour occuper l’essentiel du Web. En tant que sysadmin, j’ai une tendance naturelle au conservatisme : si ça marche, ne touche à rien. Bon, évidemment, ça ne s’applique pas partout, mais quand il s’agit de programmation, j’aime bien me dire que Perl fera le boulot au moins aussi bien, et peut-être mieux, que d’autres langages.
    J’étais donc curieux du petit dernier de la communauté Perl : le framework MVC Mojolicious. Petit frère du très reconnu Catalyst, Mojolicious est un projet récent qui essaie de corriger certains mécontentements que les moines de Perl ont pu ressentir en utilisant Catalyst. Dans la mesure où les robes en bure, hormis le fait que ça gratte, ce n’est pas ma spécialité (et n’étant pas développeur de nature), cet article n’est pas un rapport d’expertise sur Perl et les frameworks MVC, mais plutôt une introduction au développement web avec Perl et Mojolicious 1.1.

    1. L'indispensable Hello World

    Très simple à afficher une fois que Mojolicious est installé. D'ailleurs cette installation est, elle aussi, très simple (c'est un des objectifs du framework). En passant par cpanminus (un module Perl qui s'occupe des étapes de téléchargement, configuration, installation automatique), la commande pour installer Mojolicious est aussi simple que :

    curl se connecte à cpanmin.us (ouvrez la page dans votre navigateur, ça pointe vers un module Perl hébergé sur github), récupère App::cpanminus et le fait exécuter par Perl pour installer Mojolicious. L'option –local-lib permet d'installer Mojolicious dans un répertoire choisi par l'utilisateur. Vous pouvez également lancer cette commande sans spécifier de local lib, auquel cas il vous faudra être root et Mojolicious s'installera dans les répertoires du système.

    Note

    Perl recherche les modules disponibles dans une liste de répertoires contenus dans la variable @INC. Essayez la commande perl -e 'foreach(@INC){print “$_\n”;}' pour afficher cette liste sur votre machine.

    L'installation locale nous laisse avec 3 répertoires : bin, lib, et man. Le premier contient trois programmes (config_data, hypnotoad et mojo) dont nous aurons besoin un peu plus tard. Le second contient tous les modules de Mojolicious et le troisième contient toute la documentation.

    Pour rester dans les bonnes pratiques, on va déplacer les modules dans un répertoire lib à la racine de la webapp.

    Il ne restera plus qu'à inclure ce répertoire " lib " dans le code de la webapp.

    La page de manuel de Mojolicious::Lite présente un exemple de " Hello World! " avec lequel nous allons démarrer.

    Le code ci-dessus utilise le module Mojolicious::Lite, une version simplifiée du framework, et démarre une application qui renvoie le texte 'Hello World!' dès qu'un client effectue un GET sur la page '/'.

    1.1. Exécuter le code

    Par habitude, mon premier réflexe en découvrant Mojolicious a été de monter un serveur Nginx avec FastCGI via spawn-fcgi et fcgiwrap, ma configuration habituelle pour exécuter du Perl/CGI. Mais ce n'est pas idéal. Le problème de cette configuration, c'est sa lenteur. Dans ma configuration de test, fcgiwrap ne parvenait pas à répondre à plus de 2,5 requêtes par seconde (sur un petit processeur, je vous l'accorde).

    Or Mojolicious embarque toute une couche de communication, incluant les protocoles de transport que sont HTTP, CGI/FastCGI/PSGI et également un support des WebSockets. De fait, un programme utilisant Mojolicious peut directement lancer son propre serveur web (on verra plus tard comment contrôler cela avec Hypnotoad).

    Note

    Si vous avez installé Mojolicious en local, pensez à inclure les bibliothèques dans le script 'hello.pl' en ajoutant le code suivant en début de fichier :

    Lancez le serveur avec la commande suivante :

    Et dirigez-vous vers http://localhost:3000/ pour admirer votre Hello World.

    L'option –reload indique à Mojolicious de recharger automatiquement le code lorsqu'il est modifié. Ainsi, si vous changez " Hello World! " par " Bonjour Jean-Kevin… " et sauvegardez, le changement sera pris en compte sans relance du serveur.

    Vous noterez également que la console dans laquelle le serveur est lancé affiche les logs de chaque requête. Pratique pour déboguer.

    Vous souhaitez commenter cet article ?
    Brèves Flux RSS
    Édito : GNU/Linux Magazine Hors-Série N°72
    Édito : Linux Pratique N°84
    Édito : MISC N°74
    Édito : GNU/Linux Magazine N°173
    Édito : MISC Hors-Série N°9
    Communication RSS Com. RSS Presse
    HACKITO ERGO SUM
    GNU/Linux Magazine, partenaire du SymfonyLive Paris
    Opensilicium, partenaire de RTS EMBEDDED
    Linux Pratique et Linux Essentiel, Partenaire de l’Open World Forum
    Gnu/Linux Magazine, Partenaire des JDEV 2013
    Rechercher un article dans notre base documentaire :
    Désolé, aucun article ne correspond à vos critères.