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.nathalievialaneix.eu:3838/wnaetw.
Étape 5 : Créer un hôte virtuel
On crée finalement un hôte virtuel http://shiny.nathalievialaneix.eu qui gère une redirection des requêtes vers le port 3838. Pour cela, il faut :
- (dans mon cas) sur l’interface OVH, créer l’hôte virtuel redirigé vers le serveur ;
-
éditer en super-utilisateur le fichier
/etc/hosts
pour ajouter shiny.nathalievialaneix.eu -
activer les modules apache proxy proxy_connect et proxy_http :
sudo a2enmod proxy proxy_connect proxy_http sudo service apache2 reload
-
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 :
- http://shiny.nathalievialaneix.eu/wnaetw
- http://shiny.nathalievialaneix.eu/niledam
- http://shiny.nathalievialaneix.eu/fbs
- http://shiny.nathalievialaneix.eu/m1102
- http://shiny.nathalievialaneix.eu/sombrero, une interface graphique pour SOMbrero !