Ошибки в развертывании Rapache и Rook
Я пытаюсь создать веб-приложение, используя R и Rook.
Я видел этот пример http://www.road2stat.com/cn/r/rook.html и смог воспроизвести его в командной строке (вызов изнутри R). Но я хочу, чтобы несколько пользователей могли подключаться к приложению одновременно, поэтому я хочу развернуть его, как сказал здесь Джефф - http://jeffreyhorner.tumblr.com/
Мне удалось воспроизвести большинство примеров, которые пришли с пакетом 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")
Может ли кто-нибудь, пожалуйста, указать мне правильное направление или направить меня к ресурсам, которые помогут мне в этом.
PS Я использую Fedora 15 и у меня установлен Rapache-1.2.0.