bbjbepzz的专栏

因公司需要,搭建R语言服务器,整了一段时间,终于整出来了,写一下心得,给大家分享一下。

R语言好像不能处理HTTP请求,但是有国外的一些人写了一个Apache的扩展,使R语言可以像PHP一样,处理请求,响应数据等。

首先我们去网上下载R语言的Apache扩展,我已经下载好了,给大家一个链接。R Apache扩展下载地址

我安装RApache扩展的环境是ubuntu server版,64位

如果大家没有安装R语言开发环境的话,先安装R语言的开发环境

apt-getinstallr-base-core

安装RApache依赖的一些库

apt-getinstallr-base-devapache2-mpm-preforkapache2-prefork-dev

apt-getinstalllibapreq2

apt-getinstalllibtool

然后大家把上面下载的RApache扩展解压,进入到jeffreyhorner-rapache-7b988ac目录下,

然后执行./configure

make

make install

安装成功后,我们可以在/usr/lib/apache2/modules/目录下看到一个mod_R.so文件,这个就是R语言的Apache扩展。

到这里已经成功一半了,接下来就是Apache的配置问题了

打开Apache下面的httpd.conf,加上下面这句配置

LoadModuleR_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: PackageTitle: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目录

RCMDbuild .(注意大小写)

成功后会生成一个压缩文件,test_1.0.tar.gz

然后执行

R CMD checktest_1.0.tar.gz

如果会出现以下信息(我在桌面版的ubuntu的时候没有出现,有server版的时候出现了)

*checkingPDFversionofmanual…WARNING

LaTeXerrorswhencreatingPDFversion.

执行以下命令

apt-getinstalltexlive-latex-base

apt-getinstalltexlive-latex-recommended

apt-getinstalltexlive-latex-extra

apt-getinstalltexlive-fonts-recommended

apt-getinstalltexlive-fonts-extra

安装完成后,再执行上面那个命令。

如果没有问题,就执行

RCMDINSTALLtest_1.0.tar.gz

安装成功后,我们还要配置一下apache

打开apache下面的httpd.conf,加上以下配置

<IfModulemod_R.c>

<Location/RTest>

SetHandlerr-handler

RHandlertest::test_fn

</Location>

</IfModule>

加入成功,启动apache

service apache2 start,如果启动没有问题,就打开浏览器

输入

如果出现了

[1] "Hello World"

几个字,就说明你的RApache已经搭建成功了。

RApache请求处理函数和全局变量SERVER:

全局变量SERVER

属性

unparsed_uri

uri

filename

canonical_filename

path_info

args

method

remote_ip

remote_host

cmd_path

GET

POST

COOKIES

FILES

方法

setHeader(key,value);

setContentType(type);

setCookie()

sendBin()

urlEncode()

urlDecode()

RApacheOutputErrors()

Apache配置

SetHandler

r-info:确认整套系统已正常工作

RHandlerfoo

以上请求处理函数和Apache配置,大家动手尝试一下就了解了(最好就是看opencpu的源代码,我也是从opencpu源代码和Apache扩展源代码中找出这些东西的。),下面给出当时参考的一些资料链接。

RApache搭建,参考资料网站铰接

未经一番寒彻骨,焉得梅花扑鼻香

bbjbepzz的专栏

相关文章:

你感兴趣的文章:

标签云: