如果不是非得用win7开发,请先考虑Ubuntu,不然坑太多
先参考官方安装文档https://portia.readthedocs.io/en/latest/installation.html,主要是针对Linux
由于:
官网文档关于在windows上安装部署portia介绍较少
百度相关资源也很少
自己部署的时候踩了很多坑
所有记录下常见的坑,方便后人
安装前准备:
系统版本win7 64位,(32位系统不支持安装)。win10跟win7安装原理不一样,不可照搬。
系统设置好支持虚拟化,(如何查看自己的操作系统是否支持虚拟化?请百度,资源很多,不赘述)
部署大概流程:
1、安装docker(最好提前学习下docker,后续安装和使用portia都依赖docker,需要对docker很熟悉才行)
2、设置虚拟机共享目录
3、git clone portia代码
4、安装node.js及相关模块
5、根据dockerfile构建镜像
6、设置挂载目录 端口等启动portia
------------------------------------------------------具体流程---------------------------------------------
一、安装docker
原理:
docker本身是基于Linux系统的容器,不能在windows上直接安装,官方给的解决办法是先安装虚拟机,再将portia安装到虚拟机
因为要安装虚拟机,所有要检查系统是否支持虚拟化,不支持的话需要进入开机bios设置虚拟化
下载:
下载地址:https://hub.docker.com/editions/community/docker-ce-desktop-windows
官网下载需要先注册登录,注册登录需要翻墙,翻墙需要。。。你自己想办法
也可以找其他源镜像资源下载
我使用的下载地址https://download.docker.com/win/static/stable/x86_64/
安装:
一路默认安装,除了最后一步:不要勾选!!!
桌面会出现三个图标
点击Docker Quickstart Terminal
首次点击启动较慢,成功的话界面应该是这个样子
记住图中的IP 192.168.99.100
如果启动的过程卡在获取ip,尝试重启电脑可以解决
二、设置虚拟机共享目录
这一步有两个作用,一是将portia爬取的数据放到Windows里面,二是让docker可以读取后续放在windows的portia代码
设置步骤:
在E或者F盘新建一个空的文件夹作为共享目录,比如取名data
点击桌面快捷方式:Oracle VM VirtualBox
点击设置->选择共享文件夹->点击右上角新建共享
选择我们刚刚新建的空目录data,勾选 自动挂载 和 固定分配
保存
检查是否设置成功:
启动 Docker Quickstart Terminal
输入 docker-machine ssh default (链接到默认虚拟机
输入 mount (查看挂载的目录
如果设置成功的话能在输出的列表里面看见你刚刚设置的共享目录
退出虚拟机 logout
三、下载portia代码
在刚刚新建的目录下新建两个文件夹,一个用来存放爬取的数据,一个用来放代码
git clone git@github.com:scrapinghub/portia.git 将代码克隆到相应目录下(下载docker的时候默认下载了git)
可能提示clone没有权限,启动git bash生成public key 然后复制到你的git账号,具体不明白的百度
然后
然后你就掉坑里了
因为git下载代码默认会将代码转换成当前操作系统的文件格式!
所以提前设置不要默认转换
git config --global core.autocrlf false
四、安装node.js及相关模块
这步没啥坑,注意执行命令不要切换错目录就好。
其实我npm install的时候有报错,提示一个包下载失败,我解决的方式是找到提示报错的下载链接,浏览器手动输入,发现返回404,如何我删除URL路径后面的部分,一步步手动找到包资源,然后手动下载,放到相关目录。
帮同事安装的时候他没有报这个错,所以就不细说了
docker build . -t portia 这个命令先不要执行,有坑!
五、构建镜像
如果你刚刚直接
docker build . -t portia
会提示错误,python\r不存在
高手一看就明白了,这是文件格式错误
如果我没记错应该是这个文件需要转化成Linux格式 portia\portia_server\manage.py
然后再构建镜像
六、启动容器
注意:挂载路径应该是你虚拟机里面的绝对路径
如果报错有啥文件不存在,就是你路径没写对
启动成功的话应该看见这个
然后再浏览器输入http://localhost:9001/
什么?访问被拒绝?!
因为win7的docker是装在虚拟机上,所以这样当然访问不到
还记得刚刚的IP吗?那就是虚拟机的IP
浏览器输入:http://192.168.99.100:9001
看见portia页面没有?
恭喜!