最近更新于 2024-05-05 14:19
前言
将 Jupyter 搭建到公网服务器上,可以方便随时编辑阅读测试代码。或者局域网的服务器上搭建,可以供多人同时使用一个环境。以及对于工作站之类的可能没有桌面环境,无法本机使用浏览器打开 Jupyter 进行操作,则只需要搭建后外部访问即可。
Jupyter 测试服务器端环境
Ubuntu 18.04 arm64 (Jetson Nano) – 局域网测试
Android 11 平板电脑通过 Termux 0.117 搭载 Ubuntu 20.04 arm64 – 局域网测试
操作
# 北京外国语大学镜像站 pip3 install -i https://mirrors.bfsu.edu.cn/pypi/web/simple pip -U pip3 config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple
安装 Jupyter
pip3 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.ExtensionApp.open_browser = False" >> $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 回车确认退出就行
搭建 Jupyter 服务器