服务器部署Scrapy+Scrapyd+Genrpy
因为服务器的python版本可能过低,首先需要升级Python版本。可通过wget升级python版本,方式如下(以3.11.0为例 ,Python可用版本:https://www.python.org/ftp/python/)
( 运行目录在 ~/download下)
一.升级Python 版本
- 安装依赖
1.输入命令:yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
2.安装gcc:yum install gcc
3.Python3.7版本之后需要安装libffi-devel:yum install libffi-devel -y
- wget 获取版本文件
wget http://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz
可使用阿里云镜像wget [https://registry.npmmirror.com/-/binary/python/3.11.0/Python-3.11.0.tgz](https://registry.npmmirror.com/-/binary/python/3.11.0/Python-3.11.0.tgz)
- 解压文件
tar -xzvf Python-3.11.0.tgz
- 解压完成后进入目录
cd Python-3.11.0
- 创建一个python3文件夹 如果存在文件夹则使用 touch
mkdir /usr/local/python3
- 设置编译后目录
./configure --prefix=/usr/local/python3
- 编译
make
编译成功后,安装make install
配置软连接,如果已存在软连接,先删除原来的rm /usr/bin/python3
ln -s /usr/local/python3/bin/python3.11 /usr/bin/python3
rm /usr/bin/pip3
ln -s /usr/local/python3/bin/pip3.11 /usr/bin/pip3
在安装完成后,pip3 install的包可能不会再/usr/bin中创建软链接,可以在环境变量中修改 $PATH,追加python3路径
1 | export PY3PATH=/usr/local/python3/bin:/usr/local/python3/lib |
二.安装&配置&部署 scrapyd scrapyd-client
pip3 install scrapyd scrapyd-client
修改 scrapyd配置**,将bind-ip 改为0.0.0.0(**下方配置文件路径,可根据pip具体安装路径做出调整Ovim /usr/local/python3/lib/python3.11/site-packages/scrapyd/default_scrapyd.conf
后台启动 scrapydnohup scrapyd >& /dev/null &
三.安装&初始化&配置 gerapy
pip3 install gerapy
启动&初始化
- 在 ~/myscrapy 目录初始化gerapy
gerapy init [文件夹名称,默认叫gerapy]
(myscrapy 目录是自己建的目录) - 进入目录
cd gerapy
- 首次初始化数据
gerapy migrate
- 创建一个登录用户
gerapy createsuperuser
- 后台运行gerapy
gerapy runserver 0.0.0.0:8000 > /dev/null 2>&1 &
部署到阿里云
服务器已安装 宝塔面板。
开放端口:6800 , 5000
爬坑
- 报错:
1 | ERROR: Could not find a version that satisfies the requirement urllib3.packages.six (from versions: none) |
执行安装命令: pip3 install --no-cache-dir -U urllib3
- 上传项目文件
- 后台启动scrapyd
nohup scrapyd &
- 后台启动spiderkeeper
nohup spiderkeeper --port 5555 &
- 进入项目目录
cd /usr/scrapypro/crawl/
- 生成egg文件
scrapyd-deploy --build-egg output.egg --deploy-all-targets
- 下载生成的egg文件
- 打开spiderkeeper http://xxx.xxx.xxx.xxxx:5000/project/1/job/periodic
测试爬虫 curl [http://localhost:6800/schedule.json](http://localhost:6800/schedule.json) -d project=xxx -d spider=hangye
根据服务查询进程Idps -ef|grep "scrapyd"|grep -v grep
ps -ef|grep "spiderkeeper"|grep -v grep
打开定时任务
crontab