因公司需要,搭建R语言服务器,整了一段时间,终于整出来了,写一下心得,给大家分享一下。
R语言好像不能处理HTTP请求,但是有国外的一些人写了一个Apache的扩展,使R语言可以像PHP一样,处理请求,响应数据等。
首先我们去网上下载R语言的Apache扩展,我已经下载好了,给大家一个链接。R Apache扩展下载地址
我安装RApache扩展的环境是ubuntu server版,64位
如果大家没有安装R语言开发环境的话,先安装R语言的开发环境
apt-get install r-base-core
安装RApache依赖的一些库
apt-get install r-base-dev apache2-mpm-prefork apache2-prefork-dev
apt-get install libapreq2
apt-get install libtool
然后大家把上面下载的RApache扩展解压,进入到jeffreyhorner-rapache-7b988ac目录下,
然后执行./configure
make
make install
安装成功后,我们可以在 /usr/lib/apache2/modules/目录下看到一个mod_R.so文件,这个就是R语言的Apache扩展。
到这里已经成功一半了,接下来就是Apache的配置问题了
打开Apache下面的httpd.conf,加上下面这句配置
LoadModule R_module /usr/lib/apache2/modules/mod_R.so
接下来就是写R文件了,我们随便在一个目录下建立一个R文件,我这里叫test.R,里面写一个方法叫test_fn(这个可以随便写).
test_fn<-function(){
print('Hello World');
}
然后我们在命令行输入R,这样就进入R界面了,RApache虽然可以处理单个R文件,但是我这里还是像opencpu一样,把R语言打包。
进入R界面后,执行以下函数:
package.skeleton(name=包名 code_files=要打包的文件名)
我这里输入的是
package.skeleton(name='test', code_files='test.R')
执行成功后,会生成一个test目录,进入目录,里面有一些生成的文件和文件夹,
我们主要要操作的就是DESCRIPTION,NAMESPACE,还man目录下面的test.Rd
我们先进入man目录下面,除了test_fn.Rd,其它全部删除。
先看下怎么改DESCRIPTION
Package:
Type: Package
Title:
Version:
Date:
Author:
Maintainer:
Description:
License: AGPL
上面大家按照要求写就行了,什么包名,作者的
主要是下面这个:
Collate:
默认生成的DESCRIPTION文件是没有Collate:的,我们手动加进去 ,这个后面写的是要导出的R文件,有多少就写多少,我们的叫test.R,所以我们写
Collate:
'test.R'
接下来我们改NAMESPACE
这里我们要改的是我们要导出的函数,就是这个函数名可以直接在Apache配置的,就是让一个请求对应一个函数,这个看大家具体需要。
把NAMESPACE里面的内容删除了,如果有的话,然后加上export(test_fn)就行了。
然后还有一个地方要改
进入到man目录下,打开test.Rd
把里面全部删除,当然你要是想写的话,也可以一个一个写进去,我们可以只写下面这些内容
随便写点东西进去,是为了接下来打包的时候可以成功,如果不写的,会失败,提示要写。
以上弄完后,接下来开始编译打包了
确保我们当前目录是test目录
R CMD build .(注意大小写)
成功后会生成一个压缩文件,test_1.0.tar.gz
然后执行
R CMD checktest_1.0.tar.gz
如果会出现以下信息(我在桌面版的ubuntu的时候没有出现,有server版的时候出现了)
* checking PDF version of manual ... WARNING
LaTeX errors when creating PDF version.
就执行以下命令,安装一个东西
apt-get install texlive-latex-base
apt-get install texlive-latex-recommended
apt-get install texlive-latex-extra
apt-get install texlive-fonts-recommended
apt-get install texlive-fonts-extra
安装完成后,再执行上面那个命令。
如果没有问题,就执行
R CMD INSTALL test_1.0.tar.gz
安装成功后,我们还要配置一下apache
打开apache下面的httpd.conf,加上以下配置
<IfModule mod_R.c>
<Location /RTest>
SetHandler r-handler
RHandler test::test_fn
</Location>
</IfModule>
加入成功,启动apache
service apache2 start,如果启动没有问题,就打开浏览器
输入http://localhost/RTest
如果出现了
[1] "Hello World"
几个字,就说明你的RApache已经搭建成功了。
下面再给出相关RApache搭建,配置的链接
请发表评论