全面解析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

更多精致内容

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/404974.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码块分类

局部代码块 public class Test {public static void main(String[] args) {{int a 10;}// 执行到此处时候,变量a已经从内存中消失了。 // System.out.println(a);} } 构造代码块 public class Test {private String name;private int age;{// 构造代码块System.out.…

GEC6818开发板的学习

1、开发板的简介 首先连接 开发板与电脑,需电脑安装串口驱动:例CH340 2、开发板的特性: 像素:800*480Pix分辨率:高,宽两个维度的像素点数目开发板色深为32位一个像素点占4个字节:分别为灰度保留位、RGB三原色各占一位3、为什么要内存映射 虽然LCD设备本质上也可以看作…

R语言:如何安装包“linkET”

自己在R语言中安装包“linkET”时报错不存在叫‘linket’这个名字的程辑包 尝试了install.packages("linkET")和BiocManager::install("linkET")两种安装办法都不行 >install.packages("linkET") WARNING: Rtools is required to build R pa…

【Java】对象与toString()方法

1.前言 了解toString之前&#xff0c;要先明白Object类是什么&#xff0c;Object是所有对象的父类。在Object类当中含有toString()方法&#xff0c;因此所有的对象也都包含有一个toString()方法。 2.toString 2.1 方法调用 toString()方法主要的作用&#xff0c;是对类与对象的…

错误信息“缺少msvcr120.dll”或“找不到msvcr120.dll”应该如何修复?几种方法快速修复

由于这个msvcr120.dll文件与应用程序的运行密切相关&#xff0c;任何与之相关的问题都可能导致应用程序无法正常运行。错误信息如“缺少msvcr120.dll”或“找不到msvcr120.dll”&#xff0c;通常出现在软件安装不正确或系统更新后。接下俩就教大家几种方法快速修复msvcr120.dll…

CentOS 7 安装流程详细教程

目录 前言1. CentOS 7 概述2. 安装环境准备2.1 硬件要求2.2 安装介质准备 3. CentOS 7 安装步骤3.1 引导安装程序3.2 选择语言和键盘布局3.3 配置安装源和软件包3.4 配置分区3.5 设置网络和主机名3.6 设置时间和日期3.7 设置 root 密码和创建用户3.8 开始安装并完成配置 4. 安装…

Cocos Creator2D游戏开发(14)---CocosCreator常用组件详解

Canvas RenderRoot2D 组件所在的节点是 2D 渲染组件数据收集的入口,而 Canvas&#xff08;画布&#xff09; 组件继承自 RenderRoot2D 组件&#xff0c;所以 Canvas 组件也是数据收集入口。所有 2D 渲染元素都必须作为 RenderRoot2D 的子节点才能被渲染。 Canvas还作为屏幕适配…

用基础项目来理解spring的作用

简介 spring官方的解释过于专业化&#xff0c;初学者可能比较难懂&#xff0c;接下来我将通过一个最基础的Java项目来尽可能的展示spring中的作用及spring的底层是如何来实现的。 项目结构 该项目是一个简单的JavaSE项目&#xff0c;没有maven或者tomcat等其他。只在控制台进…

《黑神话悟空》2024官方配置要求一览

黑神话悟空配置要求 1080P 高画质推荐6650xt和4060以上的显卡高画质 全景光追推荐4060 2k 高画质推荐4060ti/7700x以上的显卡 高画质全景光追推荐4070 4K 高画质推荐4070s起步 高画质全景光追推存4080S 一、官方配置要求一览 1、最低配置: 需要 64 位处理器和操作系…

什么是逃逸分析

如何快速判断是否逃逸就看方法内new的对象实体是否能够被外部方法进行调用 什么是逃逸分析 在java虚拟机中&#xff0c;对象是在java堆中分配内存的&#xff0c;这是一个普遍的常识。但是&#xff0c;有一种特殊情况&#xff0c;那就是如果经过逃逸分析&#xff08;escape an…

[HDCTF 2023]Welcome To HDCTF 2023

方法一&#xff1a;找个炸弹死掉&#xff0c;flag就出现 方法二&#xff1a;查看页面源码&#xff0c;发现底部assets/js/game.js 复制后访问看到jsfuck编码 复制到控制台查看flag

功能测试与自动化测试详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 什么是自动化测试? 自动化测试是指利用软件测试工具自动实现全部或部分测试&#xff0c;它是软件测试的一个重要组成 部分&#xff0c;能完成许多手工测试无法实…

【数据结构入门】二叉树之堆的实现

文章目录 前言一、树1.1 树的概念1.2 树的相关概念 二、二叉树2.1 二叉树的概念2.2 特殊的二叉树2.3 二叉树的性质 三、堆3.1 堆的概念3.2 堆的性质3.3 堆的存储3.4 堆的实现3.4.1 堆的初始化3.4.2 堆的销毁3.4.1 堆向上调整算法3.4.2 堆向下调整算法3.4.3 堆的创建3.4.4 堆的插…

ID3算法详解:构建决策树的利器

目录 引言 ID3算法概述 算法基础 信息熵 ​编辑 信息增益 ID3算法步骤 决策树 概念: 核心&#xff1a; 节点 1. 根节点 2. 非叶子节点 3. 叶子节点 引言 在机器学习领域&#xff0c;决策树是一种非常流行的分类和回归方法。其中&#xff0c;ID3算法作为决策树算法…

尚品汇-网关过滤用户请求、登录流程(三十五)

目录&#xff1a; &#xff08;1&#xff09;用户认证与服务网关整合 &#xff08;2&#xff09;server-gateway网关配置 &#xff08;3&#xff09;在服务网关中判断用户登录状态 &#xff08;4&#xff09;登录流程 &#xff08;1&#xff09;用户认证与服务网关整合 实…

百度 测试|测试开发 面试真题|面经 汇总

百度测开 开发测试工程师 提前批一二三面面经 事业群&#xff1a;MEG base&#xff1a;北京 一面&#xff1a;2022.8.12 时长&#xff1a;50min 自我介绍 个人项目&#xff0c;我的项目是围绕着学校课程的项目来的&#xff0c;面试官就让我介绍这门课讲了些什么 &#xf…

构建实时数据仓库:流式处理与实时计算技术解析

目录 一、流式处理 请求与响应 批处理 二、实时计算 三、Lambda架构 Lambda架构的缺点 四、Kappa架构 五、实时数据仓库解决方案 近年来随着业务领域的不断拓展&#xff0c;尤其像互联网、无线终端APP等行业应用的激增&#xff0c;产生的数据量呈指数级增长&#xff0c;对海量数…

前端开发攻略---彻底弄懂跨域解决方案

目录 1、浏览器的同源策略 1.1 源 1.2 同源与非同源 1.3 同源请求与非同源请求 2、跨域受到的限制 3、注意点 4、CORS解决Ajax跨域问题 4.1 CORS概述 4.2 CORS解决简单请求跨域 4.3 简单请求与复杂请求 4.4 CORS解决复杂请求跨域 4.5 借助CORS库快速完成配置 5、JS…

计算机毕业设计选什么题目好? springboot java沉浸式戏曲文化体验系统

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

【生物特征识别论文分享】基于深度学习的掌纹掌静脉识别

&#xff08;待更新&#xff09;基于深度学习的生物特征识别&#xff08;手掌静脉、手背静脉、手指静脉、掌纹、人脸等&#xff09;论文模型总结 。具体方法包括&#xff1a;基于特征表征、基于传统网络设计与优化、基于轻量级网络设计与优化、基于Transformer设计与优化、基于…