宝塔下安装 Crawlab 教程

简介

  • Crawlab 是基于 Golang 的分布式爬虫管理平台,支持多种编程语言以及多种爬虫框架。
  • 项目自 2019 年 3 月份上线以来受到爬虫爱好者们和开发者们的好评,超过一半的使用者表示已经在用 Crawlab 作为公司的爬虫管理平台。经过近数月的迭代,我们陆续上线了 定时任务数据分析可配置爬虫SDK消息通知Scrapy 支持Git 同步 等功能,将 Crawlab 打造得更加实用,更加全面,能够真正帮助用户解决爬虫管理困难的问题。
  • Crawlab 主要解决的是大量爬虫管理困难的问题,例如需要监控上百个网站的参杂 scrapy 和 selenium 的项目不容易做到同时管理,而且命令行管理的成本非常高,还容易出错。Crawlab 支持任何语言和任何框架,配合任务调度、任务监控,很容易做到对成规模的爬虫项目进行有效监控管理。

准备安装

  • 安装宝塔,然后在宝塔下安装 MongoDB 和 Redis(0.6.x 版本无需安装)
  • 配置 MongoDB 和 Redis 可以远程访问,并设置密码,配置完毕记得重载配置
  • 在安全组或防火墙中放行需要使用的端口,如:6379、27017、8080

安装方法有很多,比如 Docker 安装部署Kubernetes 部署直接部署开发模式多节点部署专业版部署,这里我只讲 Docker 安装部署,因为这应该是部署应用的最方便也是最节省时间的方式了。

  1. 安装 Docker

    宝塔用户,可以直接在 软件商店 里搜索 Docker 管理器 来安装 Docker。

  2. 配置 Docker 源

    • 我们已经在 DockerHub 上构建了 Crawlab 的镜像,开发者只需要将其 pull 下来使用。在 pull 镜像之前,我们需要配置一下镜像源。因为我们在墙内,使用原有的镜像源速度非常感人,因此将使用 DockerHub 在国内的加速器。
    • 宝塔用户可以直接在 Docker 管理器 里找到 镜像管理,然后点击 镜像加速,最后将以下内容任选其一填入 加速地址 里保存即可!
      1
      2
      3
      # 镜像加速
      https://hub-mirror.c.163.com
      https://mirror.baidubce.com
    • 云服务商
    • 不再提供服务的镜像
      1
      2
      3
      https://dockerhub.azk8s.cn	已转为私有
      https://reg-mirror.qiniu.com
      https://registry.docker-cn.com
  3. 下载 Crawlab 镜像

    • Crawlab v0.5.x
      1
      docker pull tikazyq/crawlab:latest
    • Crawlab v0.6.x
      1
      docker pull crawlabteam/crawlab
    • 执行以上命令将 Crawlab 的镜像下载下来。镜像比较大,因此下载需要几分钟时间。
  4. 安装 Docker-Compose

    安装 docker-compose 其实比较简单,在安装了 pip 的情况下 (Python 3),执行以下命令。

    1
    pip install docker-compose

    为了方便起见,我们用 docker-compose 的方式来部署。docker-compose 是一个集群管理方式,可以利用名为 docker-compose.ymlyaml 文件来定义需要启动的容器,可以是单个,也可以(通常)是多个的。

  5. 配置并启动 Crawlab

    在你的网站站点根目录下新建 docker-compose.yml,并填入以下内容:

    • Crawlab v0.5.x

      • 主节点
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        version: '3.3'
        services:
        master:
        image: tikazyq/crawlab:latest
        container_name: crawlab_master
        environment:
        CRAWLAB_SERVER_MASTER: "Y"
        # MongoDB配置
        CRAWLAB_MONGO_HOST: "host"
        CRAWLAB_MONGO_PORT: "27017"
        CRAWLAB_MONGO_DB: "crawlab_master"
        CRAWLAB_MONGO_USERNAME: "username"
        CRAWLAB_MONGO_PASSWORD: "password"
        CRAWLAB_MONGO_AUTHSOURCE: "admin"
        # Redis配置
        CRAWLAB_REDIS_ADDRESS: "host"
        CRAWLAB_REDIS_PORT: "6379"
        CRAWLAB_REDIS_DATABASE: "15"
        CRAWLAB_REDIS_PASSWORD: "password"
        # 节点注册方式
        CRAWLAB_SERVER_REGISTER_TYPE: "ip"
        CRAWLAB_SERVER_REGISTER_IP: "host"
        ports:
        - "8080:8080" # frontend
        volumes:
        - "/var/crawlab/log:/var/logs/crawlab" # 日志持久化
      • 工作节点
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        version: '3.3'
        services:
        master:
        image: tikazyq/crawlab:latest
        container_name: crawlab_worker
        environment:
        CRAWLAB_SERVER_MASTER: "N"
        # MongoDB配置
        CRAWLAB_MONGO_HOST: "主节点host"
        CRAWLAB_MONGO_PORT: "27017"
        CRAWLAB_MONGO_DB: "crawlab_worker"
        CRAWLAB_MONGO_USERNAME: "username"
        CRAWLAB_MONGO_PASSWORD: "password"
        CRAWLAB_MONGO_AUTHSOURCE: "admin"
        # Redis配置
        CRAWLAB_REDIS_ADDRESS: "主节点host"
        CRAWLAB_REDIS_PORT: "6379"
        CRAWLAB_REDIS_DATABASE: "15"
        CRAWLAB_REDIS_PASSWORD: "password"
        # 节点注册方式
        CRAWLAB_SERVER_REGISTER_TYPE: "ip"
        CRAWLAB_SERVER_REGISTER_IP: "工作节点host"
        volumes:
        - "/var/crawlab/log:/var/logs/crawlab" # 日志持久化

        如果没有额外的服务器用作工作节点可以只写 主节点

    • Crawlab v0.6.x

      • 主节点
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        version: '3.3'
        services:
        master:
        image: crawlabteam/crawlab
        container_name: crawlab_master
        restart: always
        environment:
        CRAWLAB_NODE_MASTER: "Y"
        # MongoDB配置
        CRAWLAB_MONGO_HOST: "host"
        CRAWLAB_MONGO_PORT: "27017"
        CRAWLAB_MONGO_DB: "crawlab"
        CRAWLAB_MONGO_USERNAME: "username"
        CRAWLAB_MONGO_PASSWORD: "password"
        CRAWLAB_MONGO_AUTHSOURCE: "admin"
        volumes:
        - "/opt/crawlab/master:/data" # 持久化 crawlab 数据
        ports:
        - "8080:8080" # 开放 api 端口
        - "9666:9666" # 开放 grpc 端口
      • 工作节点
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        version: '3.3'
        services:
        worker:
        image: crawlabteam/crawlab
        container_name: crawlab_worker
        restart: always
        environment:
        CRAWLAB_NODE_MASTER: "N"
        CRAWLAB_GRPC_ADDRESS: "主节点host:9666"
        CRAWLAB_FS_FILER_URL: "http://主节点host:8080/api/filer"
        volumes:
        - "/opt/crawlab/master:/data" # 持久化 crawlab 数据

        如果没有额外的服务器用作工作节点可以只写 主节点

    • 注意事项

      • 安装宝塔的时候需要同时安装了 MongoDB 和 Redis (0.5.x 需要)
      • host 替换为你的主机 IP 地址,如:127.0.0.1
      • password 替换为你的数据库密码
      • 如果仅有一台服务器可以只配置主节点,如有多台服务器时可以在非主节点的服务器上配置工作节点
    • 验证 docker-compose

      配置完 docker-compose.yml 后,可以运行 docker-compose ps 来测试是否安装正常。正常的应该是显示如下内容:

      1
      2
      Name   Command   State   Ports
      ------------------------------

      这是没有 Docker 容器在运行的情况,也就是空列表。如果有容器在运行,可以看到其对应的信息。

    • 启动 Crawlab

      安装完 docker-compose 和配置好 docker-compose.yml 后,只需要运行以下命令就可以启动 Crawlab。

      1
      docker-compose up -d

      启动 Crawlab 后,在浏览器中输入 http://localhost:8080 就可以看到界面。
      停止容器:docker-compose stop

  6. 常用命令

    1
    2
    3
    4
    5
    6
    7
    8
    # 停止容器
    docker-compose stop

    # 关闭并删除 Docker 容器
    docker-compose down

    # 启动 Docker 容器
    docker-compose up -d
  7. 配置 SSL

    对于宝塔用户可以通过配置反向代理的方式实现通过 https://+域名 的方式访问 Crawlab,具体步骤如下:

    1. 使用你的域名在宝塔上添加站点
    2. 然后在站点目录下创建并配置 docker-compose.yml 文件
    3. 启动站点 docker-compose up -d
    4. 配置反向代理
      反向代理
    5. 使用域名访问站点
    6. 温馨提示:为了安全在登录 Crawlab 后台后记得修改原始登录密码,用户名可以在 MongoDB 数据库中的 users 集合里修改。
    7. Bug 提示:如果在 MongoDB 数据库修改了用户名,那么数据库里过一会儿会自动重新生成最原始的账户和密码 (用户:admin;密码:admin),记得把这个自动生成的内容删除!

参考链接