部署JupyterLab到云服务器
起因:
最近在捣鼓一些挺有意思的东西,今天了解到Jupyter这个功能强大的交互式笔记本后觉得自己现在正需要这样一个东西,恰好博主的云服务器现在还有约一半的空闲性能,于是开始着手将其部署到自己的服务器上,这篇博客主要记录这个过程和其中踩过的坑,整理出来方便日后需要
版本选择:
Jupyter还有一个改进版:JupyterLab,博主选择了后者,原因嘛,第一眼看着高大上(笑)
1 | #这段好处摘自知乎,虽然大部分目前和博主没什么关系(笑) |
除此之外最吸引博主的是其notebook的编辑和运行模式,比较适合捣鼓最近学习的东西,不过这东西本质上是个Web应用,不像普通软件那样可以一键安装
服务器环境:Ubuntu20.04,Python 3.8.10,Node.js 16.14.2 (JupyterLab需要更新到12以上)
安装过程:
首先用root账户pip安装jupyterlab,随后生成配置文件
1 | pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple#下载慢就改镜像源(root用户) |
生成想要设定的密码对应的密文
1 | from notebook.auth import passwd |
用vim打开刚才的配置文件(./jupyter目录下),添加
1 | c.ServerApp.ip = '*' #允许所有ip访问 |
开放服务器防火墙对应的端口,接着可以启动了,在本地浏览器访问服务器公网ip:xxxx即可
1 | jupyter lab -p xxxx --no-browser #xxxx是端口号 |
输入密码进入,好了,满眼的英文,看不懂几个,装中文包重启jupyterlab
1 | pip install jupyterlab-language-pack-zh-CN |
踩坑:
上网找了些插件推荐:jupyterlab_go_to_definition (跳转到定义),jupyterlab_lsp (代码跳转+补全),latex (数学公式语言),matplotlib (数据图形化),theme-darcula(界面主题),github,drawio(绘图),variableinspector(变量追踪),全装上了。提示需要重新编译整个jupyterlab来应用修改,这和vscode不同(装完顶多重新加载一遍),编译了一会,编译失败
听说有的源码编译容易出问题,清空再来几遍,还是失败,后来查到是有的插件不兼容新版本,没办法,枚举排除,好在插件不多,最终锁定variableinspector,同时了解到这个插件的功能已经整合到新版jupyterlab里了,卸载重新编译,成功
体验了一会,这玩意是为python量身打造的,操作起来特别舒服,也很快发现了问题:matplotlib的弹窗只是一张图片,压根没法交互,没办法继续搜索:得装一个叫ipympl的matplotlib专为Jupyter开发的交互式后端,然后又要重启jupyterlab
1 | pip install ipympl #root用户下 |
使用matplotlib前需要运行一句”%matplotlib widget”表示将其后端切换为”Matplotlib Jupyter Widget Backend”,交互就正常了。
后台运行:
为了让服务器断开ssh连接后保持运行,博主这里选择了screen工具,用到的命令有:
1 | screen -S xx #新建一个名为xx的窗口 |
之后就能随时随地在浏览器正常使用了,JupyterLab用起来确实方便