赞
踩
大家都知道Jupyer Notebook是一个基于网页的交互式计算笔记本环境,实现了文字和代码的完美结合,你甚至可以边学习边做笔记,文本编辑还支持 Markdown 格式,插入各种数学公式也不在话下。
总所周知深度学习的算法往往都是在服务器上运行的,如何能够在本机利用服务器的算例完成交互呢?Jupyter Notebook的强大之处在于它是基于网页的,所以完全可以服务器端开启服务,本地电脑打开网页,运行各种服务器端的代码。
最后引出今天的问题:怎么配置Jupyter远程连接服务器呢?
笔者在网上看了很多帖子,也遇到了很多坑,故决定记录下来,也希望能帮到大家。
这一部分较为简单,直接搜索即可,基本没有什么坑。
jupyter notebook --generate-config
通过这个命令创建就在**~/.jupyter/**下面生成了配置文件jupyter_notebook_config.py
注意是在当前用户的家目录下。
可以手动输入设置密码,或者直接回车自动生成,一共有两种方法:
eg1:利用ipyhton 内核
打开ipython,在ipython环境下创建一个密文的密码:
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: ‘sha1:ce23d945972f:34769685a7ccd3d08c84a18c63968a41f1140274’
把生成的密文‘sha:ce…’复制下来
eg2:利用jupyter内核
$ jupyter notebook password
Enter password: ****
Verify password: ****
[NotebookPasswordApp] Wrote hashed password to /Users/you/.jupyter/jupyter_notebook_config.json
这样就在**~/.jupyter/**下面生成了密码文件jupyter_notebook_config.json
在配置文件~/.jupyter/jupyter_notebook_config.py中找到下面几行修改并且取消注释
vim ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.ip='*' # 星号代表任意ip,这个跟mysql的权限设置一样,所以说知识是互通的
c.NotebookApp.allow_remote_access = True # 允许远程连接
c.NotebookApp.password = u'sha1:...' # 复制的那个密码文件json的一串密码放到这里
c.NotebookApp.open_browser = False # 不自动打开浏览器
c.NotebookApp.port =8888 # 可自行指定一个端口, 访问时使用
c.NotebookApp.allow_root = True #允许使用root用户去运行jupyter
我们先创建一个工作目录workspace,以后每次都在这个目录下打开jupyter notebook,我们在网页中创建的文件夹,写的代码也都会在这个文件夹下
mkdir workspace
cd workspace
jupyter notebook
正常运行输出的结果:
这个地方是容易出错的,尤其是服务器端采用docker管理时,更要注意ssh的端口和jupyter端口的映射关系。
此时不需要为ssh分配特定端口,默认的都22端口,故只需要指出jupeter的端口,我前面设置的88888,直接通过浏览访问:
http://[远程IP]:8888/tree
此时需要特别指出Docker在主服务器上为ssh 分配的映射端口号,方法如下:
ssh -L [本地端口]:localhost:[远程端口] [远程用户名]@[远程IP] -p [ssh连接端口]
注意:这里的远程端口是上面配置的端口号(例如我配置的是8888,这里就需要写8888),本地端口随便写一个就可以,我这里写的是8887。
输入上面的命令之后,会提示输入远程连接的密码,输入密码不报错即连接成功
在CMD中输入jupyter notebook
在浏览器中输入 localhost:8887 它会自动映射到服务器的jupyter服务,出现jupyter窗口,输入你设定的jupyter密码,即成功进入。
输入在服务器端设置的密码即可成功访问。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。