机器情况:服务器 ubuntu 安装了anaconda 并且在里面安装了jupyter notebook
ipython notebook是一个基于浏览器的python数据分析工具,使用起来非常方便,具有极强的交互方式和富文本的展示效果。jupyter是它的升级版,它的安装也非常方便,一般Anaconda安装包中会自带。安装好以后直接输入jupyter notebook便可以在浏览器中使用。但是它默认只能在本地访问,如果想把它安装在服务器上,然后在本地远程访问,则需要进行如下配置。
1.登录远程服务器
ssh lynn@mylinux # ssh userName@hostName
2.生成配置文件
$ jupyter notebook --generate-config
3.生成密码
打开ipython,在ipython环境下创建一个密文的密码:
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: ‘sha1:ce23d945972f:34769685a7ccd3d08c84a18c63968a41f1140274’
把生成的密文‘sha:ce…’复制下来
4.修改默认配置文件
$ vim ~/.jupyter/jupyter_notebook_config.py
进行如下修改:
c.NotebookApp.ip=’*’ # 如果有问题,则换成’0.0.0.0’, 笔者设置’*’ 就没用
c.NotebookApp.password = u’sha:ce…刚才复制的那个密文’
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #随便指定一个端口
5.启动jupyter notebook
$ jupyter notebook
6.远程访问
此时应该可以直接从本地浏览器直接访问http://address_of_remote:8888就可以看到jupyter的登陆界面。
7.防火墙问题
前面的都做完了,在浏览器里访问,显示相应超时,,一直连接不上,原因:服务器的防火墙拦截了,在服务器上关掉防火墙就行了。
Linux中的防火墙有多种,一般指的iptables。
- Linux防火墙(Iptables)重启系统生效
开启: chkconfig iptables on
关闭: chkconfig iptables off - Linux防火墙(Iptables) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop - 其它linux防火墙,请自行参考说明文档。一般对于Linux下的服务都可以用以上命令执行开启和关闭操作,而防火墙通常都以服务形式运行,因此也算是一个通用的方法。
8.建立ssh安全协议通道
在浏览器访问之前先建立一个ssh安全协议通道,做一个ip地址映射,这样就可以直接访问了.
如果登陆失败,则有可能是服务器防火墙设置的问题,此时最简单的方法是在本地建立一个ssh通道:
在本地终端中输入ssh username@address_of_remote -L127.0.0.1:1234 :127.0.0.1:8888
便可以在localhost:1234直接访问远程的jupyter了。
9.日志和后台进程
上面的启动方式,会在当前目录生成一个日志文件,我忘了叫上面名字,总之随着jupyter notebook的运行,日志文件会越来越大,如果不是很重要,可以设置不记录日志,方法是将所有的输出都重定向到/dev/null 2>&1 &
此外,上面的启动方式是启动一个前台进程,如果ssh连接断开,jupyter notebook也就失效了,所以需要将jupyter notebook作为一个后台进程启动,在linux中是nohup命令。
#不启动ssl,不记录日志输出,作为后台进程启动jupyter notebook
nohup jupyter notebook >/dev/null 2>&1 &