两三个月前,有幸拿到了云筏的一个 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的方式安装。

# condaconda install -c conda-forge jupyterlab

# pippip 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:

# 建立 Conda 环境,并安裝 JupyterLabconda create --name jupyterlab python=3.7 jupyterlab

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

# 安装 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 环境:

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

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

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

# 建立 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:

# 载入 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 环境,参考下面的操作生成秘钥。

In [1]: from notebook.auth import passwdIn [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 配置文件。

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

3.3 修改配置文件

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

更改内容如下:

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

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


4. 域名配置

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

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,目前不太清楚如何更改这个默认配置文件的路径。

往期文章回顾

  • 六大云端 Jupyter Notebook 平台测评

  • 数据科学工具 Jupyter Notebook 教程(二)
  • 数据科学工具 Jupyter Notebook 教程(一)
  • 使用 conda 和 Jupyter 在 R 中实现数据科学分析
  • 基于 python3+nginx 的 Jupyter Notebook 服务端 ssl 访问
  • 使用 conda 和 Jupyter 创建你的自定义 R 包,转换笔记为幻灯片

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

JupyterLab Server 搭建与使用笔记相关推荐

  1. raspberry ubuntu 修改源为清华_Ubuntu 下 Janus Server 搭建笔记

    1 Ubuntu 下 Janus Server 搭建笔记 QQ交流群 782508536 FFmpeg/WebRTC/RTMP音视频流媒体高级开发 https://ke.qq.com/course/4 ...

  2. Ubuntu 下 Janus Server 搭建笔记

    1 简介 Janus 是一个开源的,通过 C 语言实现了对 WebRTC 支持的 Gateway:Janus 自身实现得很简单,提供插件机制来支持不同的业务逻辑,配合官方自带插件就可以用来实现高效的 ...

  3. Node.js Git Server搭建及Git常用操作笔记

    Node.js Git Server搭建及Git常用操作笔记 安装Git工具即可在本地进行Git仓库的管理,如果要实现远程仓库则需要搭建Git Server.通过Node.js搭建Git Server ...

  4. 环境搭建--谷粒商城笔记一

    环境搭建–谷粒商城笔记一 由于vagrant与virtualbox搭建linux不成功,所以我选择VMware搭建centos7系统 centos7阿里云镜像下载 VMware安装centos7 修改 ...

  5. Lync server 2013 之office web apps server 搭建步骤

    office web apps server 搭建步骤: 一. .NET Framework 4.5 节点下的HTTP 激活 .NET Framework 3.5 Windows Identity F ...

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

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

  7. Ubuntu 12.04 Server 搭建DNS服务器

    这边简单介绍一下,在Ubuntu 12.04 Server 搭建简单的DNS 服务器 #apt-get -y install bind9 bind9utils 这里我以 hasee.com 域名为例 ...

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

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

  9. Vue学习(常用实例、脚手架搭建)-学习笔记

    文章目录 Vue学习(常用实例.脚手架搭建)-学习笔记 实例1 法1 法2 实例2 脚手架搭建 vue-cli2.0 vue-cli4.0 Vue学习(常用实例.脚手架搭建)-学习笔记 附加:阿里巴巴 ...

最新文章

  1. 为什么,AX中存储的数据与我们日常理解相违背。
  2. 让FX1.1的NotifyIcon支持BalloonTip(1)
  3. SharePoint中修改密码的WEB Part之终极版:即可以修改AD,又可以修改本机用户密码的Web Part!!...
  4. 【Android 逆向】加壳技术识别 ( 函数抽取 与 Native 化加壳的区分 | VMP 加壳与 Dex2C 加壳的区分 )
  5. leetcode202(Floyd判圈算法(龟兔赛跑算法))
  6. 概述---《TCP/IP协议》卷一 练习题
  7. windows2016服务器优化,Windows Server 2012 服务器优化图文方法
  8. net start mysql 服务名无效_记一次服务器被植入挖矿木马cpu飙升200%解决过程
  9. Java高级语法笔记-语法支持的异常
  10. UISC-User Interface States Control ;Murphy 用户界面状态控制(Beta)
  11. native关键字(涉及本地方法栈)
  12. C语言Register关键字:利用寄存器提升访问效率
  13. Servlet与JSP项目实战 — 博客系统(上)
  14. atitit 研发管理 要不要自己做引擎自己实现架构?.docx
  15. Particle Designer:粒子效果制作器,生成plist文件并在工程中正常使用
  16. 狂团KtAdmin框架正式免费开源发布,助力独立版SAAS系统快速开发
  17. 路由及路由器工作原理深入解析3:路由与端口
  18. 第十一届蓝桥杯大赛决赛赛题 C++ 大学C组
  19. c语言实现 自动访问网址,使用C语言实现网站开发
  20. 农产品销售系统的设计与实现

热门文章

  1. 不敢相信,居然用Java写了个“天天酷跑”!
  2. 解密 Redis 助力双 11 背后电商秒杀系统
  3. 超级实用的 MySQL 常用优化指南!
  4. 写代码做副业月入33K+的方法都藏在这几个淘宝大佬的公众号里!
  5. 面试鹅厂,我三面被虐的体无完肤。。。
  6. 互联网公司「敏捷开发」,打造高效执行能力
  7. 推荐一个你最喜欢的辅助办公软件,你会推荐什么?
  8. 怎么在leangoo里绑定账号,更改邮箱?
  9. springboot-mysql-email集成
  10. top命令的笔记补充2--如何将top信息后台运行并写入log