因公司需要,搭建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搭建,配置的链接

链接一

链接二