Ben Shiny
oluşturulmuş bir uygulamayı (ui.R
ve server.R
buradan alınır bir öğretici,: http://shiny.rstudio.com/tutorial/lesson1/) var. Bu iki dosyayı shiny-frontend
klasöründe var ve RSTudio'da yerel olarak runApp("shiny-frontend")
varsa, her şey harika çalışıyor ve tarayıcımda öğreticiyi görüyorum.Dağıtılan Rgör 'bulamadı fonksiyonu 'httpdPort''
Şimdi aynı uygulamanın Cloudfoundry aracılığıyla Bluemix'e yerleştirilmesini istiyorum. Bunu kullanıyorum: http://www.ibm.com/developerworks/library/ba-rtwitter-app/ Bir öğretici olarak, ancak bir hatayla mücadele ediyorum.
R -f ./start.r --gui-none --no-save
olarak çalıştığım bir start.r
dosyam var. https://github.com/virtualstaticvoid/heroku-buildpack-r buildpack kullanıyorum.
start.r
(çok küçük değişikliklerle bluemix öğretici alınan) şöyle My:
library(shiny)
if (Sys.getenv('VCAP_APP_PORT') == "") {
print("Running Shiny")
runApp("shiny-frontend")
} else {
# In case we're on Cloudfoundry, run this:
print('running on CF')
# Starting Rook server during CF startup phase - after 60 seconds start the actual Shiny server
library(Rook)
myPort <- as.numeric(Sys.getenv('VCAP_APP_PORT'))
myInterface <- Sys.getenv('VCAP_APP_HOST')
status <- -1
# R 2.15.1 uses .Internal, but the next release of R will use a .Call.
# Either way it starts the web server.
if (as.integer(R.version[["svn rev"]]) > 59600) {
status <- .Call(tools:::startHTTPD, myInterface, myPort)
} else {
status <- .Internal(startHTTPD(myInterface, myPort))
}
if (status == 0) {
unlockBinding("httpdPort", environment(tools:::startDynamicHelp))
assign("httpdPort", myPort, environment(tools:::startDynamicHelp))
s <- Rhttpd$new()
s$listenAddr <- myInterface
s$listenPort <- myPort
s$print()
Sys.sleep(60)
s$stop()
}
# run shiny server
sink(stderr())
options(bitmapType='cairo')
getOption("bitmapType")
print("test")
write("prints to stderr", stderr())
write("prints to stdout", stdout())
write(port, stdout())
runApp('shiny-frontend',port=myPort,host="0.0.0.0",launch.browser=F)
}
Ve init.r
, şöyle görünür:
install.packages("shiny", clean=T)
install.packages("Rook", clean=T)
Sonra çalıştırdığınızda, her şeyi doğru şekilde dağıtıldı, ancak sonra rotaya gitmeye çalıştığımda, günlükte bir hata görüyorum:
Ayrıca, atanan bağlantı noktasının her seferinde farklı olduğunu da fark ettim, bu da tuhaf ve bluemix panosundaki rota bundan bahsetmiyor. Ama bağlantı noktasını kayıt defterine çıkardım ve bu numarayı kullanıyorum.
Ayrıca ben yapıyorum yolu herkes daha kolay bir yol önermek böylelikle eğer, bunu