宝塔下安装Crawlab教程

  • Crawlab 是强大的 网络爬虫管理平台(WCMP),它能够运行多种编程语言(包括 Python、Go、Node.js、Java、C#)或爬虫框架(包括 Scrapy、Colly、Selenium、Puppeteer)开发的网路爬虫。它能够用来运行、管理和监控网络爬虫,特别是对可溯性、可扩展性以及稳定性要求较高的生产环境。
  • Crawlab 项目自 2019 年 3 月开始一直在不断迭代,并且经历了多次大的更新。它最初是用来解决调度和运行大量爬虫时出现的管理问题。随着大量的优化和新功能加入,Crawlab 越来越受到开发者社区的欢迎,尤其是网路爬虫工程师。

准备安装

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

    宝塔用户,可以直接在 软件商店 里搜索 Docker管理器 来安装Docker。
    宝塔新版本自带 Docker ,无需手动安装,可以直接使用!✨

  2. 下载 Crawlab 镜像

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

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

    1
    pip install docker-compose

    新版本宝塔默认已经安装,无需手动安装!🎉

  4. 配置并启动 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
        21
        22
        23
        24
        25
        26
        # 外部 MongoDB 的主节点
        version: '3.3'
        services:
        master:
        image: crawlabteam/crawlab
        container_name: crawlab_master
        restart: always
        environment:
        CRAWLAB_NODE_MASTER: "Y" # Y: 主节点
        CRAWLAB_MONGO_URI: "<mongo_uri>" # mongo uri (单独设置)
        CRAWLAB_MONGO_HOST: "<mongo_host>" # mongo host address
        CRAWLAB_MONGO_PORT: "<mongo_port>" # mongo port
        CRAWLAB_MONGO_DB: "<mongo_db>" # mongo database
        CRAWLAB_MONGO_USERNAME: "<mongo_username>" # mongo username
        CRAWLAB_MONGO_PASSWORD: "<mongo_password>" # mongo password
        CRAWLAB_MONGO_AUTHSOURCE: "<mongo_auth_source>" # mongo auth source
        CRAWLAB_MONGO_AUTHMECHANISM: "<mongo_auth_mechanism>" # mongo auth mechanism
        CRAWLAB_MONGO_AUTHMECHANISMPROPERTIES: "<mongo_auth_mechanism_properties>" # mongo auth mechanism properties
        volumes:
        - "/opt/.crawlab/master:/root/.crawlab" # 持久化 crawlab 元数据
        - "/opt/crawlab/master:/data" # 持久化 crawlab 数据
        - "/var/crawlab/log:/var/log/crawlab" # 持久化 crawlab 任务日志
        ports:
        - "8080:8080" # 开放 api 端口
        - "9666:9666" # 开放 grpc 端口

      • 工作节点
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        # 工作节点
        version: '3.3'
        services:
        worker:
        image: crawlabteam/crawlab
        container_name: crawlab_worker
        restart: always
        environment:
        CRAWLAB_NODE_MASTER: "N" # N: 工作节点
        CRAWLAB_GRPC_ADDRESS: "<master_node_ip>:9666" # grpc address
        CRAWLAB_FS_FILER_URL: "http://<master_node_ip>:8080/api/filer" # seaweedfs api
        volumes:
        - "/opt/.crawlab/worker:/root/.crawlab" # 持久化 crawlab 元数据
        - "/opt/crawlab/worker:/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

  5. 常用命令

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

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

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

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

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

参考链接

本文结束 感谢您的阅读
正在加载今日诗词....