搭建远程 ipython notebook 计算环境

ipython 提供了一个非常酷的功能: notebook ,通过它你可以像写博客一样在浏览器里编辑文字和运行python代码,并且提供界面管理你编辑的这些note,还支持将结果页面转HTML或者直接嵌入网页中,十分适合用其做交互式计算,并且能够很方便结果展示给他人。 notebook_ex notebook还有一个很吸引我的地方就是它允许你搭建一个notebook server允许你随时随地通过浏览器远程访问,这样只要你手头有一个能够运行浏览器的联网设备你就能够方便地继续你的工作,并且如果你有一个性能还可以的服务器,你就能利用上服务器巨大的计算资源。

环境说明

以下为我所使用的服务器环境: 服务器: 阿里云ECS OS: Ubuntu Server 14.04.4 LTS python版本: 2.7.6

搭建

首先安装ipython及notebook

1
2
sudo apt-get update
sudo apt-get install ipython ipython-notebook

除了这些一般来说对于数据分析工作,你可能还需要安装scipy,numpy.matplotlib 以及pandas你这些python包,你可以选择以apt-get的方式安装或者pip安装。

1
2
sudo apt-get install python-scipy #apt-get 安装
sudo pip install scipy #pip安装,前提是你已经安装了pip

接下来就正式开始notebook server的搭建了,在终端输入一下命令创建名为nbserver的ipython配置文件

1
ipython profile create nbserver

你的~/.ipython目录下会多出一个文件夹profile_nbserver,用编辑器打开,在末尾插入以下内容:

1
2
3
4
5
6
7
8
9
# Kernel config
c.IPKernelApp.pylab = 'inline' # if you want plotting support always
# Notebook config
c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = u'sha1:bcd259ccf...your hashed password here'
# It's a good idea to put it on a known, fixed port
c.NotebookApp.port = 9999

在这个这个配置文件中要求我们设置SSL证书、密码的sha1哈希值、端口号等信息。首先端口号你可以设定成你喜欢的端口,但注意不要使用已经占用的端口。密码哈希我们使用ipython可以生成一个,在终端中启动ipython输入

1
2
from Ipython.lib import passwd
passwd()

然后输入你的密码,二次确认后就可以得到哈希值了,把它填入配置文件替代原有值。 接着我们可以创建一个自签名的SSL证书:

1
openssl req -x509 -nodes -days 10000 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

然后把生成的pem文件的绝对路径填入配置文件,保存。 现在可以启动你的notebook服务器了:

1
ipython notebook --profile=nbserver

在浏览器地址栏里用你的ip地址替换https://your.ip.address:9999 ,注意协议使用的是https而不是http notebook login 输入密码登陆后你就可以愉快地开始数据分析了,关于使用可以参考官方文档。 使用Ipython Notebook的体验真的超好啊,我越发觉得Python就是我梦寐以求的技术啊!