J'utilise shiny-server sur Ubuntu et j'ai besoin de définir différentes options de ligne de commande R, en particulier --max-ppsize
. Je n'ai pas réussi à trouver comment modifier la façon dont shiny-server fonctionne R
. Comment modifier cela?Options de ligne de commande R spécifiques lors de l'exécution de shiny-server
Répondre
La clé pour que cela fonctionne est décrite dans 1.3.5 R Installation Location du manuel de configuration de Shiny Server. L'idée principale est de créer votre propre exécutable nommé R
et de lui passer les arguments de ligne de commande que vous voulez pour le véritable exécutable R
.
Étape 1: Créer un nouvel utilisateur
Je nommé le mien Bob. Ajoutez les fichiers suivants au répertoire personnel de Bob.
/home/bob/.bash_profile:
export PATH=/home/bob/myR:$PATH
/home/bob/Myr/R:
#!/bin/bash
/usr/bin/R --max-ppsize 123456 "[email protected]"
Faire le deuxième fichier exécutable en faisant chmod +x /home/bob/myR/R
.
Étape 2: Configurer brillant pour exécuter votre application comme Bob
Dans votre fichier de configuration Brillant, ajoutez ce qui suit:
location /testApp {
run_as bob;
site_dir /srv/shiny-server/testApp;
log_dir /var/log/shiny-server;
}
Lors de l'exécution testApp
, Brillant sera première source Bob .bash_profile
, qui fait R
point à la version de Bob en raison de la priorité $PATH
. La version de Bob ajoute simplement l'option --max-ppsize
désirée et la transmet au réel exécutable R
avec d'autres options "[email protected]"
. Vous pouvez tester vous-même, en faisant:
$ su bob
$ source /home/bob/.bash_profile
$ which R
/home/bob/myR/R
$ R -q --args Test
> commandArgs()
[1] "/usr/lib/R/bin/exec/R" "--max-ppsize" "123456"
[4] "-q" "--args" "Test"
Étape 3: Créer un testApp pour rendre le fonctionnement de que tout comme prévu
Voici mon test app brillant.
/srv/shiny-server/testApp/ui.R
ui <- fluidPage(
textOutput("user"),
textOutput("cmdArgs")
)
/srv/shiny-server/testApp/server.R
server <- function(input, output, session)
{
output$user <- renderText({
Sys.info()["user"]
})
output$cmdArgs <- renderText({
paste(commandArgs(), collapse=" ")
})
}
Résultat dans Firefox: