云服务器搭建神器JupyterLab(多图)
JupyterLab
是一个交互式的开发环境,其用于应对包含着notebook
、代码以及数据的工作场景。
1、前言
如果说vim
是编辑器之神,那么JupyterLab
就是笔记本之神。
从2017年开始我注意到这一神奇的IDE
笔记本,第一眼见到它,就觉得它真的太强大了,作为一个交互式的Python
开发工具,其实也不算开发工具,准确的来说,它是一个演示代码的科学数据工具,支持markdown
预览,支持Draw扩展,支持丰富的文件格式和多种开发语言,拥有众多插件诸于GitHub
, Google-Dirve
, Git
和TOC
,更重要的是,它是把浏览器当作开发工具,十分有创意。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
源加速下载
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
cat > ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
1
2
3
npm
和yarn
也可以换源,更简单,自行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 安装yarn
和nodejs
配置仓库
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
,这个版本的nodejs
对jupyterlab
支持比较友好。
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
最好python2
和python3
都安装。
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
其他内核安装:https://github.com/jupyter/jupyter/wiki/Jupyter-kernels
8、域名和https
配置
域名和SSL配置可以参考这两篇文章:
阿里云如何配置HTTPS
nginx服务器配置教程(以ubuntu 16.04为例): https://github.com/lensh/vue-qq/issues/13
其实为觉得没必要,毕竟是个人用的工具,没必要搞个域名,不过强迫症就另说了。具体效果是这样的:
我的nginx
配置:nginx.conf
9、结语
JupyterLab
的搭建就是这么简单,好的工具就应该好好利用,支持做图,markdown
,多标签,内部打开网页,latex
,网页预览,这么好的工具我应该早点发现呀。最后,以秀图结束本文,多多指教!
画图:
多语言支持:
markdown
写作体验:
内部打开网页:
多标签和帮助文档
丰富的扩展插件及其管理配置: