搭建python数据分析平台

编辑:光环大数据 来源: 互联网 时间: 2017-11-02 13:08 阅读:

大数据

 

基本结构

 

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

 

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配置文件,非常方便。

 

  大数据时代大数据培训,就选光环大数据、数据分析师培训机构!

 

 


大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();