:: Simple application avec Dancer2 ::
Présentation
Dans cet exemple, on va créer une simple application web avec Dancer2.
Pour le déploiement, on se basera sur Starman pour la gestion de l'application avec Nginx en frontal.
Installation de Dancer
Préparation de l'environnement
Afin de sécuriser l'application, on fait tourner Starman (notre serveur d'application) sous une identité propre que nous appelerons starman. La seule manière d'y accéder sera via l'utilisateur root.
$ sudo useradd starman
Brewing Perl
Afin de séparer la distribution Perl installée sur le système de celle que l'on souhaite utiliser pour lancer notre application, nous utiliserons PerlBrew, un outil de gestion des versions de Perl.
Pour installer PerlBrew, cf.Gestion des versions de Perl avec Perlbrew
Liste des versions Perl disponibles à l'installation
# su - starman $ perlbrew available perl-5.33.2 perl-5.32.0 perl-5.30.3 [...]
Installation
$ perlbrew install perl-5.32.0
Vérification de la version installée (deux méthodes)
Lister les versions installées :
$ perlbrew list perl-5.32.0
Lister les versions disponibles (remarquez le "i" devant la version installée) :
$ perlbrew available perl-5.33.2 i perl-5.32.0 perl-5.30.3 [...]
Utilisation
Pour cette session uniquement
$ perlbrew use perl-5.32.0
Comme version par défaut à l'ouverture de session
$ perlbrew switch perl-5.32.0
Installation des modules CPAN
Avant tout, on installe un client cpan. Pour cela, on utilise la commande PerlBrew permettant d'installer cpanminus.
$ perlbrew install-cpanm
Puis on installe les modules :
$ cpanm Dancer2 Starman Daemon::Control
Création de l'application
La méthode la plus rapide pour créer son application est d'utiliser la commande dancer2
qui met en place l'arborescence des répertoires et fichiers à partir d'un squelette standard :
$ dancer2 gen -a MonApp
Cette commande crée le répertoire MonApp ainsi qu'un ensemble de sous-répertoires et fichiers.
Pour lancer l'application, exécuter la commande suivante :
$ cd MonApp/
$ plackup -R lib bin/app.psgi
Watching lib bin/lib bin/app.psgi for file updates.
HTTP::Server::PSGI: Accepting connections at http://0:5000/
L'application (vide) est dorénavant disponible à l'adresse http://AdresseServeur:5000. (Ctrl+C pour stopper)
Mise en place du service systemd Starman
Pour lancer automatiquement notre application, on crée le fichier /etc/systemd/system/starman.service avec le contenu ci-dessous :
$ sudo vi /etc/systemd/system/starman.service
[Unit]
Description=Starman
After=syslog.target
[Service]
Type=forking
ExecStart=/home/starman/perl5/perlbrew/perls/perl-5.32.0/bin/starman --listen 127.0.0.1:5001 --env development --daemonize /home/starman/apps/MonApp/bin/app.psgi
Restart=always
[Install]
WantedBy=multi-user.target
Lancement et activation du service au démarrage :
$ sudo systemctl start starman.service
$ sudo systemctl enable starman.service
Installation et configuration de Nginx
$ sudo pacman -S nginx
$ sudo vi /etc/nginx/nginx.conf
[...]
server {
listen 80;
server_name www;
access_log /var/log/www.access.log;
error_log /var/log/www.error.log info;
location / {
try_files $uri @proxy;
access_log off;
expires max;
}
# proxy to Starman listening on 127.0.0.1:5001
#
location @proxy {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:5001;
}
}