最近在github找到一些工程的代码都是.ipynb格式的文件,就好奇这个JupyterNotebook格式可以直接运行吗,还是需要另存成本地常见的格式,就查了一下,发现是可以的,这里记录一下。
主要思路:
(假设你的服务器上已经安装好了Jupyter Notebook)
jupyter notebook --generate-config
打开python,输入指令:
from notebook.auth import passwd
passwd()
输入自己想要设置的密码,之后会自动生成一个密码序列,复制下来。
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem
打开第2步生成的配置文件,一般是在~/.jupyter
打开配置文件:
vi ~/.jupyter/jupyter_notebook_config.py
对以下几行做如下修改:
c.NotebookApp.password=u'sha1:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
// (注:XXXXXXXXXXXXXXXXXXXXXXX 为第3步中生成的密码序列)
c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key'
//(注:为第4步中生成的mycert.pem和mykey.key两个文件的绝对路径,可用pwd查看)
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8889 //自己可以设定成别的
:wq!保存并退出
在服务器端打开监听端口:
jupyter notebook --no-browser --port=8888 --ip=0.0.0.0
no-browser是指不在服务器上使用浏览器;port可以设置成任何空闲的端口号(上一步的配置文件中我把默认端口号8888改改为了8889,这里用8888依然可以);ip如果不设置为0.0.0.0我的服务器会报错:OSError: [Errno 99] Cannot assign requested addres。
或者,这一步还可以在服务器上用 nohup 后台挂起运行jupyter:
nohup jupyter notebook &
这里及以前参考的是[远程使用Jupyter]本地使用服务器端运行的Jupyter Notebook这篇文章。
在本地计算机上(我的是win10系统),将服务器端口映射到本地。使用cmd命令打开控制台,输入:
ssh username@server_ip -L127.0.0.1:8000:127.0.0.1:8888
username就是在服务器上开设的用户名,server_ip就是服务器的IP,至于“-L127.0.0.1”中为什么是127.0.0.1我也不太清楚,然后就是将本地的8000端口映射到服务器端的8888端口,也就是jupyter notebook使用的端口。
这里参考的是远程访问服务器端Jupyter notebook这篇文章。
下面就可以在本地的浏览器里输入https://127.0.0.1:8000,输入第3步中自己设置的密码,就可以打开服务器上的Jupyter Notebook了,开始使用吧!
没有在一开始设定密码,而是在浏览器上进行访问时,在跳出的token界面直接输入token。(这让我忽然想起,动手学深度学习的视频中,李沐大神打开服务器上的jupyter notebook时,用的就是这个方法。。。啊,很多事,总是要在不同的情境下一二再,再而三的遇到以后,才会想起回过头来,将它们串联起来,从而有进一步的理解~从一个陌生人真正变成一个熟人)
之前配置完服务器上的JupyterNotebook之后,遇到过三个关键错误:
①第6步中,直接输入jupyter notebook --no-browser
来运行Jupyter Notebook会报如下错误:
②完成第6步,在服务器上正确运行Jupyter Notebook后,没有正确执行第7步,即正确地将服务器端口映射到本地端口(主要是直接套用了这两篇2018-07-10 在本地使用服务器上的jupyter notebook打开.ipynb文件和服务器端jupyter notebook映射到本地浏览器参考文章中的映射指令,以及对该将那个ip和端口映射到哪个ip和端口不明)
③完成第7步,将服务器端口和本地端口映射成功后,打开本地浏览器输入ip地址127.0.0.1:8000,还是打不开服务器上的Jupyter Notebook,显示“连接重置错误 ERR_CONNECTION_RESET”。
参考了网页链接服务失败可能原因的文章(无法访问/404页面/SSL ERROR (总之就是连接不上)——问题与解决方案)后,找到了原因。
在本地浏览器地址栏中输入的ip应该是https://127.0.0.1:8000。因为在第3步中配置的密码,所以在访问时应该在ip地址前加入https,是https,要加上s哦,s!其实不该遇到这个问题的,因为第3步参考那篇文章中说到了这个问题,给出了正确访问的方式~主要是要怪自己的眼太大,竟然看不见这样一条赫然重要的提示(唉,也太粗心了,都对不起写那篇文章的博主)