两三个月前,有幸拿到了云筏的一个 4 核 16G,1TB硬盘,300M带宽位于欧洲的云服务器,自带的开箱即用的 RStudio Server 也非常给力,但最近这两天在升级 R 的时候遇上了不少问题,也懒得去折腾了,于是想把 RStudio Server 替换成自己比较熟悉的 JupyterLab Server,这是一些折腾的笔记记录。

JupyterLab is a next-generation web-based user interface for Project Jupyter. JupyterLab enables you to work with documents and activities such as Jupyter notebooks, text editors, terminals, and custom components in a flexible, integrated, and extensible manner.


1. 安装

JupyterLab 可以通过condapippipenvordocker的方式安装。

  1. # conda
    conda install -c conda-forge jupyterlab

    # pip
    pip install jupyterlab

nb_conda_kernels 是一个 Jupyter 的扩展功能(extension),可以管理多个 Conda 环境下的 Jupyter 核心(kernels),整合多 Conda 环境中各种不同版本的 Python 或 R 等语言。

1.1 安裝 nb_conda_kernels

nb_conda_kernels 必须安装在在 Jupyter(Jupyter Notebook 或 JupyterLab)所在的 Conda 环境中,可以直接放在 base 环境中,或是另外建立独立的 Conda 环境亦可。

这里我们建立一哥新的 Conda 环境,专门用于放置 JupyterLab:

  1. # 建立 Conda 环境,并安裝 JupyterLab
    conda create --name jupyterlab python=3.7 jupyterlab

在此 Conda 环境加装 nb_conda_kernels 扩展功能套件:

  1. # 安装 nb_conda_kernels 扩展功能套件
    conda install --name jupyterlab nb_conda_kernels

1.2 安装 Jupyter Kernels

所有需要在 Jupyter 中透过nb_conda_kernels来使用 Conda 环境,都需要安装对应语言的的 Jupyter 核心(kernels)。

建立一个 Python 2.7 的 Conda 环境:

  1. # 建立 Python 2.7 的 Conda 环境
    conda create --name Python2 python=2.7.18

    # 安装 Python 的 Jupyter 核心
    conda install --name Python ipykernel

建立一个 R-4.0.2 的 Conda 环境:

  1. # 建立 R 4.0.2 的 Conda 环境
    conda create --name R-4.0.2 --channel r r-essentials=4.0.2 r-base=4.0.2

    # 安装 R 的 Jupyter 核心
    conda install --name R-4.0.2 --channel r r-irkernel

2. 启动

安装好所有的 Conda 环境以及对应的 Jupyter 核心之后,就可以依照一般的方式启动 JupyterLab:

  1. # 载入 Jupyter 的 Conda 环境(下面两种方式都可以激活)
    $ conda activate jupyterlab 
    $ source activate jupyterlab

    # 启动 JupyterLab
    $ jupyter lab --ip 0.0.0.0 --port 9090

JupyterLab 各种 Conda 环境与语言版本

这样就可以在单一一个 JupyterLab 界面中同时使用不同 Conda 环境下的各种语言与版本了。


3. 配置远程访问

3.1 进入 ipython 环境,生成秘钥

假设你已经进入了 ipython 环境,参考下面的操作生成秘钥。

  1. In [1]: from notebook.auth import passwd
    In [2]: passwd()
    Enter password:        #填写你的密码(用于访问jupyterlab的密码)
    Verify password:    #再次填写你的密码
    Out[2]: 'argon2:$argon2id$v=19$m=10240,t=10,p=8$ShdM5...vHBHA$EUCjIE1L8joDbugmWIDqLw'
    #这是你的密码生成的密钥

3.2 生成 jupyterlab 配置文件

使用--generate-config参数,生成 jupyterlab 配置文件。

  1. $ jupyter lab --generate-config
    Writing default config to: /home/shenweiyan/.jupyter/jupyter_notebook_config.py

3.3 修改配置文件

JupyterLab 默认配置文件位于~/.jupyter/jupyter_notebook_config.py

更改内容如下:

  1. # 将ip设置为*,允许任何IP访问
    c.NotebookApp.ip = '*'
    # 这里的密码填写上面生成的密钥
    c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$ShdM5...vHBHA$EUCjIE1L8joDbugmWIDqLw'
    # 禁止用host的浏览器打开jupyter
    c.NotebookApp.open_browser = False 
    # 监听端口设置为8888或其他
    c.NotebookApp.port = 8888
    # 允许远程访问 
    c.NotebookApp.allow_remote_access = True

接下来输入jupyter lab 就可以启动 jupyter-lab 服务啦!


4. 域名配置

下面是 JupyterLab 通过 nginx 转发的一个示例。

  1. upstream jupyter {
        server 127.0.0.1:9090;
    }

    server {
        listen 80;
        server_name jupyter.bioitee.com;
        rewrite ^/(.*) https://jupyter.bioitee.com/$1 permanent;
    }

    server{
        listen 443 ssl;
        index index.html index.htm index.php default.html default.htm default.php;
        server_name jupyter.bioitee.com;
        root /data/apps/jupyterlab/notebooks;
        ssl_certificate      ../certs/4564529_jupyter.bioitee.com.pem;
        ssl_certificate_key  ../certs/4564529_jupyter.bioitee.com.key;
        ssl_ciphers "EECDH CHACHA20:EECDH CHACHA20-draft:EECDH AES128:RSA AES128:EECDH AES256:RSA AES256:EECDH 3DES:RSA 3DES:!MD5";
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        location / {
            proxy_pass            http://jupyter;
            proxy_set_header      Host $host;
        }
        location ~ /api/kernels/ {
            proxy_pass            http://jupyter;
            proxy_set_header      Host $host;
            # websocket support
            proxy_http_version    1.1;
            proxy_set_header      Upgrade "websocket";
            proxy_set_header      Connection "Upgrade";
            proxy_read_timeout    86400;
        }
        location ~ /terminals/ {
            proxy_pass            http://jupyter;
            proxy_set_header      Host $host;
            # websocket support
            proxy_http_version    1.1;
            proxy_set_header      Upgrade "websocket";
            proxy_set_header      Connection "Upgrade";
            proxy_read_timeout    86400;
        }

        access_log  logs/jupyterlab_acc.log;
        error_log   logs/jupyterlab_err.log;
    }

5. 遇到的问题

  1. jupyter lab 启动的过程中,如果使用--config=~/.jupyter/jupyter_notebook_config.py作为启动参数之一,会导致其他的 Conda 环境在 web 端消失,只剩下一个 Python 3 的 Notebook 和 Console,具体原因目前没搞明白。

  2. jupyter lab --generate-config默认生成的配置文件位于~/.jupyter/jupyter_notebook_config.py,目前不太清楚如何更改这个默认配置文件的路径。

往期文章回顾

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

JupyterLab Server 搭建与使用笔记的更多相关文章

  1. 【Gerrit】gerrit server搭建

    Part 1  Gerrit Prerequisites: 1.Java JDK>1.7 2.Git 3.SSH server 4.DB part 2 Set local gerrit serv ...

  2. 小D课堂 - 新版本微服务springcloud+Docker教程_3-05 服务注册和发现Eureka Server搭建实战

    笔记 5.服务注册和发现Eureka Server搭建实战     简介:使用IDEA搭建Eureka服务中心Server端并启动,项目基本骨架介绍          官方文档:http://clou ...

  3. (转)TortoiseSVN与VisualSVN Server搭建SVN版本控制系统

    本片主要介绍如何搭建SVN版本控制系统,主要使用工具: 1 客户端:TortoiseSVN (小乌龟) 2 服务端:VisualSVN Server 搭建出图形化管理,以及右键菜单版本控制管理的SVN ...

  4. TortoiseSVN与VisualSVN Server搭建SVN版本控制系统

    本片主要介绍如何搭建SVN版本控制系统,主要使用工具: 1 客户端:TortoiseSVN (小乌龟) 2 服务端:VisualSVN Server 搭建出图形化管理,以及右键菜单版本控制管理的SVN ...

  5. Unity3D游戏制作(四)——Asset Server搭建

    本系列文章由 Amazonzx 编写,欢迎转载,转载请注明出处. http://blog.csdn.net/amazonzx/article/details/7980117 Asset Server是 ...

  6. Ubuntu server 搭建Git server

    Ubuntu server 搭建Git server,git相比svn,最主要就是分布式了,每个客户端用户的本地都是一个版本管理控制器. Ubuntu server 版本为12.04 搭建步骤如下: ...

  7. 持续集成(二)环境搭建篇—内网邮件server搭建

    在我们的持续构建中,项目构建中出现错误提醒.或者开发者之间的沟通交流,进度汇报的事务,都是离不开一个通信工具.那就是邮件.在我们的项目开发中假设使用第三方的邮件平台,这肯定不是最好的选择.由于第三方的 ...

  8. Windows 2008 利用Filezilla server搭建FTP

    Windows 2008 利用Filezilla server搭建FTP, 安装后总是提示Error Connection To Server Lost , 后来,无意中先安装了IIS,再安装file ...

  9. windows 下使用 Filezilla server 搭建 ftp 服务器

    windows 下使用 Filezilla server 搭建 ftp 服务器 1. Filezilla server 免费,开源, ftp 服务端 2. 下载安装, windows  https:/ ...

  10. Ubuntu Server搭建svn服务以及迁移方法【转】

    转自:http://www.linuxidc.com/Linux/2013-05/84693.htm Ubuntu Server搭建svn服务以及迁移方法 采用apache+svn,http访问方式. ...

随机推荐

  1. springboot格式化timestamp时间

    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

  2. ThreadLocal 类

    更多内容,访问 IT-BLOG ThreadLocal 并不是一个Thread,而是 ThreadLocalVariable(线程局部变量).也许把它命名为 ThreadLocalVar更加合适.线程 ...

  3. 在一张 24 GB 的消费级显卡上用 RLHF 微调 20B LLMs

    我们很高兴正式发布 trl 与 peft 的集成,使任何人都可以更轻松地使用强化学习进行大型语言模型 (LLM) 微调!在这篇文章中,我们解释了为什么这是现有微调方法的有竞争力的替代方案. 请注意, ...

  4. 第三届材料化学与复合材料国际学术会议(MCCM 2022)

    大会官网:http://www.meeting-mccm.org/ 大会时间:2022年12月16-18日 大会地点:中国-珠海 截稿日期:详情见官网(2022年10月14日) 接受/拒稿通知:投稿后 ...

  5. react状态管理器(分模块)之redux和redux + react-redux + reducer和redux + react-redux + reducer分模块 + 异步操作redux-thunk

    1.回顾 cnpm i redux react-redux redux-thunk -S store/index.js src/index.js src/views/home/index.jsx + ...

  6. 投资组合计算分析——R语言

    "投资组合"是指金融资产(如股票.债券和现金)的任何组合.投资组合有很多类型,包括市场投资组合和零投资投资组合.可以使用以下任何一种投资方法和原则来管理投资组合的资产分配:股息加权 ...

  7. 京东获得店铺的所有商品API接口(item_search_shop-获得店铺的所有商品)

    京东获得店铺的所有商品API接口(item_search_shop-获得店铺的所有商品)接口展示说明及教程: 公共参数 名称 类型 必须 描述key String 是 调用key(必须以GET方式拼接 ...

  8. [Linux]VMware启动CENOTS7时报"welcome to emergency mode!"【转载】

    1 问题描述 由于通过VMwaer快速克隆了一台CENTOS7.9的虚拟机. 但启动时报如下错误信息 welcome to emergency mode!after logging in ,type ...

  9. 介绍ServiceSelf项目

    ServiceSelf 做过服务进程功能的同学应该接触过Topshelf这个项目,它在.netframework年代神一搬的存在,我也特别喜欢它.遗憾的是在.netcore时代,这个项目对.netco ...

  10. ansible-kubeadm在线安装k8s v1.19-v1.20版本

    ansible-kubeadm在线安装k8s v1.19-v1.20版本 1. ansible-kubeadm在线安装k8s v1.19-v1.20版本 安装要求 确保所有节点系统时间一致 操作系统要 ...