当前位置: 首页 > news >正文

全面解析Gerapy分布式部署:从环境搭建到定时任务,避开Crawlab的坑

Gerapy分布式部署

搭建远程服务器的环境

  1. 装好带docker服务的系统

    Docker:容器可生成镜像,也可拉去镜像生成容器
    示例:将一个环境打包上传到云端(远程服务器),其他8个服务器需要这个环境直接向云端拉取镜像生成容器,进而使用该环境,比如有MYSQL的镜像、Redis的镜像
    

    备注:Linux系统下安装Docker

    1. 更新yum包

      yum update
      
    2. 安装依赖软件包

      yum install -y yum-utils device-mapper-persistent-data lvm2
      
    3. 设置yum源

      yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      
    4. 安装docker

      yum install docker-ce 
      
    5. 启动docker服务

      systemctl start docker
      
    6. 设置开机自启动

      systemctl enable docker 
      

    Linux系统下安装docker-compose

    1. 安装

      sudo curl -L "https://github.com/docker/compose/releases/download/VERSION/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      

      记得将 VERSION 替换为实际的版本号,或者直接从 Docker Compose 的GitHub Release 页面获取最新版本号。

    2. 赋予执行权限

      sudo chmod +x /usr/local/bin/docker-compose
      
    3. 验证安装

      docker-compose --version
      
  2. 修改yum源

    • 验证网络是否可以连接阿里云镜像

      ping mirrors.aliyun.com
      
    • 手动配置

      • 1、删除原yum源

        cd /etc/yum.repos.d# 删除原yum源
        rm -rf /etc/yum.repos.d/*
        
      • 2、下载阿里云Centos-7.repo文件

        # wget命令下载: wget [options] [url]
        wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# curl命令下载: curl [options] [url]
        curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
        
      • 3、 清除及生成缓存

        # 清除yum缓存
        yum clean all# 缓存阿里云镜像
        yum makecache
        
      • 4、查看yum源信息,已经更换为了阿里云镜像源

        yum repolist
        
  3. 上传compose.ymal文件(相关镜像配置文件)

    • yum -y install lrzsz:rz命令可上传文件
  4. 通过Docker Compose(Compose 是用于定义和运行多容器 Docker 应用程序的工具)使用 YAML 文件来配置应用程序需要的所有服务

    docker-compose up -d 在后台运行,关闭shell不会关闭任务
    docker-compose down 关闭运行的任务
    docker ps -a 显示当前服务器的所有容器
    
  5. 安装anaconda3

    一、安装 Anaconda

    1. 下载 Anaconda 安装包
      首先,前往 Anaconda 官网 下载适用于 Linux 的安装包。
    wget https://repo.anaconda.com/archive/Anaconda3-2023.07-Linux-x86_64.sh
    1. 安装 Anaconda
      下载完成后,运行以下命令开始安装:
    bash Anaconda3-2023.07-Linux-x86_64.sh

    安装过程中会出现许可协议提示,按 Enter 键查看协议内容,按 Q 键退出查看,然后输入 yes 同意协议。

    安装路径建议使用默认路径(按 Enter 键确认)。

    1. 配置环境变量
      安装完成后,建议添加 Anaconda 到系统环境变量中。在终端中运行以下命令:
    source ~/.bashrc
    

    或者手动编辑 .bashrc 文件,在文件末尾添加以下内容:

    export PATH="$HOME/anaconda3/bin:$PATH"
    

    保存文件后,运行:

    source ~/.bashrc
    

    二、基本使用

    1. 验证安装
      在终端中输入以下命令验证是否安装成功:
    conda --version
    

    如果返回 conda 的版本号,则表示安装成功。

    1. 更新 conda
      安装成功后,建议更新 conda 到最新版本:
    conda update conda
    

3. 创建和管理环境
使用 Anaconda 可以轻松创建和管理虚拟环境。例如,创建一个名为 myenv 的新环境,并安装指定版本的 Python:```
conda create -n myenv python=3.8
```激活环境:```
conda activate myenv
```安装常用包(如 numpy 和 pandas):```
conda install numpy pandas
```列出所有环境:```
conda env list
```删除环境:```
conda remove -n myenv --all
```

4. 使用 Jupyter Notebook
在 Anaconda 环境中使用 Jupyter Notebook 是非常方便的。首先,确保 Jupyter 已安装:```
conda install jupyter
```然后,在终端中运行:```
jupyter notebook
```浏览器将自动打开 Jupyter Notebook 的界面。三、高级使用
1. 配置镜像源
为了提高下载速度,可以配置国内镜像源。例如,配置清华大学的镜像源:```
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
```2. 导出和导入环境
导出环境配置:```
conda env export > environment.yml
```根据配置文件创建环境:```
conda env create -f environment.yml
```**备注:**无法将windos系统的conda环境导出,再导入linux系统中。因为包在linux系统和windows系统中是不同的
四、常见问题1. conda 命令未找到
如果在终端中遇到 conda: command not found 的错误,确保已正确配置环境变量,并重新加载 .bashrc 文件。```
source ~/.bashrc
```

2. 解决依赖冲突
在安装包时可能会遇到依赖冲突的情况。可以尝试使用 conda-forge 仓库:```
conda install -c conda-forge <package_name>
```结语```
Anaconda 是一个强大的工具,可以帮助我们更高效地进行数据科学和机器学习项目的开发与管理。希望本文能帮助你顺利安装和使用 Anaconda。在实践中不断探索和总结,会有更多的收获。
```

分布式部署

  1. scrapy-redis环境搭建

  2. scrapy-redis分布式实现

    scrapy-redis项目跟原来的scrapy项目相比:
    将调度器由本地的调度器变为redis数据库,可以存储指纹,任务本地调度器无法看见
    redis数据库调度器可以共享,且能看见
    
  3. 安装scrapyd:分布式部署服务,Scrapyd 是一个运行 Scrapy 爬虫的服务程序,方便地完成 Scrapy 爬虫项目的部署任务调度。

  4. 安装python-scrapyd-api:封装了scrapyd分布式部署相关命令

  5. 安装Scrapyd-Client:方便项目的打包并部署到scrapyd上

    • 进行项目的打包部署相关配置[scrapy.cfg]

      [settings]
      default = centoschina.settings[deploy:centoschina]
      # 本机的scrapyd, 不用改
      url = http://localhost:6800/
      project = centoschina
      
    • 在scrapy.cfg文件所在目录运行scrapyd-deploy命令

      • 解决scrapyd-deploy不是内部外部命令

        在python解释器下面的Scripts,新建scrapy.bat和scrapyd-deploy.bat文件

      • 解决报一个转义错误

        打开scrapyd下的utils.py文件,修改如下

        140行左右改成这样即可

            if isinstance(out, bytes):tmp = out.decode('utf-8').splitlines()else:tmp = out.splitlines()# tmp = out.decode('utf-8').splitlines()
        
  6. 安装gerapy:一个后台管理系统,由django实现,相关按钮利用了python-scrapyd-api和Scrapy-Client的命令

    gerapy依赖于前几个环境的搭建
    

Gerapy使用流程

  1. cmd输入scrapyd,挂着scrapyd服务
  2. gerapy init 初始化,会在文件夹下创建一个gerapy文件夹
  3. cd gerapy
  4. gerapy migrate
  5. gerapy runserver 默认是127.0.0.1:8000
  6. gerapy createsuperuser 创建账号密码,默认情况下是没有的
  7. 浏览器输入127.0.0.1:8000 登录账号密码,进入主页
  8. 各种操作,比如添加主机,打包项目,定时任务等

远程主机的gerapy使用注意

  • scrapyd要修改配置文件的bind_address为0.0.0.0
0.0.0.0在服务器的环境中,指的就是服务器上所有的ipv4地址,如果机器上有2个ip 192.168.30.10 和 10.0.2.15,redis在配置中,如果配置监听在0.0.0.0这个地址上,那么,通过这2个ip地址都是能够到达这个redis服务的。同时呢,访问本地的127.0.0.1也是能够访问到redis服务的。
  • 是否保持序列的持久化决定了去重队列信息是否保留

定时任务

gerapy弊端

爬虫任务报错不知道,crawlab部署(社区版免费,专业版付费)可以看到报错

难题

  1. docker拉取镜像拉不下来:超时错误

    a. 增加Docker的镜像源配置文件 /etc/docker/daemon.json
    如果没有配置过镜像源该文件默认是不存在的

    sudo vi /etc/docker/daemon.json
    

    在其中增加如下内容

    在其中增加如下内容

    {
    "registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com "]
    }
    

    b. 重启docker

    service docker restart
    

    c. 查看配置是否生效

    docker info|grep Mirrors -A 1
    

  1. 分布式项目打包部署出现转义错误,scrapyd-deploy

更多精致内容

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《SPSS零基础入门教程》学习笔记——05.模型入门
  • 【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
  • Linux运维篇-yum命令报错 /lib64/libcurl.so.4相关
  • 【 亿邦动力网-注册安全分析报告】
  • ubuntu22.04 安装clamav并使用定时任务扫描
  • ubuntu下udp丢包
  • 关于换肤框架Android-skin-support的使用方法
  • Qt登录窗口设计
  • HTML 列表和容器元素——WEB开发系列10
  • 人工智能缺陷检测方案METIS(梅迪斯):汽车零部件检测
  • 我的世界 异地联机教程 无需公网IP、服务器
  • 利用EditPlus进行Json数据格式化
  • 机器学习系列—深入探索弗里德曼检验:非参数统计分析的利器
  • 3.MySQL面试题之Redis 和 Mysql 如何保证数据一致性?
  • 【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
  • 〔开发系列〕一次关于小程序开发的深度总结
  • css的样式优先级
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • C语言笔记(第一章:C语言编程)
  • HomeBrew常规使用教程
  • Intervention/image 图片处理扩展包的安装和使用
  • Java 网络编程(2):UDP 的使用
  • Odoo domain写法及运用
  • php中curl和soap方式请求服务超时问题
  • Sass 快速入门教程
  • Spring框架之我见(三)——IOC、AOP
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • webpack入门学习手记(二)
  • 从零开始学习部署
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 配置 PM2 实现代码自动发布
  • 三分钟教你同步 Visual Studio Code 设置
  • 设计模式走一遍---观察者模式
  • 手写双向链表LinkedList的几个常用功能
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 鱼骨图 - 如何绘制?
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • const的用法,特别是用在函数前面与后面的区别
  • Nginx实现动静分离
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​configparser --- 配置文件解析器​
  • ​Linux·i2c驱动架构​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #if和#ifdef区别
  • $jQuery 重写Alert样式方法
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (转)【Hibernate总结系列】使用举例
  • .net SqlSugarHelper
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • /etc/sudoer文件配置简析