配置jupyter在远端服务器运行


以前配过很多次,但是从来没有记录,这次终于有了自己稳定的云服务器,so记下来,哈哈哈。

1. 运行一个jupyter notebook服务

Jupyter notebook网页程序其实是基于服务器-客户端(SC)架构。notebook服务使用一个基于ZeroMQ的两阶段的核架构,就好像Tornado 用于处理HTTP请求一样。

默认情况下,notebook服务器只运行再本地的 127.0.0.1:8888且只能从本地访问,即 可以在本地通过浏览器使用http://127.0.0.1:8888.来访问notebook

这个文档主要介绍了如何安全的在一个公共界面(服务器上)运行一个notebook服务

注意:
这个并不能用于多用户服务,只是针对单个用户提供一个可以在本地通过浏览器访问服务器上的notebook的方式。
如果想要进行多用户服务,官方的解决方案是jupyterHub,要使用JupyterHub的话,需要一个Unix(/Linux)服务器

1.1 安全运行一个jupyter服务

这个主要是 针对 本地运行的,不是服务器配置的

1.1.1 安装jupyter

首先,需要先安装好jupyter notebook

https://jupyter.org/install
在这里插入图片描述
在这里插入图片描述
我把两个都按上,不确定这两个配置起来一样,稳一点,先配jupyter notebook,再同样流程给jupyterLab走一遍。

在这里插入图片描述
so如果你的anaconda版本很高的话,就直接使用conda吧,不用什么source


1.1.2前提 一个配置文件

可以通过设置一个密码来保护自己的notebook服务。通过在 jupyter_notebook_config.py.文件中手动配置NotebookApp.password就可以设置自己的密码了

默认jupyter_notebook_config.py.文件在以下位置,

  • Windows:C:\Users\USERNAME\.jupyter\jupyter_notebook_config.py
  • OS X: /Users/USERNAME/.jupyter/jupyter_notebook_config.py
  • Linux: /home/USERNAME/.jupyter/jupyter_notebook_config.py
    如果没有,可以使用下面的命令产一个,然后就能在上面的文件夹中找到了
$ jupyter notebook --generate-config

1.1.3 自动设置密码

在notebook5.3版本之后,但你第一次使用token登录时,notebook服务会给你从用户界面设置密码的机会,你会看到有个表格 要求输入当前token,以及新密码,输入后点击登录就设置好了新密码。

下一次就可以使用新设置的密码登录而是一开始的那个登录token,不然就要跟随下面的程序指示来通过命令行设置密码。

可以通过设置 --NotebookApp.allow_password_change=False来关闭首次登录时修改密码的这一功能

从notebook5.0开始,就可以使用命令来设置并存储notebook的密码了,notebook将提示您输入密码,并将哈希密码记录在jupyter_notebook_config.json中。

$ jupyter notebook password
Enter password:  ****
Verify password: ****
[NotebookPasswordApp] Wrote hashed password to /Users/you/.jupyter/jupyter_notebook_config.json

1.2 在远程服务器上配置jupyter

其实有些步骤和本地配置是一样的,毕竟配置文件都是一样的,就是要多改几个选项而已。。。

所以当产密码的时候,还是可以直接使用上面的 直接使用代码来更新密码。

  1. 去 Linux: /home/USERNAME/.jupyter/jupyter_notebook_config.py看有没有配置文件,没有就运行jupyter notebook --generate-config产一个
(base) root@hsh:~# jupyter notebook --generate-config
Writing default config to: /root/.jupyter/jupyter_notebook_config.py
  1. 生产密码
(base) root@hsh:~/.jupyter$ jupyter notebook password
Enter password: 
Verify password: 
[NotebookPasswordApp] Wrote hashed password to /root/.jupyter/jupyter_notebook_config.json
# 可以看到,这个写的配置文件路径 后缀不一样。。。但是没关系,直接打开这个json文件可以得到自己设置密码的hash值,稍微方便点。。。
  1. 打开jupyter_notebook_config.py进行以下设置:
# Set ip to '*' to bind on all interfaces (ips) for the public server
c.NotebookApp.ip = '*'
c.NotebookApp.password = u'sha1:bcd259ccf...<your hashed password here>'
c.NotebookApp.open_browser = False
# It is a good idea to set a known, fixed port for server access
c.NotebookApp.port = 9999

c.NotebookApp.allow_password_change = True #允许首次使用hash登录后修改密码
c.NotebookApp.allow_remote_access = True #允许远程访问
c.NotebookApp.ip = '*'   # 就是设置所有ip皆可访问  
c.NotebookApp.open_browser = False  # 禁止自动打开浏览器  
c.NotebookApp.password = u'sha1:XXXXX'
c.NotebookApp.port = 8888
  1. 有点小问题,就是我是root用户下配置的,所以启动jupyter的时候需要:
(base) root@hsh:~/.jupyter$ jupyter notebook
[W 08:28:53.435 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 08:28:53.563 NotebookApp] JupyterLab extension loaded from /root/anaconda3/lib/python3.8/site-packages/jupyterlab
[I 08:28:53.563 NotebookApp] JupyterLab application directory is /root/anaconda3/share/jupyter/lab
[C 08:28:53.567 NotebookApp] Running as root is not recommended. Use --allow-root to bypass.


需要:
(base) root@hsh:~$ jupyter notebook --allow-root
[I 08:37:32.899 NotebookApp] JupyterLab extension loaded from /root/anaconda3/lib/python3.8/site-packages/jupyterlab
[I 08:37:32.899 NotebookApp] JupyterLab application directory is /root/anaconda3/share/jupyter/lab
[I 08:37:32.903 NotebookApp] Serving notebooks from local directory: /root
[I 08:37:32.903 NotebookApp] The Jupyter Notebook is running at:
[I 08:37:32.903 NotebookApp] http://ip:8080/ 然后就好了

1.3 关闭jupyter端口进程

linux如何查看端口被哪个进程占用

  1. lsof -i:端口号
>lsof -i
>lsof -i:8080
>kill -9 XXX

在这里插入图片描述

如果以后想正常退出,释放8080端口,直接
ctrl+C 然后 y 就好了
在这里插入图片描述

  1. netstat -tunlp|grep 端口号

1.4 给jupyter notebook增加kernel

好不容易在服务器上配好了这个东西,但是实际开发环境中总会遇到多环境/版本的问题,所以需要添加kernel。
根据 官方文档opython-document_Installing the IPython kernel
我conda默认的环境是py3.8,新安装了py37,py3.8和py37里都安装了jupyter notebook

但是正常一般都直接启动的是base py38里的
在这里插入图片描述
所以,添加核其实也比较简单,直接在我的py37环境里

要添加的核所对应的环境是 py37
conda activate py37
# 就在py37环境里安装ipykernel
pip install ipykernel
# 配置jupyter kernel 所有的环境都要安装ipykernel 只有base环境需要安装jupyter
//安装好之后 设置名称
# 就在py37环境里设置名称
python -m ipykernel install --user --name py37 --display-name "Python37"

然后回到conda默认的base环境里,启动jupyer notebook,就可以看到kernel那里出现了新的选项 Python37


或者直接看下面的操作:

  1. 切换到要添加的虚拟环境,确认是否安装 ipykernel
 python -m ipykernel --version

如果没有安装,则安装:

 python -m pip install ipykernel
  1. 为 Jupyter notebook 添加内核
python -m ipykernel install --user --name=kernelname  --display-name 'py37'
  1. 查看 Jupyter notebook kernel
jupyter kernelspec list
  1. 删除 jupyter 内核
 jupyter kernelspec remove kernelname

如果内核名字很奇怪,可以直接根据 jupyter kernelspec list中提供的 内核地址,在 访达中使用 前往 找到该内核的 kernel.json文件,查看,确定是否是要删除的那个,直接将文件夹删除。就好了

2. jupyter lab

后来觉得好像还是jupyter lab更方便。。想要把这个也配成远程的,但是参考配置jupyterlab远程访问发现,这两个配置过程是一样的,哈哈。

所以直接在服务器的终端输入

>jupyter lab

就好了,配置和jupyter notebook的保持一致。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吨吨不打野

解决了问题,觉得还行就给点

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值