管理员配置Jupterhub

news2025/1/10 11:14:24
  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]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OSI七层模型与TCP/IP四层模型

一、OSI七层模型简述 OSI 模型的七层是什么?在 OSI 模型中如何进行通信?OSI 模型有哪些替代方案? TCP/IP 模型关于专有协议和模型的说明 二、七层模型详解(DNS、CDN、OSI) 状态码DNS nslookup命令 CDN whois命令 …

java商城系统选型技巧

近期有很多网友在知乎、百度上咨询如何选择java商城系统,本文我们介绍目前有哪些java商城系统,如何选择商城系统,希望有所帮助。 我们之前做过调研,目前java语言开发的商城系统主要有shop、javashop、ejavashop、远丰、mall4j、li…

【【FPGA 之 MicroBlaze定时器中断实验】】

FPGA 之 MicroBlaze定时器中断实验 AXI Timer 具有 AXI 总线接口,能够产生不同时间周期和占空比的时钟、脉冲产生电路、产生与时间有关的中断和用于电机控制的脉宽调制信号。 AXI Timer IP 核提供了一个 AXI4 Lite 接口用于与处理器通信;它内部有两个可…

美国站卖家请在今年12/28前更新W-8税务信息

美国税务信息采集指南 根据美国国家税务局的规定,非美国纳税人需要向亚马逊提供W-8BEN表格,以豁免美国报税要求。美国国家税务局W-8BEN表格将在卖家向亚马逊提供此表格三年后过期。收到提示时,海外卖家需要重新接受税务信息采集以提交新表格。…

探索APP自动化测试工具的重要作用是什么?

随着移动应用市场的蓬勃发展,保障应用程序的质量和性能成为开发团队至关重要的任务。在这个背景下,APP自动化测试工具崭露头角,成为提高开发效率、减少错误率的关键工具。本文将探讨APP自动化测试工具的用途,以及它们在移动应用开…

Qt开发 之 安装程序错误--安装进程(qt.tool.perl)的解决办法

文章目录 1、问题描述2、问题原因3、解决方案3.1、不关闭错误弹出窗口3.2、手动安装Perl3.3、安装Perl完成后,点击“ignore”继续安装 1、问题描述 Win11下,安装qt5.12.12时遇到“安装进程(qt.tools.perl)运行期间出现错误” 问题描述: Err…

C++-详解智能指针

目录 ​编辑 一.什么是智能指针 1.RAII 2.智能智能指针 二.为什么需要智能指针 1.内存泄漏 a. 什么是内存泄漏,内存泄漏的危害 b.内存泄漏分类 c.如何检测内存泄漏 d.如何避免内存泄漏 总结一下: 2.为什么需要智能指针以及智能指针的原理 三.智能指针的使用 1.C…

程序员养生之道:延寿不忘初心——延寿必备

文章目录 每日一句正能量前言如何养生饮食篇运动篇休息篇后记 每日一句正能量 现代社会已不是大鱼吃小鱼的年代,而是快鱼吃慢鱼的年代。 前言 在IT行业中,程序员是一个重要的职业群体。由于长时间的繁重编程工作,程序员们常常忽略了身体健康…

(Python) 字典dict的使用

a dict(namekl_pen, kl_target0.01, lam0.5) print(类型:, type(a)) print(数值:, a) print(name键的值:, a[name]) print(键:, a.keys()) print(值:, a.values())

知虾平台丨优化Shopee店铺运营,提升销售利润——了解知虾平台

在如今竞争激烈的电商市场中,Shopee作为一家快速发展的平台,吸引了众多卖家加入。然而,要在Shopee上取得成功并实现可观的销售利润,并不是一件容易的事情。为了帮助卖家更好地了解市场趋势、优化商品关键词、监控竞争对手等&#…

Java中的异常你了解多少?

目录 一.认识异常二.异常分类三.异常的分类1.编译时异常2.运行时异常 四.异常的处理1.LYBL:事前防御型2.EAFP:事后认错型 五.异常的抛出Throw注意事项 六.异常的捕获1.异常的捕获2.异常声明throws3.try-catch捕获并处理 七.自定义异常 一.认识异常 在Jav…

MySQL实现(免密登录)

简介: MySQL免密登录是一种允许用户在没有输入密码的情况下直接登录到MySQL服务器的配置。这通常是通过在登录时跳过密码验证来实现的。 1、修改MySQL的配置文件 使用vi /etc/my.cnf,添加到【mysqld】后面 skip-grant-tables #配置项告诉mysql跳过权限验证&#…

避免客户开发信被限制的方法与策略

开发信是外贸或者出海企业常用的一种开发客户的方式。相较于其他的获客方式,开发信能够更加精准地投放到客户中,并且只需承担较低的成本。但是,由于一些限制管制要求,外贸人员可能会遇到开发新被限制的情况。今天,小编…

元宇宙时代CSGO游戏装备市场如何迎合年轻人的需求?

元宇宙时代游戏装备市场如何迎合年轻人的需求?游戏装备市场的主要消费者是年轻人,他们对于游戏装备有着自己的需求和偏好。 为了迎合年轻人的需求,游戏装备需要具备以下几个特点: 1、个性化。年轻人喜欢表达自己的个性和风格&am…

Ubuntu18.04 Udacity project_9_PID_control 如何运行

工程源码和仿真器下载: 源码 仿真器 --- Ubuntu就下载 term2_sim_linux.zip 这个压缩文件即可 紧接着给方框中的文件赋可执行权限 打开project_9_PID_control文件夹 执行如下脚本,安装必要的库,比如websocket(程序生成的可执行…

Python秘籍:圆周率不只是3.14,更多玩法让你大开眼界!

更多资料获取 📚 个人网站:ipengtao.com 在数学领域,圆周率(π)是一个充满神秘和无限循环的数字,其奇妙性质一直以来都令人着迷。而在Python这个多才多艺的编程语言中,我们有机会以更深入的方式…

解决 from . import _imaging as core ImportError: DLL load failed: 找不到指定的模块。

升级pillow版本就完事了 卸载掉之前的旧版本 conda uninstall pillow升级到新的版本就解决了 pip uninstall pillow 那个错误就解决了

SeaTunnel扩展Source插件,自定义connector-webservice

代码结构 在seatunnel-connectors-v2中新建connector-webservice模块,可以直接赋值connector-http-base模块,webservice和http的方式比较类似,有些类直接复制了http中的代码。 核心类有WebserviceConfig,WebserviceParameter&am…

Maven的配置亲测有效

文章目录 前言一、maven网址二、操作步骤三.配置环境变量四.配置本地仓库五.找到mirror 和配置JDK六.胜利七.提醒⏰;总结 前言 (我讲一下什么是maven,不想看跳到下一步就行了,也没必要看) Maven(Apache Maven&#x…

2023认证杯小美赛数学建模国际赛ABCD题思路及python代码分享

大家好呀,认证杯小美赛数学建模开始了,来说一下初步的选题建议吧: 首先定下主基调, 本次小美赛难度:D<A≈C<B。推荐选择D题。预计12.2中午更新D完整论文。预定论文请往后滑看完本文档链接。 A…