因为几个月前买了一台 iPad,而我发现 iPad 最大的问题就是无法编程,所以打算搭建一个 jupyter 的远程服务器。
远程 jupyter 服务器的好处是只要身边有可以上网的设备,打开浏览器就可以随时随地更改,另外对于一个团队来说,也可以一起编辑同一个代码。
首先我们当然需要一个 ECS 服务器,好在前几天阿里云活动送了一个免费的入门级 ECS 服务器。以阿里云为例,搭建一个 jupyter 的远程工作站。
我使用的是 Ubuntu 18.04 的镜像,对于其他 linux 服务器,可能也就是包管理器不一样而已,可以参考。
-
远程连接 root 账户。
无论是本地使用 SSH 还是去阿里云的网站都可,无所谓。
-
安装 pip3。
apt install python3-pip
经测试,阿里云的 Ubuntu 18.04 自带 python3,但不带 pip3。
-
安装 jupyter 和一些其他想要使用的库。
pip3 install jupyter pip3 install matplotlib pip3 install sklearn
-
创建一个文件夹专门来放置 jupyter 的工作目录。
cd /var/local mkdir jupyter cd jupyter mkdir home cd /var/log touch jupyter.log
-
生成 jupyter 配置和生成密码的 SHA 值。
jupyter notebook --generate-config ipython > from notebook.auth import passwd > passwd()
注意复制下来,待会要用。
-
使用 vim 修改 jupyter_notebook_config.py。
vim ~/.jupyter/jupyter_notebook_config.py
在最后插入以下信息。
c.NotebookApp.ip = '*' c.NotebookApp.allow_root = True c.NotebookApp.open_browser = False c.NotebookApp.port = 8888 c.NotebookApp.password = u'上面生成的sha值' c.ContentsManager.root_dir = '/var/local/jupyter/home'
-
安装 nbextensions
原生 jupyter 的很多体验不是很好,推荐使用一个 jupyter 插件来弥补。
pip3 install jupyter_contrib_nbextensions jupyter contrib nbextension install --user --skip-running-check jupyter nbextensions_configurator enable --user
先进入 jupyter 配置一下,勾选 Hinterland,这个是自动补全功能。虽然比较简陋,但是也很不错了。
你可以看到这个插件还有很多其他的功能,可以自己探索一下。
-
后台守护进程开启服务器。
nohup jupyter notebook > /var/local/jupyter/runtime.log 2>&1 &
可能需要权限:
nohup jupyter notebook --allow-root > /var/local/jupyter/runtime.log 2>&1 &
-
由于阿里云的限制,还需要配置一下安全策略。
打开云服务器的实例界面,选择
本实例安全组
-配置规则
,可以看到下面的这个界面,添加一条规则就行了。 -
在 Safari 中,打开服务器的 IP+端口号 8888。