0.6.0beta目前有问题,建议稳定版出了再用,稳定版出之前先用0.5.x。
Crawlab0.6.0-beta.20211224按照0.6.0文档快速开始中的步骤(需提前安装Docker):
- docker pull crawlabteam/crawlab
- # docker pull mongo 后面设置了使用自己的MongoDB,不用Crawlab的,所以这一步不用装
- pip install docker-compose
- 在作为主节点的服务器创建配置文件并命名为docker-compose.yml,然后输入以下内容。下面的文件内容并不是快速开始中的,而是Docker - 外部 MongoDB中的,具体在下面代码第一行的注释。另外,CRAWLAB_MONGO_URI和CRAWLAB_MONGO_AUTHMECHANISM和CRAWLAB_MONGO_AUTHMECHANISMPROPERTIES不知道有什么用,所以我注释掉了
-
# from https://docs-next.crawlab.cn/zh/guide/installation/docker.html#%E5%A4%96%E9%83%A8-mongodb,这个文档是Crawlab0.6.0的文档,这个文档的链接来自https://github.com/crawlab-team/crawlab英文README中超链接Documentation (v0.6-beta) # 外部 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 (单独设置) CRAWLAB_MONGO_HOST: your host # mongo host address CRAWLAB_MONGO_PORT: '27017' # mongo port CRAWLAB_MONGO_DB: 'crawlab' # mongo database,没有数据库会自动创建 CRAWLAB_MONGO_USERNAME: your username # mongo username CRAWLAB_MONGO_PASSWORD: your password # mongo password CRAWLAB_MONGO_AUTHSOURCE: 'admin' # mongo auth source # CRAWLAB_MONGO_AUTHMECHANISM: # mongo auth mechanism # CRAWLAB_MONGO_AUTHMECHANISMPROPERTIES: # mongo auth mechanism properties volumes: - "/opt/crawlab/master:/data" # 持久化 crawlab 数据 ports: - "8080:8080" # 开放 api 端口 - "9666:9666" # 开放 grpc 端口 - 在作为工作节点的服务器创建docker-compose.yml,然后输入以下内容。工作节点可能需要有公网IP,因我将腾讯云服务器作为主节点,将本地虚拟机里的CentOS作为工作节点,然后Crawlab页面中不显示虚拟机中的工作节点,只显示腾讯云服务器中的主节点;再另外找一台服务器作为工作节点,Crawlab页面中就显示这个新服务器的工作节点了。
-
# 工作节点 version: '3.3' services: worker: image: crawlabteam/crawlab container_name: crawlab_worker restart: always environment: CRAWLAB_NODE_MASTER: N # N: 工作节点 CRAWLAB_GRPC_ADDRESS:
:9666 # grpc address。需将 替换为主节点IP,并保证其能被工作节点访问 CRAWLAB_FS_FILER_URL: http:// :8080/api/filer # seaweedfs api volumes: - "/opt/crawlab/master:/data" # 持久化 crawlab 数据 - 分别在主节点和工作节点的yml所在文件夹中执行docker-compose up -d以启动容器,如果出错可以执行docker-compose down关闭并删除当前容器,然后重试前面的步骤。另外docker-compose stop是停止容器,docker-compose ps是列出容器和容器状态。
- 浏览器打开主节点ip:8080,进入Crawlab页面,默认帐号密码都是admin。由于工作节点是通过端口8080(API)以及9666(gRPC)来连接主节点的,您需要保证它们都是处于开放状态,没有被主节点防火墙所禁用。
- 在Crawlab页面左侧列表中用户处修改密码为f9j4R1S9r3k4D8v2(随便打的密码),页面右上角可设置语言
不建议将用户名admin修改为其他名字,目前0.6.0和0.5.x的社区版有一个问题,修改名字后即便在MongoDB中手动删除admin用户,然后只要一重启Docker,就会自动再生成admin用户,密码还是默认的admin,这样别人就可以用admin登录Crawlab页面。
在Crawl中运行单文件爬虫,就是只有一个py文件的爬虫,运行完成后不知道为什么文件里的代码会被清空;运行scrapy没这个问题。
Crawlab0.5.1总体步骤大致和0.6.0beta相同。
- docker pull tikazyq/crawlab:latest,和0.6.0beta不同
- pip install docker-compose
- 在作为主节点的服务器创建配置文件并命名为docker-compose.yml,然后输入以下内容。
-
# from https://docs.crawlab.cn/zh/Installation/Docker.html中安装并启动Crawlab,这个文档的链接来自https://github.com/crawlab-team/crawlab英文README中超链接Documentation # 以下内容只保留了原文档中master部分,删除了其余内容,同时删除了master中的depends_on,它是启用容器中的数据库,而我要用我自己的数据库,另外还开启了日志持久化,文档中建议生产环境开启它。 # 另外,原文档中将主节点和工作节点的信息写在同一个yml文件中,我觉得如果只有一台机器,那么在一台机器中建立两个节点没有意义,所以主节点的yml我只保留了主节点的信息。这点参考了0.6.0beta的节点配置,它就是主节点和工作节点用不同的文件配置的。 version: '3.3' services: master: image: tikazyq/crawlab:latest container_name: master environment: # CRAWLAB_API_ADDRESS: "https://
: " # backend API address 后端 API 地址. 适用于 https 或者源码部署 CRAWLAB_SERVER_MASTER: "Y" # whether to be master node 是否为主节点,主节点为 Y,工作节点为 N CRAWLAB_MONGO_HOST: your host # MongoDB host address MongoDB 的地址,在 docker compose 网络中,直接引用服务名称 CRAWLAB_MONGO_PORT: "27017" # MongoDB port MongoDB 的端口 CRAWLAB_MONGO_DB: "crawlab" # MongoDB database MongoDB 的数据库 CRAWLAB_MONGO_USERNAME: your username # MongoDB username MongoDB 的用户名 CRAWLAB_MONGO_PASSWORD: your password # MongoDB password MongoDB 的密码 CRAWLAB_MONGO_AUTHSOURCE: "admin" # MongoDB auth source MongoDB 的验证源 CRAWLAB_REDIS_ADDRESS: your host # Redis host address Redis 的地址,在 docker compose 网络中,直接引用服务名称 CRAWLAB_REDIS_PORT: "6379" # Redis port Redis 的端口 CRAWLAB_REDIS_DATABASE: your redis database index # Redis database Redis 的数据库 CRAWLAB_REDIS_PASSWORD: your password # Redis password Redis 的密码 # CRAWLAB_LOG_LEVEL: "info" # log level 日志级别. 默认为 info # CRAWLAB_LOG_ISDELETEPERIODICALLY: "N" # whether to periodically delete log files 是否周期性删除日志文件. 默认不删除 # CRAWLAB_LOG_DELETEFREQUENCY: "@hourly" # frequency of deleting log files 删除日志文件的频率. 默认为每小时 CRAWLAB_SERVER_REGISTER_TYPE: "ip" # node register type 节点注册方式. 默认为 mac 地址,也可设置为 ip(防止 mac 地址冲突) CRAWLAB_SERVER_REGISTER_IP: 主节点ip # node register ip 节点注册IP. 节点唯一识别号,只有当 CRAWLAB_SERVER_REGISTER_TYPE 为 "ip" 时才生效 # CRAWLAB_TASK_WORKERS: 8 # number of task executors 任务执行器个数(并行执行任务数) # CRAWLAB_RPC_WORKERS: 16 # number of RPC workers RPC 工作协程个数 # CRAWLAB_SERVER_LANG_NODE: "Y" # whether to pre-install Node.js 预安装 Node.js 语言环境 # CRAWLAB_SERVER_LANG_JAVA: "Y" # whether to pre-install Java 预安装 Java 语言环境 # CRAWLAB_SETTING_ALLOWREGISTER: "N" # whether to allow user registration 是否允许用户注册 # CRAWLAB_SETTING_ENABLETUTORIAL: "N" # whether to enable tutorial 是否启用教程 # CRAWLAB_NOTIFICATION_MAIL_SERVER: smtp.exmaple.com # STMP server address STMP 服务器地址 # CRAWLAB_NOTIFICATION_MAIL_PORT: 465 # STMP server port STMP 服务器端口 # CRAWLAB_NOTIFICATION_MAIL_SENDEREMAIL: admin@exmaple.com # sender email 发送者邮箱 # CRAWLAB_NOTIFICATION_MAIL_SENDERIDENTITY: admin@exmaple.com # sender ID 发送者 ID # CRAWLAB_NOTIFICATION_MAIL_SMTP_USER: username # SMTP username SMTP 用户名 # CRAWLAB_NOTIFICATION_MAIL_SMTP_PASSWORD: password # SMTP password SMTP 密码 ports: - "8080:8080" # frontend port mapping 前端端口映射 volumes: - "/var/crawlab/log:/var/logs/crawlab" # log persistent 日志持久化 - 在作为工作节点的服务器创建docker-compose.yml,然后输入以下内容。工作节点需要有公网IP。
-
# 以下内容复制的主节点的,删除了主节点中注释掉的项,修改了container_name和CRAWLAB_SERVER_MASTER和CRAWLAB_SERVER_REGISTER_IP,注释掉了ports。这么做的原因是参考了https://docs.crawlab.cn/zh/Installation/MultiNode.html中部署工作节点部分 version: '3.3' services: master: image: tikazyq/crawlab:latest container_name: worker environment: CRAWLAB_SERVER_MASTER: "N" # whether to be master node 是否为主节点,主节点为 Y,工作节点为 N CRAWLAB_MONGO_HOST: your host # MongoDB host address MongoDB 的地址,在 docker compose 网络中,直接引用服务名称 CRAWLAB_MONGO_PORT: "27017" # MongoDB port MongoDB 的端口 CRAWLAB_MONGO_DB: "crawlab" # MongoDB database MongoDB 的数据库 CRAWLAB_MONGO_USERNAME: your username # MongoDB username MongoDB 的用户名 CRAWLAB_MONGO_PASSWORD: your password # MongoDB password MongoDB 的密码 CRAWLAB_MONGO_AUTHSOURCE: "admin" # MongoDB auth source MongoDB 的验证源 CRAWLAB_REDIS_ADDRESS: your host # Redis host address Redis 的地址,在 docker compose 网络中,直接引用服务名称 CRAWLAB_REDIS_PORT: "6379" # Redis port Redis 的端口 CRAWLAB_REDIS_DATABASE: your redis database index # Redis database Redis 的数据库 CRAWLAB_REDIS_PASSWORD: your password # Redis password Redis 的密码 CRAWLAB_SERVER_REGISTER_TYPE: "ip" # node register type 节点注册方式. 默认为 mac 地址,也可设置为 ip(防止 mac 地址冲突) CRAWLAB_SERVER_REGISTER_IP: 当前工作节点ip # node register ip 节点注册IP. 节点唯一识别号,只有当 CRAWLAB_SERVER_REGISTER_TYPE 为 "ip" 时才生效 # 工作节点不需要对外暴露端口 # ports: # - "8080:8080" # frontend port mapping 前端端口映射 volumes: - "/var/crawlab/log:/var/logs/crawlab" # log persistent 日志持久化
- 分别在主节点和工作节点的yml所在文件夹中执行docker-compose up -d以启动容器,同0.6.0beta。
- 浏览器打开主节点ip:8080,进入Crawlab页面,默认帐号密码都是admin。0.5.1没有0.6.0beta中的9666端口
- 在Crawlab页面左侧列表中用户处修改密码为f9j4R1S9r3k4D8v2(随便打的密码)
Crawlab0.5.1添加爬虫时,最好手动填上结果,否则爬虫运行结束后,任务详情中虽然有日志,但可能结果中没数据,也就是数据库中也没数据。若填上了也没数据,可以爬虫结束后等几秒再刷新页面。更新:如果没手动填上结果,数据可能在一个叫undefined的集合中,虽然它说了不写的话默认放到results_
Crawlab0.5.1爬虫运行结束后,概览中的结果数可能不对,最好去数据库中查看数据量对不对,或者去结果中看最后一页的数据量对不对(因默认每页展示10条)。我实际爬了100条数据,概览中的结果数显示80,但数据库中是100条,结果中最后一页(即第十页)的数据是10条(说明确实爬到完整数据了)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)