gerapy+scrapyd管理发布scrapy项目

gerapy是一个前端项目,集打包,发布,管理,监控于一身的工具。

1.安装gerapy:

pip install gerapy

输入gerapy进行验证是否安装成功

2.安装完成后执行初始化:

gerapy init

会生成gerapy目录,进入目录会看到一个projects目录。

3.初始化数据,生成一个sqlite数据库文件

gerapy migrate

4.运行服务默认是8000端口,自己可以定义端口

gerapy runserver 192.168.0.248:8080

5.在远程服务端开启scarpyd服务,在clients中配置scrapyd 远程服务

scrapyd远程服务配置

6.把scrapy项目拷贝到projects目录中,如果是压缩文件,必须解压

7.在Projects中会显示自己放入的项目,对项目进行打包和发布

打包和发布项目到远程服务器

这样项目部署成功了,可以用gerapy去管理了。

8.可以在线对代码进行编辑,重新编译部署

编辑代码

编辑代码2
遇到了问题:
  1. 由于脚本中使用了selenium,使用linux的定时任务执行的脚本每次运行完毕scrapyd都一直为运行状态,也无法取消任务;
  2. 运行状态的任务数超过8时,以后的脚本都是挂起状态。
    为了解决这个问题,写了一个发布脚本,用linux的定时任务每周定时运行:
#!/bin/sh
# 获取json字符串中对应的键值对
function parse(){
    echo "${1//\"/}" | sed "s/.*$2:\([^,}]*\).*/\1/" | sed 's/^[ \t]*//g'
}
echo '关闭grapy服务'
#关闭grapy
pid=`ps -ef|grep gerapy|grep -v grep|awk '{print $2}'`
if [ "$pid" = "" ] ; then
    echo "gerapy is shutdown now!"
else
    kill -9 $pid
fi
sleep 3
echo '关闭scrapyd服务'
#关闭scrapyd服务
pid=`ps -ef|grep scrapyd|grep -v grep|awk '{print $2}'`
if [ "$pid" = "" ] ; then
    echo "scrapyd is shutdown now!"
else
    kill -9 $pid
fi
sleep 3
echo '删除数据库文件'
#删除数据库文件
rm -rf /app/services/gerapy/db.sqlite3
sleep 1
echo '初始化gerapy数据库'
#初始化数据库
cd /app/services/gerapy
gerapy migrate
sleep 1
echo '启动gerapy服务'
#重启gerapy服务
nohup gerapy runserver 192.168.0.248:8383 > /dev/null 2>&1 &
sleep 1
echo '删除以前的残留文件'
#删除目录
rm -rf /app/services/scrapyd
#新建目录
cd /app/services
mkdir scrapyd
sleep 1
echo '启动scrapyd服务'
#重新启动scrapyd服务
cd scrapyd/
nohup scrapyd > /dev/null 2>&1 &
sleep 2
#gerapy中添加client
curl 'http://192.168.0.248:8383/api/client/1/status'
sleep 2
curl -H 'Content-Type: application/json' --data-binary '{"name":"平安公网项目","ip":"192.168.0.248","port":"6800","description":"","auth":false,"username":"","password":""}' --compressed 'http://192.168.0.248:8383/api/client/create'
sleep 2
#发布项目
resp=`curl 'http://192.168.0.248:8383/api/project/bankproduct/build'`
built_at=$(parse $resp "built_at")
egg=$(parse $resp "egg")
#1.打包
sleep 2
curl -H 'Content-Type: application/json' -H 'Accept-Language: zh-CN,zh;q=0.9' --data-binary '{"description":"银行理财项目爬取","egg": "'$egg'","built_at":"'$built_at'"}' --compressed 'http://192.168.0.248:8383/api/project/bankproduct/build'
sleep 2
#2.发布
curl --data-binary "" --compressed 'http://192.168.0.248:8383/api/client/1/project/bankproduct/deploy'
sleep 2
curl 'http://192.168.0.248:8383/api/client/1/project/bankproduct/version'

你可能感兴趣的:(gerapy+scrapyd管理发布scrapy项目)