这篇看一下R on linux Server 的这个版本,R可以单独安装到一台机器上使用,而安装Linux Server 可以通过Web进行访问RStudio,这样一个Server 可以供多个用户访问。
一.安装 RStudio Server
RStudio下载地址:http://rstudio.org/download/
安装RStudio 工具之前需要先安装好R,关与linux 下R的安装,参考:
R 语言Linux 环境 安装 说明 http://www.linuxidc.com/Linux/2012-03/55940.htm
安装 RStudioServer 版本:
[root@rac1 R_Language]# rpm -Uvhrstudio-server-0.95.262-x86_64.rpm
Preparing… ###########################################[100%]
1:rstudio-server ########################################### [100%]
rsession: no process killed
Starting rstudio-server: [ OK ]
You have new mail in /var/spool/mail/root
二. 管理配置 RStudio Server
2.1 web 访问地址
安装并启动RStudioServer之后就可以通过web进行访问了,默认情况下RStudio Server 的端口是8787,所以,我们可以使用如下地址进行访问:
http://<server-ip>:8787
这里需要我们输入用户名和密码。关于用户名有2点注意事项:
(1) 不允许使用system 用户登陆,即用户ids小于100的用户.
示例:
[root@rac1 R_Language]# id
uid=0(root) gid=0(root)groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
–这里root 用户的UID 就是0
[root@rac1 R_Language]# su – Oracle
rac1:/home/oracle> id
uid=500(oracle) gid=501(oinstall)groups=501(oinstall),502(dba),503(asmadmin),504(oper)context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
–Oracle 用户的UID就是50.
(2) 用户的认证可以使用RSA。
如下是我用Oracle 用户登陆之后的截图:
如果我们不能通过web进行,可以使用如下命令验证rstudio server 的安装:
[root@rac1 R_Language]# rstudio-server verify-installation
Stopping rstudio-server: [ OK ]
Starting rstudio-server: [ OK ]
2.2 配置RStudio ServerRStudio有2个配置文件,但是默认情况下,这2个文件没有创建,如果我们要修改这个配置,需要先创建这2个文件:
[root@rac1 rstudio]# touch /etc/rstudio/rserver.conf
[root@rac1 rstudio]# touch /etc/rstudio/rsession.conf
[root@rac1 rstudio]# ls
installed rserver.conf rsession.conf secure-cookie-key
创建配置文件之后就可以进行修改,修改完毕之后可以使用命令来验证修改的有效性:
[root@rac1 rstudio]# rstudio-server test-config
注意:
这个命令在启动和关闭RStudio server 时也会自动执行。当配置无效时,这个验证也会报错。
2.2.1 配置网络端口和地址
默认的端口是8787,如果我们想改成其他端口,可以在/etc/rstudio/rserver.conf 文件中添加并修改参数:
www-port=80
–这里我们是将端口改成80.
默认情况下,RStudio 是将IP地址绑定到0.0.0.0, 这样任何客户地址都可以访问。 我们可以改成其他地址,添加并修改参数:
www-address=127.0.0.1
修改完毕之后要验证参数有效性,并重启rstudio-server。
[root@rac1 rstudio]# rstudio-server test-config
[root@rac1 rstudio]# rstudio-server restart
Stopping rstudio-server: [ OK ]
Starting rstudio-server: [ OK ]
2.2.2 设置扩展库
如果我们添加其他的library到默认LD_LIBRARY_PATH 中指定库,可以通过rsession-ld-library-path参数,在/etc/rstudio/rserver.conf 文件中添加external library的位置即可,如:
rsession-ld-library-path=/opt/local/lib:/opt/local/someapp/lib
2.2.3 指定R 版本
默认情况下,RStudio server 运行时使用的R是系统PATH中指定的R,这个位置可以使用which R确定,如果我们的系统上有多个版本的R,那么可以使用rsession-which-r参数指定RStudio 使用哪个版本的R。 如:
rsession-which-r=/usr/local/bin/R
在/etc/rstudio/rserver.conf文件里添加这个参数之后,必须重启rstudio server 才能生效。
2.2.4 设置用户限制
如果有大量的用户使用,那么会消耗很多的资源,可以限制一些用户对资源的使用。
在/etc/rstudio/rserver.conf文件中添加auth-required-user-group参数,可以指定访问rstudio 的用户:
auth-required-user-group=rstudio_users
验证一下:
[root@rac1 rstudio]# useradd dave
You have new mail in /var/spool/mail/root
[root@rac1 rstudio]# passwd dave
Changing password for user dave.
New password:
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updatedsuccessfully.
[root@rac1 rstudio]# cat /etc/passwd|grepdave
dave:x:502:506::/home/dave:/bin/bash
–创建组,将dave 用户添加到该组:
[root@rac1 rstudio]# groupadd rstudio_users
[root@rac1 rstudio]# usermod -g rstudio_users -G rstudio_users dave
在/etc/rstudio/rserver.conf 文件中指定用户组,只有属于改组的用户才可以使用rstudio。
auth-required-user-group=rstudio_users
[root@rac1 rstudio]# rstudio-server test-config
[root@rac1 rstudio]# rstudio-server restart
Stopping rstudio-server: [ OK ]
Starting rstudio-server: [ OK ]
现在就只有dave 用户能访问,Oracle 用户就访问不了了。
当然也可以添加一些其他的资源限制,比如总内存,stack size 和进程数等,如:
rsession-memory-limit-mb=4000
rsession-stack-limit-mb=10
rsession-process-limit=100
添加到/etc/rstudio/rserver.conf后需要重启服务才能生效。
2.2.5 其他的设置
前面讲的都是/etc/rstudio/rserver.conf配置,另一个配置文件是/etc/rstudio/rsession.conf ,其可以配置与R session 相关的信息。当R 用户很多时,这个参数就很有用,其可以显示session 信息。
以下的配置都是写在/etc/rstudio/rsession.conf文件中。
默认情况下,当用户2个小时没有执行命令,RStudio 会suspend 用户的R session,并将这些信息写入磁盘,从而减少资源的消耗,当用户下次使用时,session被还原。
可以通过session-timeout-minutes 参数指定session 过期的时间,如:
session-timeout-minutes=30
如果这里设置为0,则表示禁用该功能。用户session 将不会suspend,一直运行。
其他的限制包括limit-file-upload-size-mb 参数,其可以显示最大的上传大小,如:
limit-file-upload-size-mb=100
也可以指定默认的CRAN repository 服务地址,如:
r-cran-repos=http://cran.case.edu/
2.3 管理RStudio Server
RStudio server 的管理通过rstudio-server 命令来进行,通过这个命令可以启用,停止,重启等操作。
[root@rac1 rstudio]# rstudio-server
Usage: rstudio-server{start|stop|restart|test-config|verify-installation|suspend-session|suspend-all|force-suspend-session|force-suspend-all|offline|online|active-sessions|version}
2.3.1 Stopping and Starting
如果使用包来安装的RStudio,那么会自动将RStudio 注册到系统了,在系统启动会自动启动。
在Ubuntu系统上,启动脚本是:
/etc/init/rstudio-server.conf
在其他系统上,启动脚本在:
/etc/init.d/rstudio-server
手工的操作命令如下:
$ rstudio-server stop
$ rstudio-server start
$ rstudio-server restart
2.3.2 Managing Active Sessions
可以使用如下命令查看活动的session:
[root@rac1 init.d]# rstudio-server active-sessions
PID TIME COMMAND
496900:00:09 /usr/lib/rstudio-server/bin/rsession -u Oracle
838900:00:04 /usr/lib/rstudio-server/bin/rsession -u dave
You have new mail in /var/spool/mail/root
[root@rac1 init.d]#
这里有2个活动的session。
–suspend 某个session:
$ rstudio-server suspend-session<pid>
[root@rac1 init.d]# rstudio-serversuspend-session 4969
–suspend 所有session:
$ sudo rstudio-server suspend-all
[root@rac1 init.d]# sudo rstudio-serversuspend-all
Suspend 命令还有一个force 变量,其可以中断session的任何R操作:
$ sudo rstudio-server force-suspend-session<pid>
$ sudo rstudio-server force-suspend-all
在系统reboot 之前,会先执行force-suspend-all,从而保证活动 R sessions的数据及时写入disk。
2.3.3 Taking the Server Offline
如果要进行系统维护,要让用户接收到一条友好的消息,可以执行serveroffline 操作,其会在用户web上显示server 临时offline。
[root@rac1 init.d]# rstudio-server offline
Stopping rstudio-server: [ OK ]
Starting rstudio-server: [ OK ]
You have new mail in /var/spool/mail/root
在用户的web会显示如下:
当维护结束,在让sever online即可:
[root@rac1 init.d]# rstudio-server online
Stopping rstudio-server: [ OK ]
Starting rstudio-server: [ OK ]
You have new mail in /var/spool/mail/root
最后的老规矩,演示一下之前安装时示例,如下图: