可視化爬蟲Portia安裝和部署踩過的坑

背景

Scrapy爬蟲的確是好使好用,去過scrapinghub的官網瀏覽一下,更是讚歎可視化爬蟲的犀利。scrapinghub有一系列的產品,開源了大部分項目,Portia負責可視化爬蟲的編輯,SpiderCloud負責雲端爬蟲的部署,Scrapy是實現他們底層的技術。國內的可視化爬蟲技術也有很多,據我所知就這幾種:前端

若是有其餘優秀的可視化爬蟲我沒有提到,你們能夠補充。他們的功能暫不討論,但他們都沒有開源的,不方便咱們研究。
而scrapinghub將Portia開源出來了,咱們能夠經過這個渠道瞭解可視化的爬蟲。雖然開源出來了,但是安裝真的不容易啊。python

安裝

安裝以前交代一下,系統和環境吧!nginx

  • 系統:Ubuntu14 server
  • Python:2.7
  • 目標版本:2.0.8

有這兩個就夠了,這兩個是必須的。至於Python的版本可不能夠是3.0以上呢?我只能說在3.0以上的版本環境下,我沒有安裝成功過,多是我我的操做失誤的緣由。
若是僅僅是使用的話,docker和本地安裝都是能夠的,至於Vagrant可不能夠,我就沒試過了。
我這裏優先說本地部署的方式,由於這種方式之後要改造代碼再部署的話比較方便。官方文檔說的比較簡單,按照官網文檔來安裝,確定要踩很多的坑。git

咱們擬定將Portia安裝在/opt目錄下面github

一、克隆Portia

cd /opt
sudo git clone https://github.com/scrapinghub/portia.git
若是沒有git的話,執行sudo apt-get install git安裝Gitdocker

二、不要使用虛擬環境

不知道大家有沒有強迫症,反正我是有的,用什麼pyenv和virtualenv搞過虛擬環境,讓我踩了很多坑。裏面有什麼坑呢?api

  • 安裝的腳本須要新建文件,須要sudo,若是使用了sudo,你的pyenv就白裝了,sudo會使用系統的Python2.7。
  • portia和splash的腳本的寫法不一樣,致使pyenv和virtualenv生效的狀況也不同。

結論是,我輸了,我使用系統的Python2.7來安裝。瀏覽器

三、安裝腳本

cd portia
sudo ./provision.sh install_deps install_splash install_python_deps
接下來能夠等待安裝完成。網絡

四、替換下載慢的腳本(可選)

這步是可選的,若是sip或者PyQt下載的比較慢,能夠先手動下載好。
http://sourceforge.net/projects/pyqt/files/sip/sip-4.17/sip-4.17.tar.gz
http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt-gpl-5.5.1.tar.gz
分別更名爲sip.tar.gz和pyqt5.tar.gz放在/downlaods目錄中,/downloads沒有就新建一個。
而後vi /tmp/splash-2.3.x/dockerfiles/splash/provision.shfrontend

#curl -L -o /downloads/sip.tar.gz http://sourceforge.net/projects/pyqt/files/sip/sip-${SPLASH_SIP_VERSION}/sip-${SPLASH_SIP_VERSION}.tar.gz && \
#curl -L -o /downloads/pyqt5.tar.gz http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-${SPLASH_PYQT_VERSION}/PyQt-gpl-${SPLASH_PYQT_VERSION}.tar.gz && \

註釋掉,保存退出。再次在portia目錄下執行./provision.sh install_splash
最後等待安裝,固然,若是你網絡好,這步能夠忽略。

五、配置nginx

vi nginx/nginx.conf
修改:

root /opt/portia/portiaui/dist;
location /static {
   alias /opt/portia/portiaui/dist;
}

保存退出。
執行sudo ./provision.sh configure_nginx configure_initctl

六、安裝前端依賴和UI

sudo ./provision.sh install_frontend_deps build_assets

七、運行

前面的準備工做都作好了,如今運行Portia
export PYTHONPATH='/opt/portia/portia_server:/opt/portia/slyd:/opt/portia/slybot'
slyd/bin/slyd -p 9002 -r portiaui/dist & portia_server/manage.py runserver

如今打開瀏覽器http://localhost:9001爽爽吧!

題外話

在ctrl+c停掉應用後,再次啓動會被提示端口已佔用。這個時候使用ps -ef | grep slyd,把對應的slyd端口kill掉

相關文章
相關標籤/搜索