Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Data Scientist et langage R
  3. Déploiement Shiny sur votre propre Cloud
Extrait - Data Scientist et langage R Autoformation aux bases de l'intelligence artificielle dans l'univers de la data (3e édition)
Extraits du livre
Data Scientist et langage R Autoformation aux bases de l'intelligence artificielle dans l'univers de la data (3e édition)
1 avis
Revenir à la page d'achat du livre

Déploiement Shiny sur votre propre Cloud

Introduction

L’objectif de ce chapitre est de vous permettre de déployer une application Shiny avec un nombre d’étapes limitées et de manière parfaitement autonome. Pour commencer, nous avons besoin de faire appel à un serveur pour abriter notre application. Nous vous proposons pour la suite de ce chapitre d’utiliser le service d’Oracle Cloud. Dans sa version gratuite, Oracle offre deux machines virtuelles suffisantes pour la mise en ligne d’une application dans des conditions professionnelles.

Une partie des manipulations s’effectueront sous un environnement Linux et feront l’objet de quelques explications pour les non-initiés. Pour le reste, nous vous proposons l’outil Webmin qui permet de s’affranchir du mode commande pour un certain nombre d’opérations et de gérer à distance notre machine Linux. L’application Shiny qui sera déployée à la fin de ce chapitre sera accessible au travers de son adresse IP uniquement. Libre à vous de la mapper sur votre nom de domaine personnel.

Location d’un serveur

 Sur le site d’Oracle (www.oracle.com), créez un compte Cloud Account (attention de ne pas confondre avec Oracle Account). Sélectionnez l’offre gratuite comprenant deux instances de machine virtuelle et finalisez la création de votre compte.

 Identifiez-vous en mode SSO (Single Sign-On) et accédez au dashboard d’Oracle Cloud. La connexion SSO permet, avec un seul "paquet" d’identifiants (SSL ou de type login/mdp), d’obtenir l’accès à plusieurs services ou applications sans avoir à s’identifier sur chacun d’entre eux. On peut se le représenter comme une identification "chapeau".

Une fois arrivé sur le dashboard d’Oracle, remarquez que certaines rubriques sont taggées Always Free Eligible. Oracle s’engage à ce que ces ressources soient maintenues en conditions, gratuitement, pendant plusieurs années.

Création d’une machine virtuelle

La première chose que nous allons faire est de créer une VM instance, qui est un serveur avec plusieurs services déjà préinstallés.

images/EP19-001.png

Création d’une instance

L’image de votre VM (Virtual Machine) est construite par défaut sous Linux (version 7.9) mais d’autres choix sont disponibles en version gratuite. Changeons le type d’image (bouton Edit) pour prendre une image faite sur Canonical Ubuntu. Pour gagner du temps, changeons le système d’exploitation en version 20.04 complète. Ces versions "complètes" sont des versions LTS (Long Term Support) avec la garantie d’un support actif jusqu’à cinq ans (corrections de bugs, patchs de sécurité, etc.). Les versions dites "minimum" sont des versions basiques qui demandent l’installation du moindre outil système.

images/EP19-002.png

Image de l’instance

La forme de l’instance (Shape) fait référence aux caractéristiques physiques de la VM que vous louez. Dans sa version gratuite, Oracle fournit une machine sur la base d’un processeur AMD, avec une seule CPU, 1 GB de mémoire et une capacité d’échange réseau de 0,48 Gbps. Ces caractéristiques sont modifiables mais attention, car certaines peuvent engendrer des frais supplémentaires...

Se connecter à distance à votre machine

Avant de créer notre instance, nous devons débuter la création d’un processus de connexion dit SSH. Le SSH (pour Secure Shell) est un protocole de connexion sécurisé qui repose en grande partie sur l’échange de clés de chiffrement (publique/privée) en début de connexion en guise d’authentification. Il est indispensable pour garantir la sécurité et l’intégrité de votre application.

1. Installation du client SSH

a. OpenSSH

Pour générer un protocole SSH, utilisez un logiciel comme OpenSSH ou encore PuTTY en fonction de vos habitudes et de votre système d’exploitation (www.openssh.com, www.putty.org). Si vous utilisez Windows 10, vous pouvez directement activer OpenSSH en allant dans les paramètres Windows, puis dans Paramètres - Applications - Applications et fonctionnalités - Fonctionnalités facultatives - Ajouter une fonctionnalité.

Le client SSH doit s’afficher dans la liste des fonctionnalités installées :

images/EP19-004.png

Client OpenSSH dans Windows

b. Git Bash

Pour pouvoir dialoguer avec notre machine distante, nous utilisons l’invite de commandes Git Bash (téléchargeable sur https://gitforwindows.org). Cela permet d’émuler une invite de commandes Unix depuis une machine MS-DOS.

 Une fois Git Bash installé, déplacez-vous vers le dossier d’installation d’OpenSSH...

Ajout des composants logiciels de base

L’idée ici est de créer une machine "digne de ce nom", en installant préalablement plusieurs composants logiciels de manière à ce qu’ils soient disponibles sur toute la machine.

# à tout moment tout au long de ce processus vous pouvez vérifier quels paquets 
sont installés 
## vérification  et sauvegarde pour info des paquets installés sur l'instance 
sudo apt list > ma_liste_paquet.txt 
view ma_liste_paquet.txt 
    
#-------- Se créer une machine tout-terrain 
    
# pour vous aider si toutefois vous en avez besoin pour certaines installations 
sudo apt update 
sudo apt-get install build-essential 
sudo apt-get install software-properties-common dirmngr  
sudo apt-get install libcurl4-gnutls-dev 
sudo apt-get install libcairo2-dev 
sudo apt-get install libxt-dev 
sudo apt-get install xtail 
sudo apt-get install wget 
sudo apt-get install net-tools 
 
# pour pouvoir accéder à des paquets hors dépôts 
sudo apt-get install gdebi-core 
 
# vérification de la version du compilateur  g++ 
g++ --version 
 
# python 2 
sudo apt-get update 
sudo apt-get install python 
 
# python 3 
sudo apt-get update 
sudo apt install python3-pip ...

Installation de R et de Shiny

C’est enfin le moment pour nous d’installer R et Shiny sur notre machine Linux.

#-------- R et Shiny 
# ajout repos du CRAN 
# lire http://cran.rstudio.com/bin/linux/ubuntu/ 
# notre version ubuntu 20.04 LTS a pour petit nom "focal" (la 
18.04 LTS s'appelait bionic) 
 
 
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 
E298A3A825C0D65DFD57CBB651716619E084DAB9 
 
sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/
ubuntu focal-cran40/' 
 
# install R 
sudo apt update 
sudo apt install r-base 
sudo apt install r-base-dev 
# Test R 
R --version 
sudo R 
q() 
  
  
# ajouter la Personal Package Archive, qui permet un accès simple à de 
nombreux packages R 
# lire pour utiliser la Personal Package Archive https://launchpad.net/
~c2d4u.team/+archive/ubuntu/c2d4u4.0+ 
sudo apt update -qq 
sudo add-apt-repository ppa:c2d4u.team/c2d4u4.0+ 
sudo apt update # car il faut que ce repo soit pris en compte par la suite ! 
 
# installation applications/packages importants 
sudo apt update 
sudo apt-get install r-cran-rcpp 
sudo apt-get install r-cran-devtools 
sudo apt-get install r-cran-rstan 
sudo apt-get install r-cran-caret 
sudo apt-get install r-cran-tidyverse 
sudo apt-get install r-cran-reticulate 
sudo...

Paramétrage réseau et Linux

1. Paramétrer le VCN (Virtual Cloud Network)

Notre objectif est de rendre accessibles les ports pour Shiny et d’autres applications que nous verrons plus tard. Un VCN nous permet d’interagir et de prendre la main sur notre système à distance, depuis votre machine (avec une interface graphique ou non). Par défaut, Oracle en a déjà créé un. Nous nous contenterons d’ajouter nos propres règles à la liste des règles déjà existantes.

 Cliquez sur le nom de votre réseau subnet-XXXX-XXXX et éditez les règles pour obtenir le résultat comme suit :

  • Ouverture du port :3838 pour Shiny

  • Ouverture du port :80 pour Apache

  • Ouverture du port :10000 pour Webmin (PERL)

images/EP19-007.png

Règles VCN

2. Gestion du firewall

Regardons si le firewall d’Ubuntu est actif ou non :

sudo ufw status 
Status: inactive 
 
# pour activer/désactiver le pare-feu  
sudo ufw enable 
sudo ufw disable 

Iptables est un logiciel Linux permettant d’accéder et de modifier les règles de sécurité de notre pare-feu lors des échanges de données entre notre machine et l’extérieur. On accède à la liste des règles en cours avec la commande iptable -L.

sudo iptables -L 

Il existe trois types d’échanges (on peut se les représenter comme des chaînes de paquets d’informations) :

  • Les paquets entrants (Input)

  • Les paquets sortants (Output)

  • Les paquets en attente d’être transmis (Forward)

Ces chaînes peuvent être acceptées (ACCEPT), rejetées ou ignorées (REJECT ou DROP), mises en attente (QUEUE) ou renvoyées dans une autre chaîne (RETURN). Il est souvent conseillé de privilégier DROP au lieu de REJECT car DROP n’envoie aucune réponse après une sollicitation extérieure. Il attire donc "moins" l’attention en cas de tentative de connexion malveillante. Dans le cas d’un REJECT, notre firewall renvoie un message au client stipulant que la connexion est refusée.

Pour commencer, nous allons réinitialiser les règles du pare-feu et repartir ainsi sur une base "saine" avec la commande sudo ufw reset. Toutes les règles précédemment...