zoukankan      html  css  js  c++  java
  • 云服务器搭建神器JupyterLab(多图)

    云服务器搭建神器JupyterLab(多图)

    JupyterLab是一个交互式的开发环境,其用于应对包含着notebook、代码以及数据的工作场景。

    1、前言

    如果说vim是编辑器之神,那么JupyterLab就是笔记本之神。

    从2017年开始我注意到这一神奇的IDE笔记本,第一眼见到它,就觉得它真的太强大了,作为一个交互式的Python开发工具,其实也不算开发工具,准确的来说,它是一个演示代码的科学数据工具,支持markdown预览,支持Draw扩展,支持丰富的文件格式和多种开发语言,拥有众多插件诸于GitHubGoogle-DirveGitTOC,更重要的是,它是把浏览器当作开发工具,十分有创意。JupyterLab的开发者众多,GitHub上面的isuue也十分活跃,众多的大牛开发者也纷纷加入到JupyterLab的阵营,为JupyterLab的发展作贡献,JupyterLab得到迅速发展。

    好的工具当然是要好好利用了,回归正题,怎样通过云服务器搭建一个可远程使用的JupyterLab?

    目的:为了在没有安装python的机器上工作,直接用浏览器进入,进行代码的调试和显示了

    2、购买云服务器ECS

    这里我就直接买了阿里的学生优惠的ECS,9.9元/月,价格算是良心了,这里可以领一下优惠券:阿里云限时礼包。亚马逊还有每个账户免费使用一年云服务器的机会,也可以用一用。购买之后创建实例,启动云服务器,我这里用的是Ubuntu 16.04镜像,记住你设置的root密码。如果没有特殊要求,可以直接使用root用户进行下面操作,不必新建用户。

    3、登录ECS并安装必要软件

    sudo apt-get install ssh
    ssh root@公网ip
    
    • 1
    • 2

    这个ip是公网ip,在你购买的服务器运营商的实例列表里,如果不出意外就可以登录ECS了。

    3.1 先做好准备工作

    比喻你添加ppa源的时候出现这种情况

    root@iZwz9huxtbd86xp91s3j16Z:~# sudo add-apt-repository ppa:chronitis/jupyter
    sudo: add-apt-repository: command not found
    
    • 1
    • 2

    解决办法

    sudo apt-get install software-properties-common
    
    • 1

    3.2 关于pip的问题

    安装pip

    • 第一步:Install pip and virtualenv for Ubuntu 16.04LTS Maverick and newer
    sudo apt-get install python-pip python-dev build-essential 
    sudo pip install --upgrade pip 
    sudo pip install --upgrade virtualenv 
    
    • 1
    • 2
    • 3
    • 第二步:Install Easy Install
    sudo apt-get install python-setuptools python-dev build-essential 
    
    • 1
    • 第三步:Install pip
    sudo easy_install pip 
    
    • 1
    • 第四步Install virtualenv
    sudo pip install --upgrade virtualenv 
    
    • 1
    • For Python3
    sudo apt-get install python3-pip
    
    • 1
    • For Python2
    sudo apt-get install python-pip
    
    • 1

    升级pip

    sudo pip3 install --upgrade pip
    sudo pip2 install --upgrade pip
    sudo pip install --upgrade pip
    
    • 1
    • 2
    • 3

    更换pip源加速下载

    cat > ~/.pip/pip.conf
    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    
    • 1
    • 2
    • 3

    npmyarn也可以换源,更简单,自行google

    pip国内的一些镜像包,换源之后出现python2版本过低的情况导致以前的包下载不了,那就直接将文件夹~/.pip/pip.conf删除就可以恢复原来的源。

    pip指向问题

    有时候会出现pip,pip2,pip3都TM指向python2,这个之后就需要改一下这这三个文件。

    编辑这三个文件,将第一行注释分别改为pythonpython2python3

    ~ $which pip
    /usr/local/bin/pip
    21:36 alien@alien-Inspiron-3443:
    ~ $which pip2
    /usr/local/bin/pip2
    21:36 alien@alien-Inspiron-3443:
    ~ $which pip3
    /usr/local/bin/pip3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.3 安装yarnnodejs

    配置仓库

    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
    
    • 1
    • 2

    安装yarn

    sudo apt-get update
    sudo apt-get install yarn
    
    • 1
    • 2

    注意这里yarn自动安装了nodejs,不过版本太低,安装jupyterlab的时候会出问题,而且使用n或者nvm安装的nodejs也有问题,总之nodejs要按照下面这种方式就没事,这个是官方的bug,官方issue也提到过,但是目前还未解决。

    安装nodejs

    创建一个新文件,输入两行deb,结束之后Ctrl+C:

    cat > /etc/apt/sources.list.d/nodesource.list
    deb https://deb.nodesource.com/node_6.x xenial main
    deb-src https://deb.nodesource.com/node_6.x xenial main
    
    • 1
    • 2
    • 3

    导入公匙并安装nodejs,这个版本的nodejsjupyterlab支持比较友好。

    curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
    sudo apt-get update
    apt-cache policy nodejs
    sudo apt-get install nodejs
    nodejs --version
    
    • 1
    • 2
    • 3
    • 4
    • 5

    安装ipython,matplotlib,scipy,pandas,numpy

    最好python2python3都安装。

    4、安装JupyterLab及其配置

    记住使用pip2安装,如果你用pip3安装的话可能会出现版本兼容问题。

    sudo pip2 install jupyterlab
    
    • 1

    生成密码

    jupyter-notebook password
    
    • 1

    4.1 创建哈希密码

    ipython
    from notebook.auth import passwd
    passwd()
    # 输入你自己设置登录JupyterLab界面的密码,
    # 然后就会生产下面这样的密码,将它记下来,待会儿用
    'sha1:b92f3fb7d848:a5d40ab2e26aa3b296ae1faa17aa34d3df351704'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.2 修改JupyterLab配置文件

    先生成一个配置文件,记下输出的配置文件地址

    jupyter lab --generate-config
    
    • 1

    修改配置文件,找到下面这几行文件,注释掉并修改成这样。

    c.NotebookApp.allow_root = True
    c.NotebookApp.ip = '0.0.0.0'
    c.NotebookApp.notebook_dir = u'/root/JupyterLab'
    c.NotebookApp.open_browser = False
    c.NotebookApp.password = u'sha1:b92f3fb7d848:a5d40ab2e26aa3b296ae1faa17aa34d3df351704'
    c.NotebookApp.port = 8080
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    对应每行稍微解释一下

    允许以root方式运行jupyterlab
    允许任意ip段访问
    设置jupyterlab页面的根目录
    默认运行时不启动浏览器,因为服务器默认只有终端嘛
    设置之前生产的哈希密码
    设置访问端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    到此,JupyterLab已经安装成功了。

    jupyter-lab --version
    0.33.12
    jupyter lab build
    
    • 1
    • 2
    • 3

    jupyter lab build时间有点久,如果没报错就成功了。但此时你还不能访问JupyterLab,还需要添加端口规则,也就是所谓的添加安全组。

    5、添加安全组


    去ECS控制台添加安全组,不然你无法通过本地浏览器访问JupyterLab,设置8080端口入方向。

    远程访问JupyterLab

    运行下面命令。

    # nohup表示ssh终端断开后仍然运行
    # &表示允许后台运行
    nohup jupyter lab &
    
    • 1
    • 2
    • 3

    浏览器输入公网ip:8080,就可以访问你的JupyterLab了,第一次访问比较慢,耐心一点,如果最终还是无法访问,那么就是你的安全组配置错啦。

    输入密码就可以用了。

    6、JupyterLab扩展安装

    查看已经安装的扩展及其状态:

    jupyter labextension list
    
    • 1

    比喻安装一个扩展jupyterlab_html,支持html预览:

    jupyter labextension install @mflevine/jupyterlab_html
    
    • 1

    卸载扩展:

    jupyter labextension uninstall @mflevine/jupyterlab_html
    
    • 1

    更新所有扩展:

    jupyter labextension update --all
    
    • 1

    下面以安装GitHub扩展为例。

    安装GitHub扩展

    先去GitHub生成一个token,记下token,待会儿配置要用。

    下载安装扩展:

    jupyter labextension install @jupyterlab/github
    
    • 1

    配置token

    # 在之前的生成的config文件中添加
    c.GitHubConfig.access_token = '< YOUR_ACCESS_TOKEN >'
    
    • 1
    • 2

    需要其他扩展的在GitHub可以自行下载。

    7、内核安装与卸载

    安装Python内核

    sudo pip2 install ipykernel
    sudo pip3 install ipykernel
    
    • 1
    • 2

    如果pip指向正常的话就可以看到两个Python内核了。

    查看已经安装的内核

    jupyter kernelspec list
    
    • 1

    删除你不需要的内核

    jupyter kernelspec remove <kernel_name>
    /root/JupyterLab
    
    • 1
    • 2

    8、域名和https配置

    域名和SSL配置可以参考这两篇文章:

    其实为觉得没必要,毕竟是个人用的工具,没必要搞个域名,不过强迫症就另说了。具体效果是这样的:

    9、结语

    JupyterLab的搭建就是这么简单,好的工具就应该好好利用,支持做图,markdown,多标签,内部打开网页,latex,网页预览,这么好的工具我应该早点发现呀。最后,以秀图结束本文,多多指教!

    • 画图:

    • 多语言支持:

    • markdown写作体验:

    • 内部打开网页:

    • 多标签和帮助文档

    • 丰富的扩展插件及其管理配置:
  • 相关阅读:
    JAVA 冒泡排序代码
    随机数生成机制
    C#学习成果 兔子计算
    C#学习成果 质数判断
    3.24学习成果
    制作登录界面,登录成功后把用户名放在session里,在第3个页面读取session显示用户名
    编写一个简易的留言薄,实现添加留言和显示留言内容等功能
    编写一个jsp程序,实现用户登录,当用户输入的用户或密码错误时,将页面重定向到错误提示页,并在该页面显示30秒后 自动回到用户登录界面
    jsp输出当前时间
    jsp输出九九乘法表
  • 原文地址:https://www.cnblogs.com/jscs/p/13724589.html
Copyright © 2011-2022 走看看