概述
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系统:安装readline
:yuminstall 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环境所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复