部署Rapache和Rook时出错

时间:2012-10-05 15:53:46

标签: r rapache rook

我正在尝试使用R和Rook创建一个Web应用程序。

我看到了这个例子http://www.road2stat.com/cn/r/rook.html,我已经能够在我的命令行中复制它(从R里面调用它)。但是我希望多个用户能够同时连接到应用程序,所以我想像杰夫所说的那样部署它 - http://jeffreyhorner.tumblr.com

我已经能够复制像Jeff在他的博客上所说的Rook软件包附带的大多数示例。这些包括: summary.r RNORM RookTestApp

我现在遇到的问题是我不能让前一个例子工作(那是-www.road2stat)每次我尝试上传文件时它都会给我一个错误信息。使用命令行时不会发生这种情况。

我的错误信息是这样的:

  

内部服务器错误服务器遇到内部错误或   配置错误,无法完成您的请求。

这是我部署应用程序的途径

<Location /test/Visbin>
SetHandler r-handler
RFileEval /usr/lib/R/library/Rook/exampleApps/visbin.R:Rook::Server$call(newapp)
</Location>

这是我试图复制的应用

newapp = function(env) {
req = Rook::Request$new(env)
res = Rook::Response$new()
res$write('Choose a Binary file to Train:\n')
res$write('<form method="POST" enctype="multipart/form-data">\n')
res$write('<input type="file" name="data">\n')
res$write('xdim:\n')
res$write('<form method="POST">\n')
res$write('<input type="text" name="xdim" value="12">\n')
res$write('ydim:\n')
res$write('<form method="POST">\n')
res$write('<input type="text" name="ydim" value="25">\n')
res$write('ncolors:\n')
res$write('<form method="POST">\n')
res$write('<input type="text" name="ncolors" value="8">\n')
res$write('<input type="submit" name="Go!">\n</form>\n<br>')

myNormalize = function (target) {
return((target - min(target))/(max(target) - min(target)))
}

if (!is.null(req$POST())) {
data = req$POST()[["data"]]
hash = digest(data$tempfile, algo = "md5", file = TRUE)
destFile = file(data$tempfile, "rb")
k = floor((file.info(data$tempfile)$size/16)) - 2
doneFile = readBin(con = destFile, what = "raw", n = 2 * 8 * k)
close(destFile)
tmpFile0 = rbind(doneFile[seq(1, (2 * 8 * k) - 1, 2)], doneFile[seq(2, (2 * 8 * k), 2)])
tmpFile1 = paste(tmpFile0[1, ], tmpFile0[2, ], sep = "")
initMat = matrix(strtoi(tmpFile1, 16L), ncol = 8, byrow = TRUE)
normMat = myNormalize(initMat)
trainedSOM = kohonen::som(normMat, grid = somgrid(xdim = req$POST()[["xdim"]], ydim = req$POST()[["ydim"]], "hexagonal"))
png(paste("/tmp/", hash, ".png", sep = ""))
plot(trainedSOM, type = "dist.neighbours", palette.name = rainbow, ncolors = as.numeric(req$POST()[["ncolors"]]), main = "")
dev.off()
res$write(paste("<img src='", s$full_url("pic"), "/", hash, ".png'", " />", sep = ""))
}
res$finish()

}

这是我的命令行说明:

s = Rhttpd$new()
s$add(app = newapp, name = "visbin")
s$add(app = File$new("/tmp"), name = "pic")
s$start()
s$browse("visbin")

任何人都可以指出我正确的方向或指导我帮助我做这些资源。

P.S。我使用的是fedora 15,我安装了Rapache-1.2.0。

0 个答案:

没有答案