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

    2. 安装 Anaconda
      下载完成后,运行以下命令开始安装:

      bash Anaconda3-2023.07-Linux-x86_64.sh

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

    安装路径建议使用默认路径(按 Enter 键确认)。
    3. 配置环境变量
    安装完成后,建议添加 Anaconda 到系统环境变量中。在终端中运行以下命令:

    复制代码
    source ~/.bashrc

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

    复制代码
    export PATH="$HOME/anaconda3/bin:$PATH"

    保存文件后,运行:

    复制代码
    source ~/.bashrc

    二、基本使用

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

      conda --version

    如果返回 conda 的版本号,则表示安装成功。
    2. 更新 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]

      python 复制代码
      [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行左右改成这样即可

        python 复制代码
            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

更多精致内容


相关推荐
纪莫5 小时前
Kafka如何保证「消息不丢失」,「顺序传输」,「不重复消费」,以及为什么会发生重平衡(reblanace)
java·分布式·后端·中间件·kafka·队列
想躺平的咸鱼干5 小时前
RabbitMQ 基础
java·分布式·rabbitmq·idea·amqp·消息转换器·交换机模型
KaiwuDB7 小时前
KWDB 分布式架构探究——数据分布与特性
数据库·分布式
华仔啊8 小时前
乐观锁、悲观锁和分布式锁,你用对了吗?
java·分布式
艾希逐月1 天前
分布式唯一 ID 生成方案
分布式
齐木卡卡西在敲代码1 天前
kafka的pull的依据
分布式·kafka
lllsure1 天前
RabbitMQ 基础
分布式·rabbitmq
DN金猿1 天前
rabbitmq发送的延迟消息时间过长就立即消费了
分布式·rabbitmq
程序员不迷路1 天前
Kafka学习
分布式·kafka
北i1 天前
ZooKeeper 一致性模型解析:线性一致性与顺序一致性的平衡
分布式·zookeeper·云原生