可视化爬虫Portia安装和部署踩过的坑
背景
Scrapy爬虫的确是好使好用,去过scrapinghub的官网浏览一下,更是赞叹可视化爬虫的犀利。scrapinghub有一系列的产品,开源了大部分项目,Portia负责可视化爬虫的编辑,SpiderCloud负责云端爬虫的部署,Scrapy是实现他们底层的技术。国内的可视化爬虫技术也有不少,据我所知就这几种:
如果有其他优秀的可视化爬虫我没有提到,大家可以补充。他们的功能暂不讨论,但他们都没有开源的,不方便我们研究。
而scrapinghub将Portia开源出来了,我们可以通过这个渠道了解可视化的爬虫。虽然开源出来了,可是安装真的不容易啊。
安装
安装之前交代一下,系统和环境吧!
- 系统:Ubuntu14 server
- Python:2.7
- 目标版本:2.0.8
有这两个就够了,这两个是必须的。至于Python的版本可不可以是3.0以上呢?我只能说在3.0以上的版本环境下,我没有安装成功过,可能是我个人操作失误的原因。
如果仅仅是使用的话,docker和本地安装都是可以的,至于Vagrant可不可以,我就没试过了。
我这里优先说本地部署的方式,因为这种方式以后要改造代码再部署的话比较方便。官方文档说的比较简单,按照官网文档来安装,肯定要踩不少的坑。
我们拟定将Portia安装在/opt目录下面
1、克隆Portia
cd /opt
sudo git clone https://github.com/scrapinghub/portia.git
如果没有git的话,执行sudo apt-get install git
安装Git
2、不要使用虚拟环境
不知道你们有没有强迫症,反正我是有的,用什么pyenv和virtualenv搞过虚拟环境,让我踩了不少坑。里面有什么坑呢?
- 安装的脚本需要新建文件,需要sudo,如果使用了sudo,你的pyenv就白装了,sudo会使用系统的Python2.7。
- portia和splash的脚本的写法不同,导致pyenv和virtualenv生效的情况也不一样。
结论是,我输了,我使用系统的Python2.7来安装。
3、安装脚本
cd portia
sudo ./provision.sh install_deps install_splash install_python_deps
接下来可以等待安装完成。
4、替换下载慢的脚本(可选)
这步是可选的,如果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.sh
把
#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
最后等待安装,当然,如果你网络好,这步可以忽略。
5、配置nginx
vi nginx/nginx.conf
修改:
root /opt/portia/portiaui/dist;
location /static {
alias /opt/portia/portiaui/dist;
}
保存退出。
执行sudo ./provision.sh configure_nginx configure_initctl
6、安装前端依赖和UI
sudo ./provision.sh install_frontend_deps build_assets
7、运行
前面的准备工作都做好了,现在运行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掉
可视化爬虫Portia安装和部署踩过的坑的更多相关文章
- CentOS7.2上用KVM安装虚拟机window10踩过的坑
最近两个星期一直在琢磨kvm安装window10操作系统,并且通过桥接模式与外界通信,经历了九九八十一难,终于搞定.下面就记录以下我们在探索的过程中踩过的坑. 安装KVM 1. 系统要求:需要一台可以 ...
- Linux学习、Mongodb部署 踩到的坑学习
一.安装Centos 7虚拟机系统 1.系统安装 下载阿里云的镜像,下载后安装,默认全程图形界面:虚拟机使用Win10自带的Hyper:碰到的坑记录下 1.在Hyper加载镜像启动的时候,提示“虚拟机 ...
- 安装Apache所踩的的坑
刚开始接触PHP等一些脚本语言,需要建立一个本地的服务器,变进行安装了Apache.在其中碰到了诸多问题,和大家一一分享一下. 一.刚解压完成后使用cmd面板进入解压完成的apache的bin目录下, ...
- supervisor安装使用和我踩过的坑
什么是supervisor: supervisor是一款用python编写的进程管理工具,主要运行于linux系统,不支持windows系统,目前还不能运行于python3下. step1:安装sup ...
- IONIC和Cordova安装、打包踩过的坑
1.问题1:直接执行npm install -g cordova ionic,因为网络原因,执行不成功 解决方案:将npm映射到淘宝服务器:npm install -g cnpm --registry ...
- webpack4.0在Mac下的安装配置及踩到的坑
一.什么是webpack是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源.它做的事情是,分析你的项目结构,找到JavaScript模块以 ...
- Mysql5.7.19压缩版安装步骤及踩过的坑
安装Mysql5.7.19压缩版 一:下载压缩包 1.从MySQL官网下载MySQL Community Server 5.7.19,此版本为免费版. 2.下载完成之后解压缩,打开之后文件夹如下: ...
- 安装Mycat 曾经踩的那些坑
1. INFO | jvm | ----/--/-- --:--:-- | Caused by: io.mycat.config.util.ConfigException: schema TEST d ...
- 最细的eclipse 安装maven踩过的坑
Eclipse安装maven插件踩过的坑 在线安装maven eclipse安装maven插件,在网上有各种各样的方法,博主使用过的也不止一种,但是留下的印象总是时好时不好,同样的方法也不确定那一次能 ...
随机推荐
- delphi中将一个ADOQuery查询的数据结果传递给一个动态生成的ADOQuery
delphi中将一个ADOQuery查询的数据结果传递给一个动态生成的ADOQuery 2010-03-10 17:35 方法一: beginADOQuery:=TADOQuery.Create(Ap ...
- MYSQL中可以实现类似IF判断的方法
MYSQL中可以实现类似IF判断的方法 新建一张客户表,如下:sex:1-男,2-女,3-未知:level是客户的级别:1-超级VIP客户,2-VIP客户,3-普通客户 方式一:case函数:流程控制 ...
- Linux上的free命令详解-收藏
解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][ ...
- AlarmManager的使用
原文地址:http://www.cnblogs.com/kross/p/3643708.html AlarmManager可以设定一个规定的时间,或者重复从某一个时间开始,等间隔的做一个操作.可以用来 ...
- ASP.NET MVC中在 @RenderBody() 或者 @Html.Partial()中需要使用引入外部js,css
今天想在后台封装一下bootstraptree这个插件,引入jquery.js bootstrap.js bootstrap.css bootstrap-tree.js后,我在页面查看脚本错误就连最简 ...
- Python学习---字符串操作
### 截取字符串然后拼接 str = "Hello World!" str2 = str[:6] + "tyche !" print(str2) ===> ...
- 【大数据】Hadoop的高可用HA
第1章 HA高可用 1.1 HA概述 1)所谓HA(high available),即高可用(7*24小时不中断服务). 2)实现高可用最关键的策略是消除单点故障(single point of fa ...
- Linux_MySql_yum_安装
1.卸载原始mysql-lib sudo rpm -e --nodeps mysql-libs-xx 2.yum安装mysql-server sudo yum -y install mysql -se ...
- Distinct Substrings SPOJ - DISUBSTR(后缀数组水题)
求不重复的子串个数 用所有的减去height就好了 推出来的... #include <iostream> #include <cstdio> #include <sst ...
- eclispe 出现超内存错误
刚开始以为只要修改tomcat的最大最小内存就可以,结果还是报错,后来才懂需要在eclipse.ini文件中修改 -Xms256m-Xmx512m的值改大些,增加虚拟机运行的内存空间 刚开始最小值只有 ...