学校提供了ecs云服务器进行高性能运算
分配到了云主机后想在上面搭好jupyter notebook服务器方便远程使用,在此记录整个流程和遇到的问题
本文档适用于常规的jupyter notebook远程连接,同时也对基于ecs云服务器的情况做了说明
# 官方文档
https://jupyter-notebook.readthedocs.io/en/latest/public_server.html#notebook-server-security
# 创建config文件
$ jupyter notebook --generate-config
# 创建完毕后打开,一般情况下路径为,用vim打开即可更改一些配置信息
vim ~/.jupyter/jupyter_notebook_config.py
# 设置密码
jupyter基于server-client架构,此处设置密码作为本地和远程访问的口令
推荐用手动生成的方式
ipython后执行下面内容
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed' # 实际可能不是这个格式
此处可能会报错:
ModuleNotFoundError: No module named ‘_cffi_backend‘
原因是没有安装cffi模块
cffi是连接Python与c的桥梁,可实现在Python中调用c文件。cffi为c语言的外部接口,在Python中使用该接口可以实现在Python中使用外部c文件的数据结构及函数
因此安装cffi模块即可,推荐用下面的命令,不然可能会因为一些冗余文件报错
pip -vvv install --upgrade --force-reinstall cffi
# 修改配置
获取生成的密钥后,打开前面生成的config文件
vim ~/.jupyter/jupyter_notebook_config.py
取消下面几项的注释,使其生效,同时做一些配置
c.NotebookApp.password = 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
c.NotebookApp.ip='*' # ×允许任何ip访问
c.NotebookApp.open_browser = False # 启动后不自动打开浏览器
c.NotebookApp.port =8888 # 可自行指定一个端口, 访问时使用该端口
有些版本的jupyter notebook还需要设置allow_remote_access项为True
此时在本地已经可以通过localhost:8888登陆使用了,常规情况下也可以通过IP:8888远程登录使用
# 关于ecs服务器
不过如果是基于ecs服务器则需要进一步操作
因为学校的ecs云平台基于局域网的,没有公网ip,所以要申请一个端口
此处实例内部地址端口对应c.NotebookApp.port的值即可
申请成功后,就可以用新分配的外部地址远程登陆jupyter notebook了~