1,283 次阅读

搭建 Jupyter 服务器

前言

将 Jupyter 搭建到公网服务器上,可以方便随时编辑阅读测试代码。或者局域网的服务器上搭建,可以供多人同时使用一个环境。以及对于工作站之类的可能没有桌面环境,无法本机使用浏览器打开 Jupyter 进行操作,则只需要搭建后外部访问即可。

Jupyter 测试服务器端环境

Ubuntu 18.04 arm64 (Jetson Nano) – 局域网测试

Android 11 平板电脑通过 Termux 0.117 搭载 Ubuntu 20.04 arm64 – 局域网测试

操作

官方不建议在 root 用户下搭建,在 root 下运行要加上特定参数才行。

--allow-root

确保已经安装 Python 及 pip

sudo apt update && sudo apt install python3 python3-pip

换源:https://blog.iyatt.com/?p=251

# 北京外国语大学镜像站

python3 -m pip install -i https://mirrors.bfsu.edu.cn/pypi/web/simple pip -U  # 更新 pip
python3 -m pip config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple  # 换源

安装 Jupyter

python3 -m pip install jupyter

如果是在本机使用 Jupyter,直接命令行执行 jupyter notebook,就会打开浏览器显示界面。

但是如果要外部访问则需要进一步配置。

生成配置文件,路径位于 $HOME/.jupyter/jupyter_notebook_config.py

jupyter notebook --generate-config

修改配置文件

这些其实在配置文件中预置了的,只是全部被注释了,也可以编辑去掉注释,但是相对麻烦,这里就直接往里面追加。

# 获取配置对象
echo "c = get_config()" >> $HOME/.jupyter/jupyter_notebook_config.py

# 设置监听 IP (本机)
echo "c.NotebookApp.ip = '*'" >> $HOME/.jupyter/jupyter_notebook_config.py

# 设置监听端口,我这里设置的 9999
#
# 注意 1024 以下的端口为系统保留,如果设置的端口在这个范围内就必须使用 root 运行 Jupyer,
# 或者设置 1024 及以上的端口,然后以 root 身份使用 iptables 进行端口转发
# 使用 80 (http)和 443(https)默认的 web 端口,则在浏览器访问的时候,无需在地址后注明端口号
# 比如我这里在 Jupyter 监听的是 9999 端口,那么我可以把 80 端口的访问转发到 9999
# sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9999
# 另外提醒,重启系统后转发会失效
# 端口转发效果见后面测试访问的截图
#
# 如果是搭建在云服务器上,一般需要前往服务商控制面板开放对外访问的端口,否则会被拦截无法正常使用
echo "c.NotebookApp.port = 9999" >> $HOME/.jupyter/jupyter_notebook_config.py

# 禁止自动打开浏览器
echo "c.NotebookApp.open_brower = False" >> $HOME/.jupyter/jupyter_notebook_config.py

# 允许在外部设备远程连接
echo "c.NotebookApp.allow_remote_access = True" >> $HOME/.jupyter/jupyter_notebook_config.py


## 如果是搭建在云服务器上,并且通过域名访问需要 https 支持的可以在配置文件里添加相应文件路径
# c.NotebookApp.certfile = 'SSL/TLS 认证文件所在的完整路径'
# c.NotebookApp.client_ca = 'SSL/TLS 客户端身份验证的证书所在的完整路径'
# c.NotebookApp.keyfile = 'SSL/TLS 私钥文件所在的完整路径'

然后设置访问密码,当然这个不是必须的,但是如果不设置访问密码,就要通过 token 验证,每次运行 Jupyter 服务器端都随机生成,没法记住。

jupyter notebook password

特别提醒 Linux 下输入密码不会显示星号,只管输入就行

然后运行 Jupyter,可以直接执行 jupyter notebook,但是默认是服务器前台执行,如果一旦关闭终端,那么 Jupyer 服务器就会停止,也就导致无法再访问了。那么需要后台执行,那么

nohup jupyter notebook &

如果后台运行中想要停止 Jupyter,有两种方式,一种是重启系统另外一种是干掉进程

ps aux | grep jupyter | awk '{print $2}'| xargs -i kill -9 {}

前台运行的按 Ctrl+C 然后输入 y 回车确认退出就行

发表评论