我在Ubuntu 16.04 EC2实例上有一个闪亮的应用程序,我希望能够通过webhook更新它,当有一个推动回购。所以我设置了另一个闪亮的应用程序来接收webook。我知道通过一个闪亮的应用程序执行此操作非常远远不是最佳的,但我只是希望现在能够获得一些东西,然后我会稍后回来找一个更好的解决方案。
所以我将webhook设置为请求某个网址,但目前这并不重要。我在加载页面时遇到的问题是该应用无法通过git pull
(或system2
运行system
。用户闪亮可以成功运行git pull
,并且还可以通过R解释器中的git pull
或system2
命令成功运行system
。
这是应用程序的样子:
library(shiny)
setwd("/home/shiny/myrepo")
result <- system2("git", "pull", stdout = TRUE, stderr = TRUE)
ui <- bootstrapPage(
textOutput("result")
)
# Define the server code
server <- function(input, output) {
output$result <- renderText(result)
}
# Return a Shiny app object
shinyApp(ui = ui, server = server)
加载页面时
Permission denied (publickey).
fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
有什么我不能解释Shiny服务器的运行方式吗?我的ssh密钥存储在keychain
中ssh-agent
,因此不应该成为问题。我相信,权限在app.R文件和repo上是正确的(闪亮是两者的所有者和组,并且再次,可以从shell和R解释器执行repo上的git pull
)。
我猜测它与Shiny服务器及其访问/home/shiny/.ssh文件夹的能力有什么关系?
答案 0 :(得分:0)
您可以通过在窗口中打印信息来明确检查用户。
如果您运行的是default configuration Shiny Server,那么您将在/srv/shiny-server
目录下提供任何应用。
尝试将其放入/srv/shiny-server/test-repo-pull/app.R
,然后从<your-host>:3838/test-repo-pull
library("shiny")
ui <- bootstrapPage(
actionButton("pull", "Pull Master Branch"),
verbatimTextOutput("result"),
tableOutput("user")
)
server <- function(input, output) {
result <- eventReactive(input$pull, {
system2("git", "pull origin master", stdout = TRUE, stderr = TRUE)
})
output$user <- renderTable({
info <- Sys.info()
data.frame(variable = names(info), values = unname(info))
})
output$result <- renderPrint({
result()
})
}
shinyApp(ui, server)
请注意,您不应在由Shiny Server运行的应用程序中执行setwd
,而应明确处理文件的任何临时处理(如果需要)。
更有可能这是与没有public SSH key configured with BitBucket相关的权限问题,您是否已将主目录配置为在/etc/shiny-server/shiny-server.conf
(而不是用户shiny
)中作为其所有者用户运行?< / p>