Jupyter notebook 服务器端部署
2016-06-21 10:43
357 查看
背景
Jupyter notebook是由ipython notebook演变而来,jupyter notebook在数据分析时使用非常的方便,花了一晚上时间,详细看了下Jupyter notebook在服务器上的部署,下面详细介绍每一步。我是在centos7.1上部署的,不同的Linux发行版可能会有差异,详情请参考官方的安装指南。
更新Python 2.7.5 到Python 2.7.11
centos7.1 Python版本还是Python 2.7.5,版本太低,这里推荐安装Anaconda下载Anaconda3-4.0.0-Linux-x86_64.sh
从官网现在Anaconda Linux版本,下载到本地安装Anaconda
bash Anaconda3-4.0.0-Linux-x86_64.sh
安装过程需要选择安装路径,可以输入yes选择默认位置
root/anaconda2/
添加环境变量
在/etc/profile里添加:
export PATH=/root/anaconda2/bin:$PATH
测试是否安装成功
[root@biostacs ~]# python -V Python 2.7.11 :: Anaconda custom (64-bit)
设置openssl
使用openssl生成验证文件openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
设置过程中要输入国家,地区,机构,邮箱等信息,记住mycert.pem位置
设置密码
打开ipython , 设置密码In [1]: from IPython.lib import passwd In [2]: passwd() Enter password: Verify password: Out[2]: 'sha1:7467b7351f12:79fc65998**************3003b87f3'
设置过程中要设置用于远程登录的密码,要记住
sha1值,后面设置要用。生成配置文件
终端输入:
[code]jupyter notebook --generate-config
以上将会在 ~/.jupyter/ 下创建默认config 文件: jupyter_notebook_config.py
修改配置文件
在 ~/.jupyter/ 下 jupyter_notebook_config.py里添加如下内容# Configuration file for jupyter-notebook. c = get_config() # Kernel config c.IPKernelApp.pylab = 'inline' # Notebook config c.NotebookApp.certfile = u'/mycert.pem'#你自己的mycert.pem位置 c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.password = u'sha1:209f151dcd7f:a730a81fd00********3ec0a6aa31'#设置密码的时候生成的sha1 # It is a good idea to put it on a known, fixed port c.NotebookApp.port = 8888# 设置未被使用的端口
配置.htaccess文件
为了让apache2能自然的访问到8888端口,我们配置下.htaccess文件。打开网站根目录下的.htaccess文件,添加下面的语句:RewriteCond %{HTTP_HOST} ^ipython\.mythsman.com$ [NC] RewriteCond %{REQUEST_URI} ^/(.*)$ [NC] RewriteRule ^(.*)$ http://ipython.mythsman.com:8888/%1 [R=301,L]
没有.htaccess文件就自己新建一个,这就是个文本文件。
开放端口
修改iptables
修改/etc/sysconfig/iptables文件,增加如下一行:-A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT
重启 iptables
service iptables restart
远程登录Jupyter notebook
本地浏览器输入:https:\\服务器ip:8888
输入前面设置的密码
参考资料
leafilab博客mythsman博客
simonhaninmelbourne博客
AloneSword博客