搭建python数据分析平台

原创 2017年09月19日 23:17:57

基本结构

其实没什么高深的东西,无非是常用的那一套:

pandas, numpy, matplotlib…

但是为了更方便使用,加持了 jupyter notebook(即以前的ipython notebook)……

又为了更方便使用,前端加了nginx或apache反代……

双为了更安全,加持了Let’s Encrypt的HTTPS(只是这台服务器没有80端口,原因你懂的,所以不能用我以前说的方法,这里用了新方法)……

安装环境

我在自己的FreeBSD或Debian服务器上都是手工安装所需要的包,但是这个方法并不适合不熟悉的人。

相比之下,Linux或Mac还算方便,但是在Windows下那简直就是噩梦一般的存在——因为除了纯python包以外,所有包含了非python依赖的包在Windows下安装都是各种麻烦——毕竟Windows没有自带编译环境。

所以这里说的是简便方法:Anaconda

Anaconda是个好东西,搞python的人——特别是不爱折腾的人——必备的大杀器。它相当于打包了python的基本环境和常用的包,甚至还包括包管理器,有了Anaconda,在所有平台上都可以很方便地使用python了。

安装非常简单,直接从官网下载安装程序运行即可。

注意,强烈推荐安装python3的版本,毕竟python2已经out了。

初步使用

装完Anaconda,python环境就已经可以用了——当然是命令行,或者再加上一个编辑器,IDLE那货我觉得还不如VIM。想正经干活当然应该装个IDE,比如PyCharm,但是对于初学者或者非程序员来说,没这个必要,还是notebook方便简单。

早先这个是属于ipython的一个部分,就是一个web版的ipython,后来ipython变成了jupyter,所以它也变成了jupyter notebook了。

jupyter notebook已经包含在最新版的Anaconda里了,所以直接就可以用。

在本地使用notebook是非常简单的,运行:

jupyter notebook

会启动一个实例,并自动打开一个浏览器页面,之后就可以正常使用。

这样用当然可以,但更好的方法是让它跑在远程服务器上,再通过浏览器打开。

最简单的方法就是把8888端口开放出去,不过这样不安全,并不推荐,所以还需要作一些配置。

配置jupyter notebook

相比ipython notebook,新的jupyter notebook使用配置方面比原来方便多了。

首先是创建配置文件:

jupyter notebook --generate-config

然后就可以在 ~/.jupyter/ 下看到 jupyter_notebook_config.py 这个配置文件,其中有很多配置选项可以修改,但这里不细说,有兴趣的人自己去研究吧。

这里只提一个:

c.NotebookApp.open_browser = True

把这个改成False就不会自动打开浏览器了。

但是手动打开浏览器有个问题,就是需要输入一个token才能登录使用,而这个token需要到启动LOG去看,略麻烦。所以需要配置一个自己的登录密码:

jupyter notebook password

之后在命令行里输入要设置的密码,之后会自动保存到配置文件里去,重启jupyter notebook之后即可使用了。

反向代理配置

因为jupyter notebook使用了websock,所以简单配置反向代理到端口8888是不行了。

Nginx配置如下:

upstream notebook {
    server localhost:8888;
}

server {
...
    location / {
        proxy_pass            http://notebook;
        proxy_set_header      Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
    }

    location ~ /api/kernels/ {
        proxy_pass            http://notebook;
        proxy_set_header      Host $host;
        proxy_http_version    1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Origin "";
        proxy_read_timeout    86400;
    }
    location ~ /terminals/ {
        proxy_pass            http://notebook;
        proxy_set_header      Host $host;
        proxy_http_version    1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Origin "";
        proxy_read_timeout    86400;
    }
}

Apache配置如下:

<VirtualHost>
...
        <Location />
                ProxyPass        http://localhost:8888/
                ProxyPassReverse http://localhost:8888/
                ProxyPassReverseCookieDomain localhost yourdomain.com
                RequestHeader set Origin "http://localhost:8888"
        </Location>

        <Location /terminals/>
                ProxyPass        ws://localhost:8888/terminals/
                ProxyPassReverse ws://localhost:8888/terminals/
        </Location>

        <Location /api/kernels/>
                ProxyPass        ws://localhost:8888/api/kernels/
                ProxyPassReverse ws://localhost:8888/api/kernels/
        </Location>
</VirtualHost>

https配置

https配置之前的文章里说过很多次,但是这次的要介绍的是不同的方法。

因为原来用acme-tiny有个问题就是需要http支持来实现域名验证,而我现在碰到的问题是没有80端口可用,所以这个方法行不通。

但并不是没有办法,因为Let’s Encrypt除了支持http验证以外,还有很多其它方式,比如DNS(但需要域名服务商有API支持),还有这里要说的:tls-sni方式,即仅https方式。

这是Let’s Encrypt官方客户端支持的,所以需要先安装(以nginx为例):

sudo pip install certbot certbot-nginx

然后就可以创建证书了:

certbot run --nginx --email <your_email> -w /<path_to>/challenges -d <your.domain.name> --preferred-challenges tls-sni --renew-by-default --agree-tos

执行完就可以自动创建证书并保存,同时还会修改相应的nginx配置文件,非常方便。

现在,可以通过 https://your.domain.name/ 访问,输入前面配置的密码,即可登录并使用jupyter notebook。

Python数据分析环境搭建——Windows篇

最近在看Python for Data Analysis这本书,书中的例子都是基于Python +
  • StormrageWang
  • StormrageWang
  • 2014年07月26日 09:44
  • 2181

如何搭建一个属于自己的直播平台?

现在直播非常火爆,可以从PC或手机直播,然后从PC或是手机或是 支持HTML5的浏览器 收看。但是,你知道直播平台后面的技术和实现原理码? 正好去年过年的时候,一个朋友破解了AirPlay和Chro...
  • liang5603
  • liang5603
  • 2017年01月21日 12:13
  • 2890

中小企业如何搭建数据分析平台?

在信息化建设方面,中小企业不同于大型企业规范的项目管理,由于人员、财力、管理的局限性,很多地方需要做不同的预算和管理,有着自己适用的方案和体系。...
  • nayun123
  • nayun123
  • 2016年09月18日 09:47
  • 1293

基于开源工具的测试平台搭建

1、  简介 随着web系统的越来越复杂,规模越来越庞大,使得软件测试在软件质量保证环节变得越来越重要。近些年来,商业化的软件测试工具越来越多,使用越来越繁琐,价钱越来越昂贵,这无疑对中小型公司的w...
  • chenlei_525
  • chenlei_525
  • 2013年01月06日 12:56
  • 2950

网站搭建平台的含义与优势

当您首次搭建网站时,您会面临诸多搭建平台的选择,如用DIY网站搭建平台,CMS平台如WordPress,您还可以聘请专业设计师帮你搭建网站。或者根据网站的实际需求,去选择一个合适的网站搭建平台。 近...
  • familytwo
  • familytwo
  • 2017年09月21日 11:38
  • 112

构建AI平台的关键考虑点

编者注:想了解更多应用数据科学到你的业务里的信息,可以查看2018年3月5日至8日的Strata数据圣何塞大会上的机器学习议题。大会注册已经开始。 更多人工智能内容请关注2018年4月10-13日人工...
  • zkh880loLh3h21AJTH
  • zkh880loLh3h21AJTH
  • 2017年12月18日 00:00
  • 139

详细解读如何搭建hadoop平台

超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程。包含,Ubuntu服务器创建、远程工具连接配置、Ubuntu服务器配置、Hadoop文件配置、Had...
  • chao821
  • chao821
  • 2016年11月24日 20:30
  • 3172

虚拟机模拟搭建VMware虚拟化平台

工具:oracle vm virtual box , vmware workstation , vmware exsi 5.5 ,vcenter  一、Vm exsi 5.5 安装 1、 物理主机开启...
  • kingtwoice
  • kingtwoice
  • 2017年01月09日 01:45
  • 2064

Python数据分析与挖掘实战—挖掘建模

常用的分类与预测算法 1回归模型分类 1线性回归---自变量因变量线性关系,最小二乘法求解 2非线性回归--自变量因变量非线性关系,函数变换为线性关系,或非线性最小二乘方法求解 3logist...
  • u012749168
  • u012749168
  • 2017年05月02日 23:10
  • 657

搭建Android MQTT推送平台

转载地址: http://blog.csdn.net/lee4755026/article/details/9699713 最近研究了一下Android推送,在网上搜到了很多种方式,觉...
  • lijinhua7602
  • lijinhua7602
  • 2015年04月10日 17:44
  • 448
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:搭建python数据分析平台
举报原因:
原因补充:

(最多只允许输入30个字)