當前位置:
首頁 > 知識 > 搭建python數據分析平台

搭建python數據分析平台

基本結構

其實沒什麼高深的東西,無非是常用的那一套:

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配置如下:

... ProxyPass http://localhost:8888/ ProxyPassReverse http://localhost:8888/ ProxyPassReverseCookieDomain localhost yourdomain.com RequestHeader set Origin "http://localhost:8888" ProxyPass ws://localhost:8888/terminals/ ProxyPassReverse ws://localhost:8888/terminals/ ProxyPass ws://localhost:8888/api/kernels/ ProxyPassReverse ws://localhost:8888/api/kernels/

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 -w /

/challenges -d --preferred-challenges tls-sni --renew-by-default --agree-tos

執行完就可以自動創建證書並保存,同時還會修改相應的nginx配置文件,非常方便。

現在,可以通過 https://your.domain.name/ 訪問,輸入前面配置的密碼,即可登錄並使用jupyter notebook。

End.

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 36大數據 的精彩文章:

數據分析,你逃不掉的幾大坑
識別王者英雄 一個 PM 的機器學習入門之旅
大數據早報:MongoDB申請IPO 十一國慶黃金周全民出行交通情況預測報告出爐
iPhoneX人臉識別 引發怎樣的數據安全的思考?

TAG:36大數據 |