当前位置: 首页>后端>正文

linux Rstudio-server 使用conda虚拟环境安装的R

实验系统环境

[root@localhost ~]# cat /etc/os-release 
NAME="Anolis OS"
VERSION="8.6"
ID="anolis"
ID_LIKE="rhel fedora centos"
VERSION_ID="8.6"
PLATFORM_ID="platform:an8"
PRETTY_NAME="Anolis OS 8.6"
ANSI_COLOR="0;31"
HOME_URL="https://openanolis.cn/"

[root@localhost ~]#

[lisi@localhost ~]$ conda -V
conda 23.3.1

实验目的:

  1. 使用conda 创建 R42 虚拟环境, 在R42 中安装 r-base=4.2 。
  2. 使用 root 用户安装 rstudio-server , 通过配置文件让 rstudio-server 连接上 R42 内的 R 。

1、创建 R42 虚拟环境, 在R42 中安装 r-base=4.2。

  1. 创建 R42 虚拟环境
(base) [lisi@localhost ~]$ conda create -y -n R42

这是一个使用conda命令创建名为R42的新环境的命令。其中各参数的含义如下:

  • create: 表示要创建一个新环境;
  • -y: 表示在创建过程中不进行确认提示,自动同意并继续;
  • -n R42: 表示将新环境命名为R42。

这个命令可以用于在计算机上创建Python虚拟环境,从而实现不同项目之间的隔离和管理。通过将相关的依赖关系和软件包安装在特定环境下,可以避免不同项目之间对Python库和软件包的相互影响和冲突。同时,使用conda创建环境可以方便地管理和切换不同环境,以满足不同需求的应用场景。

  1. 在 R42 环境中安装 r-base=4.2。

conda 默认官方的软件包支持到R的版本4.2,如需更高版本需要第三方的软件包源(conda-forge或其他)。

(base) [lisi@localhost ~]$ conda activate R42
(R42) [lisi@localhost ~]$ conda install -c conda-forge r-base=4.2


(R42) [lisi@localhost ~]$ find ~/miniconda3/envs/R42/ -type "d" -name "lib"
/home/lisi/miniconda3/envs/R42/x86_64-conda-linux-gnu/lib
/home/lisi/miniconda3/envs/R42/lib
/home/lisi/miniconda3/envs/R42/lib/R/lib
(R42) [lisi@localhost ~]$ 
(R42) [lisi@localhost ~]$ conda env list
# conda environments:
#
base                     /home/lisi/miniconda3
R42                   *  /home/lisi/miniconda3/envs/R42

(R42) [lisi@localhost ~]$

2、使用 root 用户安装 rstudio-server , 通过配置文件让 rstudio-server 连接上 R42 内的 R

  1. 使用 root 用户安装 rstudio-server。
# 使用 wget 或 curl 下载rstudio-server,如果下载卡着不动可以试试加上 -4 参数(ipv4)。
wget -c https://download2.rstudio.org/server/rhel8/x86_64/rstudio-server-rhel-2023.06.0-421-x86_64.rpm
curl -C - -O https://download2.rstudio.org/server/rhel8/x86_64/rstudio-server-rhel-2023.06.0-421-x86_64.rpm

# 安装 rstudio-server 。(安装的时候要保证yum源能正常使用,因为它可能会通过yum安装几个依赖包。)
yum -y install rstudio-server-rhel-2023.06.0-421-x86_64.rpm

# 查看 rstudio-server 是否启动,默认情况下是失败的,因为系统下没有装R.
[root@localhost ~]# systemctl status rstudio-server

# 修改 /etc/rstudio/rserver.conf 文件,指定R的路径,及lib库的路径。
# R_HOME= 后面填写你安装R的虚拟环境的路径,可以通过conda env list 查看。
R_HOME="/home/lisi/miniconda3/envs/R42"
cat >> /etc/rstudio/rserver.conf << EOF
# 配置意味着身份验证超时时间为 0 分钟,也就是说,用户的身份验证状态将永久保持有效,直到用户主动注销或关闭浏览器。这通常用于不需要安全性要求很高的应用程序场景中,例如内部工具、测试环境等。
auth-timeout-minutes=0
#  配置意味着用户可以选择 "保持登录" 选项,并且在 30 天内,即使关闭了浏览器或重新启动了设备,用户也可以保持登录状态。这提供了比经常输入凭据更方便的登录方式,但也会增加一定的安全风险。
auth-stay-signed-in-days=30

rsession-which-r=${R_HOME}/bin/R
rsession-ld-library-path=${R_HOME}/lib:${R_HOME}/x86_64-conda-linux-gnu/lib
EOF
systemctl restart rstudio-server
systemctl status rstudio-server

[root@localhost ~]# cat /etc/rstudio/rserver.conf 
# Server Configuration File

# 配置意味着身份验证超时时间为 0 分钟,也就是说,用户的身份验证状态将永久保持有效,直到用户主动注销或关闭浏览器。这通常用于不需要安全性要求很高的应用程序场景中,例如内部工具、测试环境等。
auth-timeout-minutes=0
#  配置意味着用户可以选择 "保持登录" 选项,并且在 30 天内,即使关闭了浏览器或重新启动了设备,用户也可以保持登录状态。这提供了比经常输入凭据更方便的登录方式,但也会增加一定的安全风险。
auth-stay-signed-in-days=30

rsession-which-r=/home/lisi/miniconda3/envs/R42/bin/R
rsession-ld-library-path=/home/lisi/miniconda3/envs/R42/lib:/home/lisi/miniconda3/envs/R42/x86_64-conda-linux-gnu/lib
[root@localhost ~]# 


  1. 防火墙设置,允许 rstudio-server 使用的 8787/tcp 端口通行。
  • 方法1:直接关闭防火墙。
systemctl stop firewalld
systemctl disable firewalld
  • 方法2:允许所有IP访问 8787/tcp 端口。
firewall-cmd --permanent --zone=public --add-port=8787/tcp
firewall-cmd --reload
  • 方法3:只允许本地的 192.168.30.0/24 网段访问 8787/tcp 端口。
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.30.0/24" port port="8787" protocol="tcp" accept"
firewall-cmd --reload
  1. 关闭selinux。
[root@localhost ~]# setenforce 0 && sed -i '/^SELINUX=/s/.*/SELINUX=disabled/' /etc/selinux/config
[root@localhost ~]# getenforce 
Disabled
[root@localhost ~]#
[root@localhost ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted


[root@localhost ~]# 

3、 通过网页访问 rstudio-server。

通过 ip a 查询自己的IP地址。

[root@localhost ~]# ip a | grep -Eo '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' | grep -v '127.0.0.1\|255'
192.168.30.12
192.168.60.145
[root@localhost ~]#

在浏览器中输入 http://192.168.30.12:8787
扩展
1、错误解决

如果在浏览器中登录后,提示 connot connect to R Session


linux Rstudio-server 使用conda虚拟环境安装的R,第1张
rstudio-server登录失败.png
  • 第一种情况:
    (我是使用 mamba 安装r-base=4.3时,遇到的这种情况,安装r-base小于4.3版本就可以)
    在/etc/rstudio/rserver.conf 配置文件中未指定R lib 库的位置,指定R lib库的位置即可
# 在 /etc/rstudio/rserver.conf 配置文件中添加以下内容。把 /home/lisi/miniconda3/envs/R43 改为 你安装R的虚拟环境路径。
rsession-ld-library-path=/home/lisi/miniconda3/envs/R43/lib:/home/lisi/miniconda3/envs/R43/x86_64-conda-linux-gnu/lib
  • 第二种情况:
    (使用其他用户登录时,遇到的这种情况)
    给创建conda的用户(lisi) 的家目录 /home/lisi 递归给 777 的权限。
chmod -R 777 /home/lisi

或者把要登录用户(zhangsan)的的附加组为设置为创建conda的用户(lisi) ,修改创建conda的用户(lisi)的家目录的属组权限设置为 rwx 。

chmod g+rwx /home/lisi
usermod -aG lisi zhangsan
2、 rstudio-server 管理命令
rstudio-server start #启动
rstudio-server stop #停止
rstudio-server restart #重启

查看运行中R进程
rstudio-server active-sessions

指定PID,停止运行中的R进程
rstudio-server suspend-session <pid>

停止所有运行中的R进程
rstudio-server  suspend-all

强制停止运行中的R进程,优先级最高,立刻执行
rstudio-server force-suspend-session <pid>
rstudio-server force-suspend-all

RStudio Server临时下线,不允许web访问,并给用户友好提示
rstudio-server offline

RStudio Server临时上线
rstudio-server online

参考文档:
https://docs.posit.co/ide/server-pro/rstudio_pro_sessions/r_executable_and_libraries.html
https://docs.posit.co/ide/server-pro/reference/rserver_conf.html#rsession-settings
https://www.jianshu.com/p/ffc86a580844
https://blog.csdn.net/qq_41728601/article/details/125757419


https://www.xamrdz.com/backend/3p61926096.html

相关文章: