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

news2024/11/24 20:47:05

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.coloradmin.cn/o/2045843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElasticSearch读写性能调优

文章目录 ES写入数据过程ES读取数据的过程写数据底层原理提升集群读取性能数据建模优化分片 提升写入性能的方法服务器端优化写入性能建模时的优化降低Translog写磁盘的频率&#xff0c;但是会降低容灾能力分片设定调整Bulk 线程池和队列 ES写入数据过程 客户端选择一个node发…

Linux系统编程:进程间通信 1:管道

1.进程间的互相通信的方式 进程间互相通信的方式共有7种&#xff1a; &#xff08;1&#xff09;无名管道&#xff08;同主机&#xff09; &#xff08;2&#xff09;有名管道&#xff08;同主机&#xff09; &#xff08;3&#xff09;信号&#xff08;同主机&#xff09;…

大语言模型(LLM)构建产品的一年经验总结【干货长文】

这是一份涵盖战术、运营和战略方面的大语言模型产品成功建设的实用指南。 现在是构建大型语言模型&#xff08;LLM&#xff09;的激动人心的时刻。在过去的一年里&#xff0c;LLM已经变得足够好&#xff0c;可以用于实际应用。而且它们每年都在变得更好更便宜。伴随着社交媒体上…

成功转行软件测试工程师,年薪30W+,经验总结都在这!

这是给转行做软件测试的小白的参考&#xff0c;无论是从零开始&#xff0c;或者是转行的朋友来说&#xff0c;这都是值得一看的&#xff0c;也是可以作为一种借鉴吧。 而且我决定转行IT&#xff08;互联网&#xff09;行业&#xff0c;其实理由也很简单&#xff0c;不用动体力…

全网爆火的从零到一落地接口自动化测试

前段时间写了一系列自动化测试相关的文章&#xff0c;当然更多的是方法和解决问题的思路角度去阐述我的一些观点。结合我自己实践自动化测试的一些经验以及个人理解&#xff0c;这篇文章来聊聊新手如何从零到一落地实践接口自动化测试。 为什么要做接口测试 测试理念的演变 早…

awesome-react-native 收集最好的React Native库,工具,教程,文章(上篇)

image 分类 分类 会议 连锁反应 - 波特兰&#xff0c;或者美国React Native EU - 弗罗茨瓦夫&#xff0c;波兰React Alicante - 西班牙阿利坎特ReactNext - 以色列特拉维夫React Berlin - 柏林&#xff0c;德国 用品 参考HOWTO文档什持续集成内幕 组件 UI 导航 导航/路由文章…

Aerospike学习笔记

1 概述 Aerospike 是一个分布式、可扩展的数据库。该架构具有三个关键目标&#xff1a; 为网络规模的应用程序创建灵活、可扩展的平台。提供传统数据库所期望的稳健性和可靠性&#xff08;如 ACID&#xff09;。以最少的人工参与提供运营效率。 文档链接&#xff1a;https://d…

【Linux —— 理解pthread库和底层逻辑】

Linux —— 理解pthread库和pthread_t 理解pthread库pthread库是一个动态库底层逻辑 LWPpthread_tpthread_t的概念pthread_t 的实现pthread_t 与 LWP 的关系 独立的栈空间管理 理解pthread库 pthread库是一个动态库 使用下面指令可以查找的系统目录下的库信息 ls /lib/x86_6…

海康VisionMaster使用学习笔记2-相机取图及参数设置

相机取图及参数设置 1. 关联相机-相机管理界面 除了以上两类外,第三方相机都可以通过全局相机进行连接 2. 相机参数设置 相机连接 跨网段IP,枚举 图像缓存数量 实时取流,断线重连 只有支持组播的相机才可以实时取流 触发设置 触发源 LINE0 可以保护电路 LINE2 可配置输入输出…

笔记(day21) 多线程以及锁的概念(超级完整版)

一、 多线程 1.1 程序,进程,线程 程序:一堆命令的集合,完成某个特定任务,是静态的,保存在硬盘中 进程:是程序的一次执行过程,就是把程序载入内存中执行,就是进程,是动态的 线程:是进程进一步细化,是程序内部的一条执行分支 如果一个进程同一时间执行多个线程,就是支持多线程 我…

简单测试AOP五种增强执行时机

1. 目标方法类&#xff0c;spring代理bean Component public class Test {public void test(){System.out.println("test 目标方法");}public void testException(){throw new RuntimeException();} } 2. 配置类 Configuration ComponentScan EnableAspectJAutoPr…

查询满足连续任意30天的全量交易的多个商户

需求说明&#xff1a; 先说表结构把&#xff0c;就是一张订单表存了商户号和其他相关信息&#xff0c;现在要查询这个订单表中以商户为主体的连续交易&#xff0c;也就是每天产生至少一笔订单的商户才算连续&#xff0c;不知道看到的小伙伴有没有什么想法和头绪&#xff0c;在一…

【C++进阶】map与set的封装实践

文章目录 map和setmapmap的框架迭代器operator()operator--()operator()和operator!()operator*()operator->() insertbegin()end()operator[] ()map的所有代码&#xff1a; set的封装迭代器的封装总结 map和set 通过观察stl的底层我们可以看见&#xff0c;map和set是通过红…

ubuntu16.04安装ibus拼音 输入法

前言 开始尝试搜狗输入&#xff0c;发现问题很多&#xff0c;放弃。网上说ibus比较稳定&#xff0c;决定安装ibus输入法。 步骤 安装ibus&#xff0c;使用如下命令, 安装完重启系统&#xff0c;使ibus生效&#xff1b; sudo apt install ibus ibus-pinyin ibus-table ibus-…

maven项目删除pom文件的依赖仍存留在项目中的解决方案【已解决】

前言 使用了pagehelper和mybatisplus的分页插件&#xff0c;起冲突了&#xff0c;想着注释掉pagehelper然后刷新maven&#xff0c;发现一直存留 mlgbz的 试了好多方法&#xff0c;什么缓存乱七八糟的&#xff0c;我以为出bug了 解决

Fiddle抓手机app的包

前言 本次文章讲述的是&#xff0c;fiddle获取手机代理&#xff0c;从而获取手机app的http、https请求&#xff01; 一.下载安装汉化Fiddle 1.点击Fiddler官网下载链接&#xff1a;Download Fiddler Web Debugging Tool for Free by Telerik 2.直接运行&#xff0c;选择自己需…

CUDA C++ 编程指南学习

CUDA C 编程指南 (nvidia.com)https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html 2. 编程模型 2.1. 内核 CUDA C 扩展了 C&#xff0c;允许程序员定义 C 函数&#xff0c;称为内核&#xff0c;当被调用时&#xff0c;N 个不同的 CUDA 线程并行执行 N 次&am…

2023卫星视频综述论文Recent Advances in Intelligent Processing of Satellite Video

2023卫星视频综述论文Recent Advances in Intelligent Processing of Satellite Video 1.摘要2.引言3. 文章的定量分析4 难点与挑战5 方法论系统A. 卫星视频观察的特点B. 卫星视频目标跟踪与运动估计C. 卫星视频目标检测D. 卫星视频超分辨率 (VSR)E. 卫星视频目标分割&#xff…

Idea新建Spring Initializr项目文件哪些可删

​ .gitignore 用git做版本控制时 用这个文件控制那些文件或文件夹 不被提交&#xff08;不用git的话可删除 没影响&#xff09;HELP.md md是一种文档格式 这个就是你项目的帮助文档&#xff08;可删除 没影响&#xff09; mvnw linux上处理mevan版本兼容问题的脚本&#xff0…

企业高性能web服务器

web服务器介绍 Apache HTTP Server&#xff1a;也称为Apache&#xff0c;是一个开源的HTTP服务器&#xff0c;目前是全球使用最广泛的Web服务器 Nginx&#xff1a;Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP服务器 Microsoft Internet Inform…