本文介绍了如何把windows下面的scrapy脚本部署到AWS Ubuntu上,并使用crontab定时执行。

我的scrapy爬虫原来部署在windows服务器,爬虫每个小时从几个字幕网站爬字幕。字幕文件(即文本文件保)存在本地,但是字幕的metadata保存在Azure Database上。除了python爬虫,我还有一个.net程序复制处理爬虫获取的数据。

申请AWS EC2 Ubuntu虚拟机

AWS不用翻墙就能使用,而且提供免费虚拟机。申请的时候,只需要注意Security Group就行了。
我申请的是Ubuntu Server 18.04

Security Group
Inbound使用默认值,即SSH-TCP-22。

Outbound我加上了HTTP,HTTPS和MSSQL。

安装各种软件

首先安装Miniconda
https://docs.conda.io/en/latest/miniconda.html

安装以后修改PATH

export PATH=~/anaconda3/bin:$PATH

然后推出exit,并重新连接。

然后安装scrapy

conda install scrapy

安装MSSQL Driver
不要看网上乱七八糟的文章,直接看微软官方文档
https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017

其他根据需要安装,如果pip安装不了,就换conda。

用SCP复制文件到AWS Ubuntu

经过很多弯路以后,我选择了scp

scp -r -i "amazonsigaporeec2.pem" D:\xxx\xxx\* ubuntu@xxx.xxx.ap-southeast-1.compute.amazonaws.com:/home/ubuntu/xxx/

-i指identity_file,即AWS下载的那个文件。
-r是recursive,这样才会复制子文件夹。

使用crontab定时运行程序

crontab简介
Linux有两个定时运行程序的方法,一个是at,一个是crontab。at用于一次性运行的程序,crontab用于反复运行的程序。我们这里当然使用crontab
cron源于希腊语χρόνος (chronos),意思是时间。cron是类Unix系统的Job scheduler。

cron表达式(CRON expression)有五部分组成,分别是:分,时,日,月,周。有些资料上说有六个,第六个是年。部分之间用空格分隔。

每个部分的语法是一样的,拿秒来说,它可以是
*,表示每分钟 every minute
*/n,表示每n分钟,every n minutes
n,第n分钟
n-m,第n到第m分钟

具体到我的任务,我希望每个小时运行一次,所以我的cron表达式是:

8 * * * *

即每个小时8分的时候,脚本执行。

cron脚本很简单,就是cron表达式+可执行文件。
在Linux使用以下命令编辑crontab

crontab -e

然后输入

8 * * * * /home/ubuntu/spider/srt_en_cn/spider.sh

具体关于cron的介绍:
https://en.wikipedia.org/wiki/Cron

日志
我们希望把程序执行时候的output输出到log文件,这时可以修改cron脚本如下

8 * * * * /home/ubuntu/spider/srt_en_cn/spider.sh >> /home/ubuntu/spider/srt_en_cn/1.log 2>&1

这样就会把日志写入/home/ubuntu/spider/srt_en_cn/1.log。

使用以下命令查看crontab程序启动时间

grep CRON /var/log/syslog

我这里的输出如下

(base) ubuntu@ip-172-31-16-156:~/spider/srt_en_cn$ grep CRON /var/log/syslog
Mar 22 10:36:41 ip-172-31-16-156 cron[745]: (CRON) INFO (pidfile fd = 3)
Mar 22 10:36:41 ip-172-31-16-156 cron[745]: (CRON) INFO (Running @reboot jobs)
Mar 22 11:17:01 ip-172-31-16-156 CRON[2371]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Mar 22 12:17:01 ip-172-31-16-156 CRON[15446]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

crontab里面的路径问题
我一开始使用crontab的时候,总是出现python command not found, scrapy command not found。于是,我在bash脚本里面加上了

echo $PATH

结果输出是这样的。

/usr/bin:/bin

而我的miniconda安装在 /home/ubuntu/miniconda3/bin/
所以,需要在bash文件种加上

PATH=/home/ubuntu/miniconda3/bin/:$PATH
export PATH

最后,我的bash是这样的

#!/bin/bash
PATH=/home/ubuntu/miniconda3/bin/:$PATH
export PATH
echo start
cd ~/spider/srt_en_cnscrapy crawl xxx
scrapy crawl yyy
scrapy crawl zzz
scrapy crawl aaa
python bbb.py
python ccc.py./executable

部署scrapy爬虫到AWS Ubuntu 18.04,用crontab定时执行相关推荐

  1. AWS Ubuntu 18.04 镜像采用滚动内核模型

    Canonical 方面宣布,Ubuntu 18.04 LTS AMI(Amazon Machine Images)中的默认 Linux 内核正在转向滚动内核模型. 据悉,到目前为止,AWS 的 Ub ...

  2. 看这里!带你快速体验MindSpore V1.0(For ubuntu 18.04)

    摘要: 本文介绍了如何在Ubuntu 18.04上安装CPU版本的MindSpore V1.0.并使用安装好的MindSpore进行了LeNet的模型训练. Part One:引言 在HC2020大会 ...

  3. 深度linux腾讯视频,在UOS/Deepin 20/Ubuntu 18.04下安装腾讯视频Linux版的方法

    要想在UOS.Deepin 20.Ubuntu 18.04操作系统下安装腾讯视频Linux版,必须先去下载Tenvideo_universal_1.0.10_amd64.deb包,然后使用dpkg命令 ...

  4. AI视频行为分析系统项目复盘——技术篇1:Ubuntu 18.04部署编译OpenCV+contrib、TensorFlow2.1、CUDA10.1+cuDNN7.6.5、tensorRT6.0.1等

    0 项目背景 接手他人的项目,全过程重头梳理下. 7台服务器,其中6台GPU服务器(GPU:2*2080Ti,CPU:2*Xeon Gold 5118(12核24线程)),一台调度服务器,Ubuntu ...

  5. Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装、部署和测试

    Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装.部署和测试 1.环境安装 HyperLedger Fabric 1.2.0环境的安装推荐一篇博客:http ...

  6. 如何在Ubuntu 18.04上使用Nginx与MySQL服务器一起部署ASP.NET Core应用程序

    The author selected the Open Source Initiative to receive a donation as part of the Write for DOnati ...

  7. 如何在Ubuntu 18.04上使用Node.js和MongoDB构建和部署GraphQL服务器

    The author selected the Wikimedia Foundation to receive a donation as part of the Write for DOnation ...

  8. DPDK — 安装部署(Ubuntu 18.04)

    目录 文章目录 目录 环境参数 环境依赖准备 安装 DPDK 测试 附 1:Enable pcap 环境参数 Intel x86 Ubuntu 18.04 LTS Python 3.6 DPDK 18 ...

  9. 在Ubuntu 18.04上部署Intel OpenVINO Toolkit并使用CPU与iGPU运行官方人脸识别Demo

    本博客依据Intel OpenVINO Toolkit 官方资料,经博主亲自实践,踩雷排坑后记录分享. intel NCS & OpenVINO 交流QQ群:608483784 测试平台软件版 ...

最新文章

  1. [王晓刚]深度学习在图像识别中的研究进展与展望(转发)
  2. C++ 模板偏特化-来自STL的思考
  3. java定义一个类计算圆的半径,C++编程:定义一个圆类要求属性为半径,操作为计算圆的周长和面积...,java编程:定义一个圆类,属性为半径,方法为对输入的半径计...
  4. mfc中主窗体显示(任务栏上方显示)
  5. spring多个视图解析器_在Spring中配置多个View解析器
  6. 软考信息系统项目管理师_项目整体管理---软考高级之信息系统项目管理师010
  7. Python求1~300之间所有的完数
  8. Notepad2 巧妙替换回车换行符
  9. 安装网卡驱动失败(已解决)
  10. 网易云音乐服务器code521,网易云音乐显示scode502原因及解决办法_专题_53货源网...
  11. Android聊天室(源码)
  12. photoshop文字变形教程:奇特的文字变形演示
  13. vestacp调整php.ini,VestaCP中roundcube的SMTP配置方法
  14. 调色板程序c语言,用C语言开发NES游戏(CC65)05、调色板
  15. 网络基础之网络协议篇(转自林海峰老师)
  16. 杭州云栖大会“弹性计算用户实践专场”等你来
  17. unity 动画控制器
  18. 怎么看曲线有没有斜渐近线_怎样判断一个曲线有无斜渐近线
  19. 【Python CUDA版】河北工业大学计算机图像处理实验四:频域平滑与锐化
  20. document.write详解

热门文章

  1. Linux 安装netcdf
  2. 【ChatGPT】多国“围堵”,万人抵制,AI发展的红线到底在哪?
  3. Ant Design Pro -- 02项目结构@20210331
  4. 88E1111与千兆网口连接
  5. AMiner会议论文推荐第三十五期
  6. IntelliJ IDEA详细安装步骤
  7. Prometheus+SpringBoot应用监控全过程详解
  8. 【从零开始学深度学习编译器】十五,MLIR Toy Tutorials学习笔记之Lowering到LLVM IR
  9. 吴裕雄--天生自然 PYTHON3开发学习:字符串
  10. python飞机大战程序导入_Python飞机大战项目的准备 导入Pygame最全攻略~