scrapy爬虫Linux部署anaconda+Supervisor+scrapyd+SpiderKeeper

目录

一、anaconda安装

二、supervisor 安装

介绍

安装

设置supervisor自启动

配置

常用参数

三、SpiderKeeper+scrapyd安装

安装依赖

配置supervisor


一、anaconda安装

  1. 进入Anaconda的官网进行下载或学习。
  2. 在Linux里面.sh文件是可执行的脚本文件,需要用命令bash来进行安装。
  3. 此时我们输入命令bash Anacondaxxxxx-Linux-x86_64.sh
  4. 配置环境变量:
    1. vi  /etc/profile
    2. 最后添加
    3. scrapy爬虫Linux部署anaconda+Supervisor+scrapyd+SpiderKeeper_第1张图片
    4. export ANACONDA_HOME=/root/anaconda3/bin
      export PATH=$ANACONDA_HOME:$PATH

二、supervisor 安装

  • 介绍

- supervisord

运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。

- supervisorctl

是命令行管理工具,可以用来执行 stop、start、restart 等命令,来对这些子进程进行管理。

supervisor是所有进程的父进程,管理着启动的子进展,supervisor以子进程的PID来管理子进程,当子进程异常退出时supervisor可以收到相应的信号量。

  • 安装

yum install epel-release -y
yum install supervisor -y
vim /etc/supervisord.d/[项目名称].ini
  • 设置supervisor自启动

    • 查看是否自启动命令: systemctl is-enabled supervisord
    • 进入 /usr/lib/systemd/system/
    • 创建文件:touch supervisord.service
    • 编辑supervisord.service
      # dservice for systemd (CentOS 7.0+)
      # by ET-CS (https://github.com/ET-CS)
      [Unit]
      Description=Supervisor daemon
      [Service]
      Type=forking
      ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
      ExecStop=/usr/bin/supervisorctl shutdown
      ExecReload=/usr/bin/supervisorctl reload
      KillMode=process
      Restart=on-failure
      RestartSec=42s
      [Install]
      WantedBy=multi-user.target

       

  • 配置

配置编辑  supervisord.conf

进程文件编辑 supervisord.d/XXX.ini/conf

参数详解:

[program:test_one]
command=java -jar /data/smallvideo/supervisor/taskApp-exec.jar TaskTestOne  ; 被监控的进程路径
priority=1                    ; 数字越高,优先级越高
numprocs=1                    ; 启动几个进程
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                   ; 正常退出代码
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout

[program:test_two]
command=java -jar /data/smallvideo/supervisor/taskApp-exec.jar TaskTestTwo   ; 被监控的进程路径
priority=1                    ; 数字越高,优先级越高
numprocs=1                    ; 启动几个进程
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                   ; 正常退出代码
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout

- command:启动程序使用的命令,可以是绝对路径或者相对路径
- process_name:一个python字符串表达式,用来表示supervisor进程启动的这个的名称,默认值是%(program_name)s
- numprocs:Supervisor启动这个程序的多个实例,如果numprocs>1,则process_name的表达式必须包含%(process_num)s,默认是1
- numprocs_start:一个int偏移值,当启动实例的时候用来计算numprocs的值
- priority:权重,可以控制程序启动和关闭时的顺序,权重越低:越早启动,越晚关闭。默认值是999
- autostart:如果设置为true,当supervisord启动的时候,进程会自动重启。
- autorestart:值可以是false、true、unexpected。false:进程不会自动重启,unexpected:当程序退出时的退出码不是exitcodes中定义的时,进程会重启,true:进程会无条件重启当退出的时候。
- startsecs:程序启动后等待多长时间后才认为程序启动成功
- startretries:supervisord尝试启动一个程序时尝试的次数。默认是3
- exitcodes:一个预期的退出返回码,默认是0,2。
- stopsignal:当收到stop请求的时候,发送信号给程序,默认是TERM信号,也可以是 HUP, INT, QUIT, KILL, USR1, or USR2。
- stopwaitsecs:在操作系统给supervisord发送SIGCHILD信号时等待的时间
- stopasgroup:如果设置为true,则会使supervisor发送停止信号到整个进程组
- killasgroup:如果设置为true,则在给程序发送SIGKILL信号的时候,会发送到整个进程组,它的子进程也会受到影响。
- user:如果supervisord以root运行,则会使用这个设置用户启动子程序
- redirect_stderr:如果设置为true,进程则会把标准错误输出到supervisord后台的标准输出文件描述符。
- stdout_logfile:把进程的标准输出写入文件中,如果stdout_logfile没有设置或者设置为AUTO,则supervisor会自动选择一个文件位置。
- stdout_logfile_maxbytes:标准输出log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小
- stdout_logfile_backups:标准输出日志轮转备份的数量,默认是10,如果设置为0,则不备份
- stdout_capture_maxbytes:当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB
- stdout_events_enabled:如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发
- stderr_logfile:把进程的错误日志输出一个文件中,除非redirect_stderr参数被设置为true
- stderr_logfile_maxbytes:错误log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小
- stderr_logfile_backups:错误日志轮转备份的数量,默认是10,如果设置为0,则不备份
- stderr_capture_maxbytes:当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB
- stderr_events_enabled:如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发
- environment:一个k/v对的list列表
- directory:supervisord在生成子进程的时候会切换到该目录
- umask:设置进程的umask
- serverurl:是否允许子进程和内部的HTTP服务通讯,如果设置为AUTO,supervisor会自动的构造一个url
  • 常用参数

update 更新新的配置到supervisord(不会重启原来已运行的程序)
reload,载入所有配置文件,并按新的配置启动、管理所有进程(会重启原来已运行的程序)
start xxx: 启动某个进程
restart xxx: 重启某个进程
stop xxx: 停止某一个进程(xxx),xxx为[program:theprogramname]里配置的值
stop groupworker: 重启所有属于名为groupworker这个分组的进程(start,restart同理)
stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文
reread,当一个服务由自动启动修改为手动启动时执行一下就ok

三、SpiderKeeper+scrapyd安装

  1. 安装依赖

    • pip install scrapyd
    • pip install SpiderKeeper
  2. 配置supervisor

    1. supervisord.d/ scrapyd.ini  or  .conf
      [program:spiderkeeper]
      command=/root/anaconda3/bin/spiderkeeper --server=http://0.0.0.0:6800 --username=admin --password=admin
      autostart=true
      autorestart=true
      startretries=3
      
      
      [program:scrapyd]
      command=/root/anaconda3/bin/scrapyd
      autostart=true
      autorestart=true
      redirect_stderr=true 
  3. 配置编辑后重启supervisor supervisorctl reload   或者update 
  4. supervisorctl status 查看进程状态
  5. 打包爬虫文件
    1. pip install scrapyd-client
    2. scrapyd-deploy --build-egg output.egg
    3. 登录SpiderKeeper web页面上传打包好的爬虫egg文件
  6. windows打包

    1. pip install scrapyd-client

    2. 报错: 'scrapyd-deploy' 不是内部或外部命令,也不是可运行的程序或批处理文件

      1. 进入自己电脑安装python 的位置,找到Scripts文件夹,进入

      2. 创建文件 scrapyd-deploy.bat ,添加内容:(注:拷贝粘贴即可,将路径改成自己电脑的)

        @echo off
        E:\Anaconda\Anaconda3\python.exe E:\Anaconda\Anaconda3\Scripts\scrapyd-deploy %*
    3. 报错:etree导入错误,重新安装 lxml pip uninstall lxml   pip install lxml

       

你可能感兴趣的:(Python,scrapy,linux部署)