我是靠谱客的博主 超级草丛,最近开发中收集的这篇文章主要介绍非Root用户下搭建Rserve环境,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 系统信息

本次安装使用系统环境是CentOS7.4,要求提前安装编译R需要的GCC等运行环境,如果是离线环境下,安装包可以直接通过挂载系统镜像来进行安装,安装好Java,不要使用CentOS自带的 Open JDK。

2. 安装文件准备

这里准备的安装包主要包括R安装、Rserve 安装包以及可能用到的依赖包,依赖包主要是与GCC编译器相关,在安装的过程中如果提示缺少相应的依赖包,可以根据缺少的内容进行安装,然后再进行 R 和 Rserve 的安装。R和 Rserve 安装包(tar.gz文件)都可以从官网直接下载:

  • R源码包下载:https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-3/R-3.5.1.tar.gz
  • Rserve源码包下载:http://www.rforge.net/Rserve/snapshot/Rserve_1.8-6.tar.gz
  • REngine.jar下载:http://www.rforge.net/Rserve/files/REngine.jar
  • RserveEngine.jar 下载:http://www.rforge.net/Rserve/files/RserveEngine.jar
3. 系统环境检查

使用putty登陆到远程服务器,查看系统环境:

$ cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

检查系统环境是否有GCC环境:

$ rpm –qa | grep gcc

libgcc-4.8.5-28.el7_5.1.x86_64
gcc-gfortran-4.8.5-28.el7_5.1.x86_64
gcc-4.8.5-28.el7_5.1.x86_64
gcc-c++-4.8.5-28.el7_5.1.x86_64

如果得到的结果中包含了gcc-c++gcc-gfortran开头的文件,则可以继续进行下面的安装了,如果得到的结果只包含一个gcc开头的,那你需要安装gcc-c++gcc-gfortran

4. 编译安装R

在目录/home/r下新建目录R

$ mkdir R

将下载好的R源码包上传到服务器中的R目录下,可以使用SSH进行上传,注意下面的命令是在自己的计算机上执行,也可以使用wget直接下载到服务器上

$ scp ./R-3.5.1.tar.gz r@101.6.28.215:~/R

$ wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-3/R-3.5.1.tar.gz

下载的R-3.5.1.tar.gz是无法直接安装的,需要现将其解压到指定的目录下,这里直接将其解压到上面新建的R目录下,这时/home/r/R目录下内出现文件夹R-3.5.1,进入路径

$ tar –zvxf R-3.5.1.tar.gz

$ cd R-3.5.1

$ ./configure --enable-R-shlib--prefix=/home/r/R

若出现错误:

configure: error:–with-readline=yes (default) and headers/libs are not available

设置如下参数:./configure --with-readline=no

或者Centos系统:安装readlineyuminstall readline-devel

或者Ubuntu系统:安装readline

若不安装readline则继续执行

$ ./configure --with-readline=no --enable-R-shlib --prefix=/home/r/R

若出现报错:

configure: error:–with-x=yes (default) and X11 headers/libs are not available

设置参数–with-x=no

$ ./configure --with-readline=no --with-x=no --enable-R-shlib --prefix=/home/r/R

若出现报错:

configure: error:libcurl >= 7.22.0 library and headers are required with support for https

这是因为系统环境下的curl版本不对,这里为r用户单独编译安装curl包,安装目录可随意指定

$ wget https://curl.haxx.se/download/curl-7.62.0.tar.gz

$ tar -zxvf curl-7.61.0.tar.gz

$ cd curl-7.61.0/

$ ./configure

$ make

$ make install

安装完成后在/home/r目录下打开.bashrc文件配置环境变量,即增加一行

export PATH=$PATH:/home/r/packages/curl/bin

保存后执行

$ source .bashrc

到此最新版本的curl安装完成,再次执行

$ ./configure --with-readline=no --with-x=no --enable-R-shlib --prefix=/home/r/R

到此源码编译R配置完成,若还有其他错误,请自行查找资料解决,这里不再一一列举。对上述配置过程用到的一些参数解释如下:

  • –enable-R-shlib 这个参数特别重要,如果没有这个参数,那么你后面将无法使用Rserve
  • –prefix=/home/r/R这个参数是用来定义R的安装位置的,一定要保证这个目录存在,如果没有这个目录,请先建立这个目录,不指定这个目录的话会安装到解压目录即/home/007/R-3.1.2中,不建议这样,请指定一个空的目录
  • –with-x=no表示不使用X-Windows系统,也就是类Unix操作系统的GUI,一般不会使用这个,但默认为yes,如果你没有安装libx的话会报错的,所以我们直接设置为no
  • –with-readline=no表示不使用系统的readline库,如果系统上没有libreadline,此选项填“no“,默认是yes,但是服务器系统下没有安装readline库,服务端不会在终端中一行一行的写R程序,这里将其设置了为no,其结果是我们无法使用上下左右键来查找使用过的命令了,如果要用的话,建议先查找下你的机器上是否安装了readline,如果没有的话将其安装上之后再设置为yes,执行上面的命令即可。

完全配置正确后,在R-3.5.1目录下依次执行如下命令完成R的编译与安装

$ make

$ make install

安装完成后,需要配置环境变量,在/home/r/.bash_profile增加如下内容

R_HOME=/home/r/R
PATH=PATH:HOME/.local/bin:HOME/bin:R_HOME/bin

执行如下命令使环境变量生效

$ source .bash_profile

此时在中断输入命令

$ R

此时若进入R环境,则说明上面安装没有问题。但在该服务器上安装时发现root用户也安装R环境并且配置了全局环境变量,导致r用户下的R环境被屏蔽掉了,解决方法是在home/r/.bashrc文件中增加如下内容:

$ alias R=/home/r/R/bin/R

这样就可以指定执行命令R时所调用的R环境的位置,到此R语言环境就全部安装完成了。

5. Rserve包安装

首先将下载好的Rserve源码包上传到服务器,或者直接利用wget下载到服务器,这里源码压缩包位于/home/r/R目录下,进入路径执行命令

$ R CMD INSTALL ./Rserve_1.8-6.tar.gz

执行完成可以看到最后提示Done(Rserve)说明安装成功了。如果说这里出现了安装错误的提示,请确认安装R的时候认真阅读了我写的四个参数的意义。

6. 启动Rserve服务

编写配置文件Rserv.conf如下:

remote enable
fileio enable
interactive yes
port 6311
encoding utf8
source /home/r/R/start.R
auth required
plaintext disable

编写启动时执行的初始化代码start.R,主要是教学评估用到的相关环境的加载,代码如下:

cat("This isRserve of teaching evaluation system!!n")

cat("Start checkand load R packages...n")

is.installed <-function(mypkg) is.element(mypkg, installed.packages()[, 1])

if(is.installed("robustbase")) {
    library(robustbase)
} else {
    install.packages("robustbase")
    library(robustbase)
}

cat("Success toload package 'robustbase'n")

if(is.installed("MASS")) {
    library(MASS)
} else {
    install.packages("MASS")
    library(MASS)
}

cat("Success toload package 'MASS'n")

if(is.installed("graphics")) {
    library(graphics)
} else {
    install.packages("graphics")
    library(graphics)
}

cat("Success toload package 'graphics'n")

print(paste("Serverstart at", Sys.time()))

在终端执行命令

$ R CMD Rserve --RS-conf ./Rserv.conf

提示成功启动后,可以用ps命令查看进程

$ ps –ef | grep Rserve

r         24463 0.0  0.2 297552 57540 ?        Ss  11月16   0:50 /home/r/R/lib64/R/bin/Rserve --RS-conf./Rserv.conf

r         75724 0.0  0.0 112680   980 pts/4   S+   05:55   0:00 grep --color=auto Rserve

可以看到 Rserve 已经成功启动,使用netstat命令查看端口占用

$ netstat -ntlp | grep Rserve

tcp        0     0 0.0.0.0:6311           0.0.0.0:*              LISTEN      24463/Rserve

可以看到此时Rserve已经允许远程IP访问,占用端口6311,向管理员申请开放该端口即可,至此Rserve环境搭建完成。


参考文档

[1] https://www.jianshu.com/p/edb234eed915

[2] https://www.2cto.com/kf/201702/594331.html

[3] https://blog.csdn.net/wangxiaotongfan/article/details/80733283

[4] https://blog.csdn.net/u011955252/article/details/65442549

最后

以上就是超级草丛为你收集整理的非Root用户下搭建Rserve环境的全部内容,希望文章能够帮你解决非Root用户下搭建Rserve环境所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部