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 Interface (( WSGI )) 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.

    ServerName example.com
    ServerAlias www.example.com 

    DocumentRoot /path/to/dancer/app 

    
        Order deny,allow
        Allow from allow
    

    ProxyPass / http://localhost:5000/
    ProxyPassReverse / http://localhost:5000/


Il sera aussi possible d'indiquer à Apache qu'il s'occupe de servir les fichiers statiques si on le préfère.
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
Vus : 589
Publié par Hobbestigrou : 195