这是关于如何在阿里云ECS上运行Jupyter Notebook并远程访问的简要步骤介绍。
分析《银河帝国》基地系列的时候,有一行代码把我的 Surface 跑死机花屏了。于是我想到可否用服务器?于是权衡之下(主要是看谁便宜)入了阿里云 ECS 的学生基础版,想在上面运行 Jupyter Notebook 来进行基地系列的分析。虽然最后这个目的没有达到,但部署 Jupyter Notebook(以下简称 JN) 的过程确挺有意思的,记下来备忘。 关于环境,云端用的是 CentOS 7 系统,安装了 Anaconda3 的环境。在本地用 Xshell 进行连接。
要生成 JN 的配置文件:
1
jupyter notebook --generate-config
运行以上代码就可以生成了。
设置远程访问密码:
1
2
3ipython #打开ipython
from notebook.auth import passwd
passwd() #生成密码运行以上代码,输入两遍远程访问的密码,就会生成哈希值,它本身不是密码,但这个值后面要用到。
修改 JN 配置文件:
1
vi ~/.jupyter/jupyter_notebook_config.py
用 Vim 打开第一步生成的配置文件,然后添加下列内容:
1
2
3
4c.NotebookApp.ip='*'
c.NotebookApp.password = u'密码哈希值'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #随便指定一个端口注意:在 JN 某次更新之后,
1
c.NotebookApp.ip='*'
需改为
1
c.NotebookApp.ip='0.0.0.0'
另外,根据指定的端口和后面运行 JN 时的提示,记得把阿里云端的防火墙端口打开。
运行 JN:
在 Shell 输入:
1
jupyter notebook
但是呢,因为我是用 root 用户登录的系统,所以服务器提示我:
1
2WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
Running as root is not recommended. Use --allow-root to bypass.就是说我这样运行是有风险的,但我目前先这样运行着吧,后面再优化。于是键入:
1
jupyter notebook --allow-root
运行成功。
本地运行:
在本地浏览器输入地址:
1
http://[all ip addresses on your system]:88/
就可以输入密码进行愉快的远程 JN 之旅啦!