写在前面
如果你已经看过很多教程,依然打不开jupyter notebook,请直接看下面的【意外情况】的解决办法,一定能帮到你。
安装jupyter notebook
- 先在Linux命令行中输入jupyter notebook看安装了没有
jupyter notebook
- 没有安装使用conda安装
pip install jupyter
- 安装后先生成配置文件,用于后面写入ip,端口号,密码等
jupyter notebook --generate-config
- 【.jupyter】在根目录下,为隐藏文件夹。使用【ls -a】查看目录下的所有文件(包括隐藏文件)
cd ~ && ls -a
cd .jupyter && ll
- 显示以下内容
total 52
-rw-rw-r-- 1 yuanf yuanf 52114 May 10 20:59 jupyter_notebook_config.py
-rw-rw-r-- 1 yuanf yuanf 26 May 8 15:49 migrated
drwxr-xr-x 1 yuanf yuanf 160 Mar 24 19:24 nbconfig
配置文件
- 启动【ipython】配置密码(注意不是python)
ipython
In [1]: from notebook.auth import passwd #导入包
In [2]: passwd() #调用包
Enter password: #输入密码,用于后面登陆jupyter notebook
Verify password: #确认密码
Out[2]: 'sha1:ce23d945972f:34769685a7ccd3d08c84a18c63968a41f1140274' #这段是密钥,复制下来等会用
exit() #退出
- 开始编辑配置文件
vim jupyter_notebook_config.py
#在任意地方加上如下内容
c.NotebookApp.ip = '*' #允许任何ip去访问我们的jupyter notebook
c.NotebookApp.password = u'sha1:ce23d945972f:34769685a7ccd3d08c84a18c63968a41f1140274' #u后面加上你复制的密钥
c.NotebookApp.open_browser = False #因为是在linux,就不让他打开浏览器了
c.NotebookApp.port = 8888 #随便指定一个端口,如果这个端口被占用,jupyter会加1重新找端口,直到找到为止
c.NotebookApp.allow_remote_access = True #允许远程控制
c.NotebookApp.notebook_dir = u'路径' #设置你打开jupyter notebook的时候想显示的位置,可以设置成经常使用的路径
#配置完记得保存
启动jupyter notebook
jupyter notebook
#先看一眼8888端口有没有被占用,不然被占用后jupyter会提示并搞一个新端口,记住它
#然后【Ctrl + C】停止,再挂在后台,防止terminal关闭,端口也关闭
nohup jupyter notebook &
- 在windows下远程访问jupyter notebook,在本地打开浏览器访问以下地址:
http://address_of_remote:8888
- 如果看到上面的端口改变了,请修改8888
- 然后就可以访问jupyter的登录界面了,输入你账户的密码就可以正常登录了。
意外情况:
在windows下远程访问jupyter notebook显示无法正常访问怎么办?
有些服务器可能只开放一个对外的端口,但是我们通过终端访问服务器需要一个对外端口,开启jupyter服务又需要一个端口,这样就需要同时占用两个端口才行。
举个例子,服务器为了保证安全性只开放了一个对外的端口,22号端口,我们使用终端通过22号端口登录到服务器上打开jupyter,jupyter创建的端口是8888号,但是服务器没有对外开放8888号端口,所以即使打开了jupyter,外面也无法正常访问。
如果把jupyter的端口号改为22号,由于我们登录终端的时候正在占用22号,所以jupyter就会提示端口已被占用,无法创建。
网上有很多教程说可以通过修改防火墙设置来开放端口,修改防火墙设置一般都需要管理员权限,但是通常我们使用服务器的时候大多数情况下是不可能有管理员权限的,这时候我们可以使用端口映射来解决这个问题。
解决办法:
在windows下打开DOS,输入:
ssh -N -f -L localhost:9999:localhost:8888 -p 端口号 username@远程地址
#locahost:9999是指本地地址,localhost:8888是指远程地址,其中8888是在linux我们为jupyter notebook开启的端口
#-p 端口号 username@远程地址是什么后面的看下面截图
#例如:
ssh -N -f -L localhost:9999:localhost:8888 -p 22 yuanf@114.212.169.49
#这时候DOS让输入密码,这个密码不是设置jupyter notebook的密码,而是我们登录liunx账户的密码
- 成功后,打开浏览器,输入:
localhost:9999
就可以看到jupyter notebook的登录界面了,输入密码即可登录。最后收藏一下网页,以便下次访问
值得一提的是:
如果实验室服务器意外重启,需要重新在Linux下启动jupyter notebook,并在DOS下重新映射,只跑下面的代码就可以了
# 在linux里面运行下面的代码
nohup jupyter notebook &
# 在windows里面运行下面的代码,locahost:9999是指本地地址,localhost:8888是指远程地址
ssh -N -f -L localhost:9999:localhost:8888 -p 22 yuanf@114.212.169.49
网友评论