最近使用阿里云的服务器搭建了Jupyter Notebook的远程连接,踩了很多坑,写个博客总结一下。
介绍
Jupyter Notebook(Jupyter Notebook简介)是一款基于网页形式的应用,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。无论是写、测试python代码,还是记笔记都比较方便
前提
我采用阿里云的服务器,基于Ubuntu20.04系统搭建Jupyter Notebook服务器。
安装步骤
- 调整python优先级,将python3调整为默认python(即在终端输入python会启动python3),命令如下:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
通常的python地址都为上面命令中的地址,如果存在特殊情况也可采用whereis命令查看python具体地址。
- 安装Jupyter Notebook库
pip install jupyter notebook
- 生成Jupyter Notebook配置文件
jupyter notebook --generate-config
-
设置Jupyter Notebook密码
设置密码用于设置服务器配置,以及登录Jupyter。打开终端,输入进入python(即输入python按下回车)后输入以下代码生成密文:
In [1]: from IPython.lib import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:7ae26196273a:21454dcaa7dc421d6a47eaab4da8b65a52cbef50'
如果将密码设置为123456就会出现如上密文:‘sha1:7ae26196273a:21454dcaa7dc421d6a47eaab4da8b65a52cbef50’
- 设置服务器配置文件
使用vim编辑配置文件:
vim ~/.jupyter/jupyter_notebook_config.py
在末尾输入以下信息:
c.NotebookApp.ip = '*' #让所有绑定服务器的IP都能访问,若只想在特定IP访问,将*换为特定IP即可
c.NotebookApp.notebook_dir = '/data/jupyter' #设置Jupyter的根目录
c.NotebookApp.open_browser = False #设置不在服务器上的浏览器打开jupyter notebook(因为我们是要远程访问jupyter notebook)
c.NotebookApp.password = 'sha1:32f67b55141d:c47150a79ab295d26fbd3c3ff2cfad6be98c1bc5' #设置密码,直接将IPython.lib生成密文的复制粘贴过来就行
c.NotebookApp.port = 8888 #设置访问端口为8888(可随意设置端口,别用到特殊端口就行)
c.NotebookApp.allow_root = True #允许root用户访问,否则root用户将无法打开jupyter notebook
vim基本使用:使用jkhl
分别控制光标的上下左右,点击a
开始编辑,点击esc退出编辑,输入:wq!
保存并退出vim编辑
- 打开Jupyter Notebook
在终端输入jupyter notebook
打开Jupyter Notebook,若上面设置成功将会显示如下内容:
[W 22:15:50.131 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 22:15:50.133 NotebookApp] Serving notebooks from local directory: /data/jupyter
[I 22:15:50.133 NotebookApp] Jupyter Notebook 6.4.5 is running at:
[I 22:15:50.133 NotebookApp] http://一串英语大小和数字混合的字符串:8888/
[I 22:15:50.133 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
-
访问Jupyter Notebook服务器
在我们的浏览器的地址栏输入你服务器的IP:8888
,在加载一段时间后将会出现如下画面:
在这个界面输入密码(我设置的是123456,即输入123456即可)后就可以愉快的访问Jupyter Notebook服务器了。 -
可能出现的问题
无法访问网页:- 尝试在地址栏输入:http://你服务器的IP:8888(可能是因为地址栏默认采用https造成的)
- 在服务器终端输入:
sudo ufw status
查看防火墙状态(可能是因为开启了防火墙),若显示:Status: inactive
则表明防火墙关闭,否则输入命令:sudo ufw disable
关闭防火墙(这样我们才可以简单的通过浏览器访问Jupyter Notebook服务器,否则需要设置ssh隧道,较为麻烦,不过如果为了安全也可以设置ssh隧道)
9.关闭Jupyter Notebook服务器
在终端输入ctrl + C,将会显示:
Serving notebooks from local directory: /data/jupyter
0 active kernels
Jupyter Notebook 6.4.5 is running at:
http://一串英语大小和数字混合的字符串:8888/
Shutdown this notebook server (y/[n])?
输入y,就可成功退出Jupyter Notebook服务器。(不过我们通常长期在服务器启动Jupyter Notebook,以方便我们的使用)
文章到这里就结束了,如果大家有遇见什么问题或有什么新的发现还请在评论区讨论