欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

本地浏览器访问远程终端jupyter notebook

程序员文章站 2022-05-27 19:17:43
...

最近一直在研究怎么把远程终端配置好,走了很多弯路,因此在这里写一个配置远程终端jupyter notebook的总结帖,便于将来重新配置的查找。

目标

希望达到的最终效果是:可以使用本地mac的浏览器直接访问远程终端Utunbu的jupyter notebook。

这里的操作全部在mac terminal中进行。

远程终端jupyter notebook配置

登录远程服务器

使用ssh [email protected]_address登录,进入jupyter notebook所在的虚拟环境。在我的终端进入虚拟环境需要的操作是:


$ export PATH=/home/username/anaconda3/bin:$PATH
$ source ~/.bashrc (表示**)

这时候username最前面出现了虚拟环境名(base),说明我已经位于该环境下了。

检查jupyter notebook

直接输入$ jupyter notebook。在未配置之前,我输入该命令会报错:No web browser found: could not locate runnable browser. 这说明我们需要配置在本地使用终端jupyter notebook的浏览器。先control+c退出jupyter notebook功能。

修改配置文件

  • 首先,生成配置文件(生成一次便可,因为我刚开始在之后配置出现问题,重复了多次这个操作,真让人感觉头乱)
$ jupyter notebook --generate-config
  • 接着, 输入python,创建在浏览器登录jupyter notebook的密码,以及保存自动生成的密文,密文是在之后配置中所需要的。
$ python                          #进入python功能
>>> from notebook.auth import passwd
>>>passwd()
Enter password: (这里输入在浏览器登录jupyter notebook的密码)
Verify password: (再次输入)
‘sha: XXXXXXXX'。                #输入密码成功后将会自动生成这段密文, 先复制保存下来)
>>> exit()                        #退出python
  • 这时候,我们去修改第一步生成的配置文件,
$ vim ~/.jupyter/jupyter_notebook_config.py           #用vim这款编辑器打开该配置文件

由于刚开始不懂vim的操作,怎么按键盘电脑都是哔哔哔,简直把自己虐得够呛。所以进入vim之后先不要乱动,学一学怎么操作再修改。
这里稍微简单介绍一些:vim有三种状态:
-命令模式(commond mode): 输入上面的命令行最开始进入就是该模式。
-插入模式(insert mode): 可进行文字输入。
在 common mode 下按相应的字母便可以进入,就可以做修改了:
字母[ i ]:从光标当前位置开始输入文件;
字母[ o ]:插入新的一行,从首行开始输入;
字母[ a ]: 从光标当前位置的下一个位置开始输入。
由于该配置文件最初所有的命令行都是被注释的状态,所以我们只需要在文件最上方输入以下命令即可(也可以找到对应的命令行取消注释,再进行修改)

c.NotebookApp.ip = ' * '                    #允许所有的ip访问
c.NotebookApp.password = u 'sha: XXXXX'     #这里粘贴上一步生成的密文
c.NotebookApp.open_browser = False          #不自动打开浏览器
c.NotebookApp.port = 8989                   #端口可随意命令(文档建议大于8000)

为配置文件添加完上面的命令之后,按 ESC 重新回到commond mode下。
-底行模式(last line mode): 将文件保存以及退出等。
在commond mode下按 [ : ]冒号键便可以进入该模式,此时在文件的最下方出现了以冒号开始的空白行,接着在冒号后面选择相关命令输入。
:wq (存盘并且退出)
:q!(不存盘强制退出)

输入 wq 之后,说明保存修改的文件并且退出vim编辑器,这样我们就修改成功了。

启动jupyter notebook

$ jupyter notebook

这时将会显示The jupyter notebook is running at: http:// [email protected]
正常情况下,在本地浏览器直接输入该网址,便可以成功访问,进入jupyter的登陆界面。但是我没有登陆成功,我知道人生不会一帆风顺的,一直如此。

远程访问失败设置通道

如果不幸不能访问,各种资料显示,是由于服务器防火墙设置的原因,解决方法是在本地建立ssh通道。先让jupyter notebook后台运行,然后退出目前登录的ssh账号

$ nohup jupyter notebook &

接着建立通道,输入

$ ssh [email protected]_address -L127.0.0.1:1212:127.0.0.1:8989
# 1212指的是本地访问的端口,8989是上面建立的端口

完成所有的设置后,在浏览器中输入 http://localhost:1212,我访问成功了 : )

祝大家都能连接成功,愉快玩耍。:)

手动添加kernel

在我能够愉快登录jupyter notebook之后,我又遇到了kernel的选择问题。因为我需要使用在anaconda下名为tf的虚拟环境中的python,这里面我install了所需要的tensorflow。因此我的目标就是,把jupyter notebook kernel下的python切换成tf下的python。
首先在terminal中进入tf虚拟环境,并安装ipykernel

$ conda activate tf
$ conda install ipykernel

安装之后便开始添加,因为可能会出现permission denied的问题,我这里直接指定了所需要添加的python路径,路径可以由以下指令查看

$ which python

把显示出来的路径copy下来,并且添加:

$ /home/username/anaconda3/envs/tf/bin/python -m ipykernel install --user --name tfpython

添加 --user后没有遇到permission denied error,并且在jupyter notebook端成功出现了名字叫做tfpython的kernel。

又是各种配置安装的一天,强行:)。这周的分享怎么办,难道可以优雅的告诉教授我是如何安装配置终端嘛:)。