« Shiny server isig-apps » : différence entre les versions

De Wiki ISIG
Aller à la navigation Aller à la recherche
(ajout de page tuto isig-apps)
 
(Code blocks)
Ligne 8 : Ligne 8 :
=== Cas particulier d'un tutoriel learnr ===
=== Cas particulier d'un tutoriel learnr ===


Exemple d''''entête yaml''' pour le .Rmd:
Exemple d''''entête yaml''' pour le .Rmd:<syntaxhighlight lang="yaml">
 
---  
 
title: "Exos shiny"  
---
output:  
title: "Exos shiny"
  learnr::tutorial:  
output:
    progressive: true  
  learnr::tutorial:
    allow_skip: true  
    progressive: true
runtime: shiny_prerendered  
    allow_skip: true
css: "www/style_tuto_learnr.css"  
runtime: shiny_prerendered
---
css: "www/style_tuto_learnr.css"
</syntaxhighlight>
---
 
 


== Connection au serveur (pour le développeur) ==
== Connection au serveur (pour le développeur) ==
Ligne 31 : Ligne 28 :
(pour installs de packages, git-clonage, consultation de logs, etc.)
(pour installs de packages, git-clonage, consultation de logs, etc.)


Ouverture d'un terminal puis:
Ouverture d'un terminal puis:<syntaxhighlight lang="bash">
 
ssh lvaudor@gn-evs.ens-lyon.fr
 
</syntaxhighlight>(fournir password ENS)
ssh lvaudor@gn-evs.ens-lyon.fr
 
(fournir password ENS)


'''Installation de packages R''':
'''Installation de packages R''':


par ligne de commande en '''lançant R depuis le terminal''' puis
par ligne de commande en '''lançant R depuis le terminal''' puis<syntaxhighlight lang="r">
 
install.packages("nom_package")
install.packages("nom_package")
</syntaxhighlight>


=== en sftp (par FileZilla par exemple) ===
=== en sftp (par FileZilla par exemple) ===
Ligne 78 : Ligne 72 :
=== Debugging ===
=== Debugging ===
   
   
La solution la plus basique pour enrichir un peu les logs est de rajouter  
La solution la plus basique pour enrichir un peu les logs est de rajouter <syntaxhighlight lang="bash">
 
cat(file=stderr(), "message", "\n")
cat(file=stderr(), "message", "\n")
</syntaxhighlight>
 


qui équivaut à un "print message dans le log"
qui équivaut à un "print message dans le log"

Version du 10 janvier 2022 à 14:41

Conception de l'appli

Un dossier=une appli

Pour une appli classique, mettre à la racine de ce dossier app.R ou ui.R+server.R...

Cas particulier d'un tutoriel learnr

Exemple d'entête yaml pour le .Rmd:

--- 
title: "Exos shiny" 
output: 
  learnr::tutorial: 
    progressive: true 
    allow_skip: true 
runtime: shiny_prerendered 
css: "www/style_tuto_learnr.css" 
---

Connection au serveur (pour le développeur)

Serveur gn-evs.ens-lyon.fr.

en ssh (par un terminal)

(pour installs de packages, git-clonage, consultation de logs, etc.)

Ouverture d'un terminal puis:

ssh lvaudor@gn-evs.ens-lyon.fr

(fournir password ENS)

Installation de packages R:

par ligne de commande en lançant R depuis le terminal puis

install.packages("nom_package")

en sftp (par FileZilla par exemple)

(plus pratique pour noobs pour transferts de fichiers)

Nom d'hôte gn-evs.ens-lyon.fr:

  • login: lvaudor
  • mdp: mdp ENS

Accès à home/lvaudor/

Applis dans ShinyApps/ (un dossier=une appli) Packages installés dans R/

Accès aux applis (pour les utilisateurs)

Nom de domaine: isig-apps.ens-lyon.fr

Accès aux applis d'un développeur donné (par exemple lvaudor):

[[1]]

Ici il y a un document index.html à la racine qui permet d'afficher l'ensemble des applis disponibles. Dans le cas contraire, chercher l'appli directement:

[[2]]

Problèmes éventuels

pour appli learnr

Attention `learnr` (et a fortiori `gradethis`) sont des packages "jeunes". => MAJ fréquentes et assez radicales... Bien mettre à jour les packages à la fois localement (tricotage de tuto.Rmd => tuto.html) et sur le serveur car learnr va de pair avec du shiny "prerendered" (i.e. il faut fournir le fichier html comme "pseudo-ui").

Debugging

La solution la plus basique pour enrichir un peu les logs est de rajouter

cat(file=stderr(), "message", "\n")

qui équivaut à un "print message dans le log"

Monitoring

Sur demande, possibilité de mettre en place un monitoring qui redémarre les applis en cas de plantage:

Processus:

  1. test de l'url de l'appli
  2. si il y a un problème (test renvoie autre chose qu'un code 200 (succès de la requête), alors
  3. modif du fichier restart.txt dans le dossier (causant un redémarrage de R)

En l'état actuel des choses, sur lvaudor, quatre applis sont monitorées:

  • Restart_exos_base
  • Restart_exos_tableaux
  • Restart_exos_graphiques
  • shiny_exos