本地浏览器访问远程终端jupyter notebook
本地浏览器访问远程终端jupyter notebook
最近一直在研究怎么把远程终端配置好,走了很多弯路,因此在这里写一个配置远程终端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。
又是各种配置安装的一天,强行:)。这周的分享怎么办,难道可以优雅的告诉教授我是如何安装配置终端嘛:)。