管理员配置Jupterhub

  1. 在Ubuntu上演示如何部署R语言环境,包括

    1. posit的已经编译了一些R的安装

    2. 系统已经装了R,我额外编译的R如何让大家都能用到

    3. 如何配置RStudio

  2. jupyterhub的配置和使用

    1. 管理员如何配置jupyterhub

    2. 用户如何配置自己的jupyter环境

Ubuntu上的R部署

这一次,我们以从posit上下载预编译的R: https://docs.posit.co/resources/install-r/[1]

比如说Ubuntu 20.04的安装方法如下

sudo apt-get update
sudo apt-get install gdebi-core


export R_VERSION=4.3.1
curl -O https://cdn.rstudio.com/r/ubuntu-2004/pkgs/r-${R_VERSION}_1_amd64.deb
sudo gdebi r-${R_VERSION}_1_amd64.deb

#验证
/opt/R/${R_VERSION}/bin/R --version


但是此时安装的R并不能使用,因为他不在环境变量PATH中,为了让所有人能够使用,也为了方便切换版本,我们通过软连接的方式,将安装的R链接到/usr/local/bin

export R_VERSION=4.3.1

sudo ln -s /opt/R/${R_VERSION}/bin/R /usr/local/bin/R
sudo ln -s /opt/R/${R_VERSION}/bin/Rscript /usr/local/bin/Rscript

接下来配置RStudio server, 还是Ubuntu为例。

wget https://download2.rstudio.org/server/focal/amd64/rstudio-server-2023.06.1-524-amd64.deb
sudo gdebi rstudio-server-2023.06.1-524-amd64.deb

由于将R放在了/usr/local/bin下,因此RStudio server可以直接访问到这个R,也就不需要修改配置文件/etc/rstudio/rserver.conf

当然环境配置到此还不够,我们下一步还需要安装很多R包,为了简化这一过程,我将我自己常用的R包汇总到了一个文件中,见https://github.com/xuzhougeng/server-management-for-bioinformatics/blob/main/scripts/common-r-package.r[2]

你需要在服务器下载我的common-r-package.r或者新建一个文件,粘贴上述内容,即可。然后运行如下命令

export R_VERSION=4.3.1

sudo /opt/R/${R_VERSION}/bin/Rscript common-r-package.r

这样子服务器就会运行这个安装脚本。

如果是普通用户,那就是去掉这个sudo,会安装到自己的家目录下

export R_VERSION=4.3.1

/opt/R/${R_VERSION}/bin/Rscript common-r-package.r

JupyterHub

管理员配置Jupterhub

目标是在服务器上配置一个JupyterHub,支持多个用户登录使用。建议在Ubuntu 20.04以上哦

以root权限配置全局的JupyterHub作为入口

首先,我们安装python3和python

sudo apt install python3 python3-pip

然后,需要手动安装npm

wget https://nodejs.org/dist/v18.17.0/node-v18.17.0-linux-x64.tar.xz
tar xf node-v18.17.0-linux-x64.tar.xz
sudo mkdir -p /opt/node
sudo mv node-v18.17.0-linux-x64 /opt/node/18.17.0

sudo ln -s /opt/node/18.17.0/bin/* /usr/local/bin

安装configurable-http-proxy

sudo npm install -g  configurable-http-proxy --registry=http://registry.npmmirror.com 
sudo ln -s /opt/node/18.17.0/bin/configurable-http-proxy /usr/local/bin

最后配置jupyterhub

# 安装jupyterhub
sudo python3 -m pip install jupyterhub  -i https://pypi.mirrors.ustc.edu.cn/simple/

 

hub是一个中心,具体需要调用jupterlab和notebook,因此建议安装

# 安装jupter lab 和 notebook
sudo python3 -m pip install notebook  -i https://pypi.mirrors.ustc.edu.cn/simple/
sudo python3 -m pip install jupyterlab  -i https://pypi.mirrors.ustc.edu.cn/simple/

测试下安装状态

jupyterhub -h
configurable-http-proxy -h

Jupyterhub的启动有两种

1、基于命令行参数

sudo jupyterhub --ip 0.0.0.0 --port 8989

2、基于配置文件

第一步,生成配置文件

jupyterhub --generate-config

第二步,修改配置文件,主要就是ip和端口

# 设置访问方式
c.JupyterHub.bind_url = 'http://0.0.0.0:8989'

第三步,启动

sudo jupyterhub -f  jupyterhub_config.py

为了方便使用,我们还需要将jupyterhub变成系统服务

第一步,编辑文件

sudo vim /etc/systemd/system/jupyterhub.service

内容如下

[Unit]
Description=Jupyterhub service
After=syslog.target network.target

[Service]
ExecStart=/usr/local/bin/jupyterhub -f /etc/jupyterhub/config.py

[Install]
WantedBy=multi-user.target

还需要复制之前的配置文件

sudo mkdir -p /etc/jupyterhub
sudo cp  jupyterhub_config.py /etc/jupyterhub/config.py

第三步,启动服务

sudo systemctl daemon-reload

# 启动服务
sudo service jupyterhub start
  
# 看状态
sudo systemctl status jupyterhub.service

参考:https://github.com/jupyterhub/jupyterhub[3]

用户管理自己的Jupyter

我们需要掌握的一个知识点:jupyterhub会去$HOME/.local/share/jupyter/kernels 查找记录的kernels。

因此,在任何 Python[4] 环境,无论是系统级、用户级、venv[5] 还是 Conda[6] 环境,我们都可以通过ipykernel手动添加到 Jupyter[7] 的 Kernels 列表。以conda为例(关于conda,一定要去阅读我的https://github.com/xuzhougeng/server-management-for-bioinformatics/blob/main/conda-for-software-management.md[8])

以conda为例,我们可以为conda默认环境添加

pip install ipykernel -i https://pypi.mirrors.ustc.edu.cn/simple/
python -m ipykernel install --user --name="base" --display-name="base"
# Installed kernelspec base in /home/用户名/.local/share/jupyter/kernels/base

也可以新建一个python3.10的环境

conda create -n python3.10 python=3.10 ipython ipykernel

为其增加kernel

python -m ipykernel install --user --name="python310" --display-name="Python 3.10"
# Installed kernelspec python310 in /home/用户名/.local/share/jupyter/kernels/python310

之后,我们就可以在服务器看到这些内容(我配置了不少内容,包括R,还有一个单细胞课程用到的palantir)

Image

如果你需要安装特定的python酷库,一种是在jupyter的notebook中选择好kernel,然后执行下面的命令

import sys
sys.executable
# 下面必须在jupyter中运行,例如palantir
!{sys.executable} -m pip install  palantir

当然,我更推荐推荐启动对应conda环境, 安装你的库。

conda activate python310
pip install palantir

插件

创建一般指的就是jupyterlab的插件,因为notebook就是一个book而已。

jupyterhub的插件功能通过pip的方式进行安装,例如python补全功能(注意pip得是对应的环境下的pip,在notebook中的pip可能是全局pip)

pip install -U jupyterlab-lsp  -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install -U "python-lsp-server[all]"  -i https://pypi.mirrors.ustc.edu.cn/simple/

部分拓展需要用nodejs (≥18),因此需要额外安装你一个node。

git clone https://gitee.com/mirrors/nvm.git
cd nvm
# 启动nvm
. ./nvm.sh
# 安装node=18
nvm install 18

安装的node要添加到环境变量PATH中

目前的语言模型比较火热,jupyterhub上有一个对应的插件,叫做jupyterhub AI。他的安装也非常的简便。

首先启动,我的一个环境

conda activate python3.10

安装插件

pip install jupyter_ai

然后打开jupyterhub

%load_ext jupyter_ai_magics

案例

%%ai chatgpt
Please generate the Python code to solve the 2D Laplace equation in cartesian coordinates.
Solve the equation on the square domain X=(0,1) and y=(0,1) with vanishing boundary conditions.
Plot the solutionu using Matplotlib.
Please also provide ean explanation.

此时会报错

Image

原因,还没有给token,你需要一个OPENAI官方的token

%env OPENAI_API_KEY = OPENAI官方的token

但是依旧可能出现问题,因为服务器没有穿越能力

Image

这个时候,你可以考虑使用代理线路(进行从另一个地方转发请求,如果担心被盗用,这个连接也提供了自建的方案)

%env OPENAI_API_BASE = https://api.openai-proxy.com/v1

感谢:https://www.openai-proxy.com/[9]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/208485.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】与文件有关的操作

目录 1. 前言2. 什么是文件?2.1 程序文件2.2 数据文件2.3 文件名 3. 二进制文件和文本文件?4. 文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 文件的打开和关闭 5. 文件的顺序读写5.1 顺序读写函数介绍5.2 对比一组函数 6. 文件的…

不会代码(零基础)学语音开发(语音开发板)

语音开发板板载资源介绍 通过上图可以看到VDB-150S语音开发板应该是集目前上市的所有语音开发板中板载资源最为丰富的一款开发板。板载的主要资源有: 双色LED状态指示灯;两个测试时使用的按键开关;红外寻迹/接近传感器;固件烧录器…

Redis分布式锁学习总结

⭐️ 前言 想必大家都有过并发编程的经验,在一个单体应用中,可以通过java提供的各种锁机制来控制多线程对于单体应用中同一资源的并发访问;那么在分布式场景下,想要控制多个应用对于同一外部资源的并发访问,就要用到分…

使用YOLOv8训练自己的数据集

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 拉取项目 git clone https://github.com/ultralytics/ultralytics安装依赖 cd ultralytics pip install -r requirement.txt pip instal…

JAVA全栈开发 集合详解(day14+day15汇总)

一、数组 数组是一个容器,可以存入相同类型的多个数据元素。 数组局限性: ​ 长度固定:(添加–扩容, 删除-缩容) ​ 类型是一致的 对象数组 : int[] arr new int[5]; … Student[] arr …

一种LED驱动专用控制电路方案

一、基本的概述 TM1651 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。本产品性能优良,质量可靠。采用SOP16/DIP16的封装形式。 二、特性说…

微软 Power Platform 零基础 Power Pages 网页搭建教程学习实践(一)

微软 Power Platform 零基础 Power Pages 网页搭建教程学习实践 Power Pages 网页搭建 微软 Power Platform 零基础 Power Pages 网页搭建教程学习实践1、Power Pages 介绍2、开始创建一个站点3、选择一个合适的模板4、编辑我们的模板5、面向专业开发人员的高级开发功能6、预览…

PyQt基础_012_对话框类控件QInputDialog

基本操作 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class InputdialogDemo(QWidget):def __init__(self, parentNone):super(InputdialogDemo, self).__init__(parent)layout QFormLayout()self.btn1 QPushButton(&qu…

[PM3教程]华为手机,小米手环,手表模拟写入加密门禁卡必看教程

IC卡在我们身边已随处可见,被广泛应用于各种领域。 大多数人每天都要和各种各样的卡片打交道,上班有考勤卡,吃饭有饭卡,健身有会员卡,停车有停车卡,连回个家都得先把门禁卡翻出来。各种各样的卡&#xff0c…

借鉴halcon中inspect_3d_surface_intersections.hdev示例

简单看下halcon的实现过程 二、halcon思路 1、读入图片 2、生成点云模型,将点云三角化 3、生成平面 4、求这个模型与平面的交线,生成一个轮廓 用pcl和vtk实现的效果 主要参考以下博主的文章内容来实现的 鞋3D点胶 halcon切平面算法_pose_invert-C…

centOS使用docker部署ElasticSearch和Kibana

一、docker部署ElasticSearch 1、创建网桥 docker network create xybnet 2、下载镜像 docker pull elasticsearch:8.2.0 3、先运行容器 docker run -d \ --name es \ --net xybnet \ -p 9200:9200 \ -p 9300:9300 \ -p 5601:5601 \ -e "discovery.typesing…

TCP/IP_整理起因

先分享一个初级的问题;有个客户现场,终端设备使用客户网络更新很慢,使用手机热点更新速度符合预期;网络部署情况如下: 前期花费了很大的精力进行问题排查对比,怀疑是客户网络问题(其他的客户现…

进程间通信2

3. system V-IPC 3.1 知识点 ipcs -a查看所有的ipc对象 在系统中他们都使用一种叫做 key 的键值来唯一标识,而且他们都是“持续性”资源——即他 们被创建之后,不会因为进程的退出而消失,而会持续地存在,除非调用特殊的函数或者…

春秋云镜ED01-CMS v20180505 存在任意文件上传漏洞

靶场介绍 春秋云镜ED01-CMS v20180505 存在任意文件上传漏洞 漏洞分析: 文件类型未校验可以任意上传执行文件,获取服务器权限 登录注册界面 Hi-Lo-Yohttp://eci-2ze2qm1cbaon2lylin0q.cloudeci1.ichunqiu.com/registration.php 注册了几个发现注册不…

Echarts大屏可视化_03 定制柱状图

柱状图模块引入 1.找到合适的图表 在echarts中寻找与目标样式相近的图表 Examples - Apache ECharts 2. 引入柱状图 使用立即执行函数构建,防止变量全局污染 实例化对象 将官网中提供的option复制到代码中,并且构建图表 // 柱状图模块1 (function () {/…

【算法】算法题-20231128

这里写目录标题 一、55. 跳跃游戏二、274. H 指数三、125. 验证回文串 一、55. 跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以&am…

sqli-labs(9)

45. 不会显示报错信息通过or 1验证 在密码处输入)or(1 登录成功 )union select 1,2,3 # )union select 1,database(),3 # )union select 1,(select group_concat(table_name) from information_schema.tables where table_schemasecurity),3 # )union select 1,(select gro…

使用libssh2建立安全的SSH连接:C++开发者的综合指南

使用libssh2建立安全的SSH连接:C开发者的综合指南 一、介绍二、准备工作三、建立SSH连接3.1、初始化libssh2库3.2、连接到远程主机3.4、完整示例 四、文件传输4.1、上传文件到远程主机4.2、下载文件到本地主机 五、总结 一、介绍 SSH和安全连接的重要性是不可忽视的…

【CAD二次开发】标注箭头,获取修改标注箭头图块

常见的的标注箭头有以下种类 public static List<string> ArrowBlock = new List<string>(){" ","_CLOSEDBLANK&

dubbo框架技术文档-《spring-boot整合dubbo框架搭建+配置文件》框架的本地基础搭建

阿丹&#xff1a; 目前流行的微服务更多的就是dubbo和springcould微服务。之前阿丹没有出过dubbo相关的文章&#xff0c;因为之前接触springcould的微服务概念比较多一点&#xff0c;但是相对于springcould来说&#xff0c;springcould服务之间的调用是大多是使用了nacos&#…