Déployer une application Dancer avec starman, apache et mod_proxy.

Il y a plusieurs manière de procéder pour déployer une application développé en Perl avec l’aide du framework Dancer. Je vais présenter une solution qui est à mon sens la meilleur, la plus propre et élégante. En Utilisant Starman.

Starman est un serveur web PSGI écrits par Tatsuhiko Miyagawa. PSGI ou Perl Web Server Gateway Interface, est une interface entre un serveur web et une application web écrite en Perl. Il permet d’écrire des application portable, possibilité de tourné avec mod_perl, CGI, FastCGI. C’est l’équivalant de Web Server Gateway Interface1 pour Python, ou de Rack pour Ruby. Starman est donc l’équivalant de Gunicorn un serveur web Python ou Unicorn un serveur web Ruby, bien qui lui manque quelques fonctionnalités.

Le serveur web Apache est très bien, mais il commence à vouloir faire beaucoup de choses. Il va gérer des applications, des vhosts, et tout un tas d’autres choses. Apache n’est pas fait pour servir des applications Perl à la base, c’est pour ça qu’il y a mod_perl. J’apprécie lorsqu’une application reste simple, fait qu’une chose mais le fait bien, soit facile à configurer, que les choses soient bien séparé. C’est pour ça qu’il est bien d’utiliser Starman qui fera qu’une seul chose s’occuper de son application, et on laissera à la charge du serveur là gestion du reverse. Cela va aussi simplifier la configuration, sachant que Starman n’a pas à être configuré.

Il faudra donc au préalable avoir installé Starman.

sudo cpanm Starman

Une fois installé, il faudra se déplacer dans le répertoire de son application, et lancer le serveur.

cd app 
plackup -s Starman app.pl

Il y aura un serveur par application. Il est possible de spécifier le numéro de port avec l’option –port. Ensuite on pourra utiliser Apache en tant-que proxy avec mod_proxy en lui indiquant le port sur lequel il doit rediriger les requêtes.
Pour faire fonctionner Apache avec mod_proxy, il y aura besoin d’activer quelques modules.

sudo a2enmod proxy proxy_http cache

Ensuite il nous faudra configurer le tout.

?View Code APACHE
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com 
 
    DocumentRoot /path/to/dancer/app 
 
    <Proxy *>
        Order deny,allow
        Allow from allow
    </Proxy>
 
    ProxyPass / http://localhost:5000/
    ProxyPassReverse / http://localhost:5000/
 
</VirtualHost>

Il sera aussi possible d’indiquer à Apache qu’il s’occupe de servir les fichiers statiques si on le préfère.

?View Code APACHE
ProxyPass /public/favicon.ico !

Une fois la configuration de notre virtualhost terminé, il nous faudra ajouter le site à Apache.

cd /etc/apache2/sites-available/ 
sudo a2ensite app_dancer

Il ne nous reste plus qu’à redémarrer Apache.

sudo /etc/init.d/apache2 restart

Voilà, c’est terminé.

En conclusion bien qu’il est plusieurs étapes et que cela puisse paraître long, c’est certainement la solution là plus simple. Il est possible ensuite de remplacer Apache pour un serveur plus léger comme Cherokee par exemple. Je ferai des articles pour présenter d’autres solutions de déploiements possible pour une application Dancer, comme Cherokee en proxy, ou apache avec mod_perl et certainement d’autres encore.

Drapeau EnDocumentation Starman
Drapeau EnDocumentation Plackup
Drapeau EnSite PSGI

  1. WSGI
Vus : 928
Publié par Hobbestigrou : 195