当前位置: 首页 > 工具软件 > Portia > 使用案例 >

Ubuntu 16.04 本地部署portia可编辑爬虫系统记录

上官英哲
2023-12-01

Ubuntu 16.04 本地部署portia爬虫系统记录

环境相关

ubuntu 16.04
python:系统自带的python 3.5.2
portia:2.08
splash:3.2

注:

  1. 首先记录中用到的portia项目是我从docker里面copy出来的,千万不要用git pull,至少在我本地部署这段时间里,git上有所更新,已经跟官方文档的不太一样了。还有git上面release的版本,如果我没记错的话那个2.08已经很旧了,python用的2.7,splash还是用的2.3.3版本的,我看到的一个本地部署在ubuntu14.04的教程(https://www.cnblogs.com/ginponson/p/7102411.html)可能就是用的这个,但是使用这个版本进行安装的时候有一个ppa的repo已经是not found了,所以失败了。
  2. python不可以用2.7,安装脚本不支持2.7。还有最好不要使用anaconda3的环境,可能是这几天踩坑太多,也可能是我水平有限,反正我在anaconda3的环境中安装失败了。

安装步骤

  1. 首先按官方文档的docker安装方法,run一个docker,将docker中的项目(文件夹名称是app而非portia)copy到宿主机中,比如我copy到宿主机就是/home/kaede/app
  2. 然后在app目录下运行 sudo -H ./provision.sh install_deps install_python_deps 。 这边-H意义我就不解释了(其实是我还没看太懂,看懂了再说),反正就是如果不用-H装,会有warning,而且要命的是这显示的是个warning,真正安装完之后想运行的时候,会报segmentation fault,而且没有任何报错信息。同理在之后的部署过程中如果有其他python库要安装,都要用sudo -H pip3装。当然如果你的机器没有让你添加-H的warning,那就不用加了吧,大概。
  3. 安装splash。如果直接使用sudo ./provision.sh install_splash,我遇到的最大的问题就是网速很慢很慢,很有可能就直接卡死在一半,然后就要重新来(心态崩了)。解决方案就是,可以看一下provision.sh这个文件的内容,可以看到splash所依赖的sip、pyqt和qt的版本,脚本默认的qt安装路径,sip、pyqt、qtwebkit这些包的版本、下载地址、下载后文件的所在位置和名称也都可以看到,比如splash3.2的就是sip 4.19.3,pyqt 5.9,qt5.9.1。包都自己下载好,按脚本中的内容改好压缩包、run文件的名字,放到/downloads(没有就自己建一个,注意不是~/Downloads),当然qt也可以直接自己安装好,安装在/opt/qt59,然后把脚本文件中关于包的下载的部分注释掉,再./provision.sh install_splash。 (我好像是先从splash的git下载了3.2的release,先按官方文档安装了一遍splash,这部分记不太清了。安装过程中还遇到了qmake默认路径更改的问题,百度解决…一般只要依赖包的版本没有问题,就不会出问题吧。)
  4. 安装好splash之后,还可以再完整运行一次sudo -H ./provision.sh install_deps install_splash install_python_deps,出了问题就解决一下吧。
  5. 将项目目录下的./docker/nginx中的三个文件copy到/etc/nginx(你的nginx配置文件所在文件夹)。如果你的nginx配置了其他东西,就把./docker/nginx/nginx.conf的部分内容加到你的配置文件中吧,这部分大佬们自行斟酌,本菜鸡不作保证。
  6. 将项目目录中的portia_server、slyd、slybot文件夹的路径添加到PYTHONPATH。比如我在~/.bashrc中添加export PYTHONPATH="/home/kaede/app/portia_server:/home/kaede/app/slyd:/home/kaede/app/slybot",然后在运行sudo -H slyd/bin/slyd -p 9002 -r portiaui/dist & portia_server/manage.py runserver
  7. 打开http://127.0.0.1:9001应该就可以了。这边我还踩了一脚localhost和127.0.0.1的区别的坑,还以为是nginx配置有问题,暴露自己是菜鸡的事实了。
  8. 部署到本地的目的当然是要能够修改代码、查看输出什么的了啊,我主要想改和看的是前端的一些东西,在前端改了代码之后要重新build,npm install、bower install、ember build --environment production走一套就好了(ember-cli、bower什么的自己装吧)
  9. 这样应该就完事了吧。比较重要的点就是各种东西安装的版本要对,然后sudo要加-H,有其他问题再说吧。
  10. 弄了好几天,感觉坑应该都被我踩完了吧,毕业后的第一份工作,别因为工作效率低被开除就好了,啊哈哈哈哈~

菜鸡第一次写博客,转载注明哦~

溜了溜了

 类似资料: