Installer son serveur shiny sur Ubuntu server (12.04)

Ce tutoriel est destiné à expliquer comment installer un server shiny sur un serveur Ubuntu pour pouvoir héberger ses propres applications shiny. L’essentiel des explications est disponible ici mais ce tutoriel (en français) donne quelques explications supplémentaires, notamment pour l’ouverture des ports (pour cela, j’utilise shorewall).

Étape 1 : Installer Node.js

Node.js est disponible dans un dépôt additionnel et s’installe en ajoutant ce dépôt :

sudo apt-get update
sudo apt-get install software-properties-common python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodej

 Étape 2 : Installer R, shiny et les autres packages nécessaires au fonctionnement de votre application

Pour installer R, éditer le fichier /etc/apt/sources.list et ajouter la ligne

deb http://cran.univ-paris1.fr/bin/linux/ubuntu precise/

puis faire :

sudo apt-get update
sudo apt-get install r-base r-base-dev

Les packages sont à installer ensuite avec la commande :

sudo su - -c "R -e \"install.packages('shiny', repos='http://cran.univ-paris1.fr/')\""

pour les packages du CRAN ou

sudo R CMD INSTALL NiLeDAM_0.1.tar.gz

pour un package local.

Étape 3 : Configurer shiny-server

Un script de configuration pour Ubuntu est mis à disposition : vous pouvez le télécharger et l’installer :

sudo wget\
  https://raw.github.com/rstudio/shiny-server/master/config/upstart/shiny-server.conf\
  -O /etc/init/shiny-server.conf

Ensuite, installer les dossiers nécessaires : j’ai placé shiny dans un dossier /home/shiny/www

sudo useradd -r shiny
sudo mkdir -p /home/shiny/www
sudo mkdir -p /var/shiny-server
sudo ln -s /home/shiny/www /var/shiny-server/www
sudo mkdir -p /var/shiny-server/log

Étape 4 : Ouvrir les ports pour autoriser la lecture du port 3838 utilisé par shiny

Pour cela, en utilisant shorewall, il faut éditer le fichier /etc/shorewall/rules et y ajouter la ligne

ACCEPT          net             $FW             tcp     3838

et on redémarre shorewall

sudo shorewall stop
sudo shorewall start

Démarrer et tester !

Placer l’application dans un sous-répertoire de /home/shiny/www (par exemple /home/shiny/www/wnaetw) et démarrer shiny-server avec :

sudo start shiny-server

Tester à http://chix.nathalievilla.org:3838/wnaetw.

Étape 5 : Créer un hôte virtuel

On crée finalement un hôte virtuel http://shiny.nathalievilla.org qui gère une redirection des requêtes vers le port 3838. Pour cela, il faut :

  1. (dans mon cas) sur l’interface OVH, créer l’hôte virtuel redirigé vers le serveur ;
  2. éditer en super-utilisateur le fichier /etc/hosts pour ajouter shiny.nathalievilla.org
  3. activer les modules apache proxy proxy_connect et proxy_http :
    sudo a2enmod proxy proxy_connect proxy_http
    sudo service apache2 reload
  4. créer un hôte virtuel avec comme directives
            ServerAdmin me@my-domain.org
            ServerName shiny.my-domain.org
    
            ProxyPass / http://127.0.0.1:3838/
            ProxyPassReverse / http://127.0.0.1:3838/

    et redémarrer apache :

    sudo service apache2 reload

Déjà disponibles :