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

De Wiki ISIG
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(3 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 30 : Ligne 30 :
== Connection au serveur (pour le développeur) ==
== Connection au serveur (pour le développeur) ==


Serveur '''gn-evs.ens-lyon.fr'''.
<s>Serveur '''gn-evs.ens-lyon.fr'''.</s>


=== en ssh (par un terminal) ===
=== <s>en ssh (par un terminal)</s> ===


(pour installs de packages, git-clonage, consultation de logs, etc.)
<s>(pour installs de packages, git-clonage, consultation de logs, etc.)</s>


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


'''Installation de packages R''':
<s>'''Installation de packages R''':</s>


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


=== en sftp (par FileZilla par exemple) ===
=== Installation de packages R ===
Le plus simple est désormais de passer par <nowiki>https://rstudio.evs.ens-lyon.fr</nowiki>
 
=== Transfert de fichiers en sftp (par FileZilla par exemple) ===


(plus pratique pour noobs pour transferts de fichiers)
(plus pratique pour noobs pour transferts de fichiers)


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


* login: lvaudor
* login: <fourni par Samuel>
* mdp: mdp ENS
* mdp: <fourni par Samuel>


Accès à home/lvaudor/
Accès à /home/<login>/


'''Applis''' dans ShinyApps/ (un dossier=une appli)
'''Applis''' dans ShinyApps/ (un dossier=une appli)
Ligne 62 : Ligne 65 :
== Accès aux applis (pour les utilisateurs)==
== Accès aux applis (pour les utilisateurs)==


Page d'accueil: https://isig-apps.ens-lyon.fr/shiny/
Page d'accueil: https://isig-apps-dev.evs.ens-lyon.fr/apps/ (https://isig-apps.ens-lyon.fr/apps/ en prod)


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


http://isig-apps.ens-lyon.fr/shiny/lvaudor/
[http://isig-apps.ens-lyon.fr/shiny/lvaudor/ http://isig-apps-dev.evs.ens-lyon.fr/apps/lvaudor/]


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:
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:


http://isig-apps.ens-lyon.fr/shiny/lvaudor/Restart_exos_base/
[http://isig-apps.ens-lyon.fr/shiny/lvaudor/Restart_exos_base/ http://isig-apps-dev.evs.ens-lyon.fr/apps/lvaudor/Restart_exos_base/]
 
== Logs: ==
Pour accéder aux logs
 
- serveur dév: dans les fichiers Home/Shinyapps/log
 
- serveur prod: grafana https://grafana.evs.ens-lyon.fr/d/c4250b8d-8ffe-4688-8d6b-b30deda8114e/


== Problèmes éventuels ==
== Problèmes éventuels ==


=== Pour redémarrer une appli ===
=== Pour redémarrer une appli ===
Simplement recharger la page ne redémarre pas forcément l'appli. Pour forcer le restart, il faut créer (ou modifier) un fichier restart.txt dans le dossier de l'appli. Peu importe le contenu du fichier, ce qui compte est sa date et heure de modification.  
Pour les applis sur le serveur de dév: simplement recharger la page ne redémarre pas forcément l'appli. Pour forcer le restart, il faut créer (ou modifier) un fichier restart.txt dans le dossier de l'appli. Peu importe le contenu du fichier, ce qui compte est sa date et heure de modification.  


=== pour appli learnr ===
=== pour appli learnr ===
Ligne 89 : Ligne 99 :
qui équivaut à un "print message dans le log"
qui équivaut à un "print message dans le log"


=== Monitoring ===
=== <s>Monitoring</s> ===


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


'''Processus:'''
'''<s>Processus:</s>'''


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


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


* Restart_exos_base
* <s>Restart_exos_base</s>
* Restart_exos_tableaux
* <s>Restart_exos_tableaux</s>
* Restart_exos_graphiques
* <s>Restart_exos_graphiques</s>
* shiny_exos
* <s>shiny_exos</s>
[[Catégorie:Tutoriel]]
[[Catégorie:Tutoriel]]

Version actuelle datée du 14 mars 2024 à 11:35

Généralités

L'infrastructure est décomposée en 2 instances : une dev et une prod. La demande de création d'un environnement doit être adressée à l'administrateur. L'environnement peut être lié à une personne nommée ou à un projet.

L'instance de dev est équipée d'un RStudio Server qui permet de développer directement dessus. On s'y connecte via les identifiants de l'environnement. Les applications sont ensuite accessibles en intranet à l'adresse https://isig-apps-dev.evs.ens-lyon.fr/apps/<environnement>/

La mise en prod peut être effectuée via Jenkins. Il faut d'abord demander des identifiants à l'administrateur. Une fois son appli fonctionnelle en dev, on peut alors lancer la copie vers la prod grâce au job "Mise en production ISIG-App par copie". L'application sera ensuite accessible sur internet à l'adresse https://isig-apps.ens-lyon.fr/apps/<environnement>/

La version R actuellement installée est la 4.3.1. Chaque mise à jour est notifiée à tous les utilisateurs en amont. Elle est appliquée d'abord sur l'instance de dev, puis avec un délai sur l'instance de prod.

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")

Installation de packages R

Le plus simple est désormais de passer par https://rstudio.evs.ens-lyon.fr

Transfert de fichiers en sftp (par FileZilla par exemple)

(plus pratique pour noobs pour transferts de fichiers)

Nom d'hôte lxc-shiny-dev.evs.ens-lyon.fr:

  • login: <fourni par Samuel>
  • mdp: <fourni par Samuel>

Accès à /home/<login>/

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

Accès aux applis (pour les utilisateurs)

Page d'accueil: https://isig-apps-dev.evs.ens-lyon.fr/apps/ (https://isig-apps.ens-lyon.fr/apps/ en prod)

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

http://isig-apps-dev.evs.ens-lyon.fr/apps/lvaudor/

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:

http://isig-apps-dev.evs.ens-lyon.fr/apps/lvaudor/Restart_exos_base/

Logs:

Pour accéder aux logs

- serveur dév: dans les fichiers Home/Shinyapps/log

- serveur prod: grafana https://grafana.evs.ens-lyon.fr/d/c4250b8d-8ffe-4688-8d6b-b30deda8114e/

Problèmes éventuels

Pour redémarrer une appli

Pour les applis sur le serveur de dév: simplement recharger la page ne redémarre pas forcément l'appli. Pour forcer le restart, il faut créer (ou modifier) un fichier restart.txt dans le dossier de l'appli. Peu importe le contenu du fichier, ce qui compte est sa date et heure de modification.

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