在阿里云服务器使用scrapyd部署scrapy项目

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云服务器ECS,u1 2核4GB 1个月
简介: 前言分布式爬虫,总归是要上到服务器的。这里先讲解如何在服务器上配置和部署scrapyd,主要的点还是在scrapyd和redis的conf配置文件上。

前言

分布式爬虫,总归是要上到服务器的。

这里先讲解如何在服务器上配置和部署scrapyd,主要的点还是在scrapyd和redis的conf配置文件上。其实到末尾我已经实现了分布式,本机的爬虫访问远程redis,从里面拿数据,但是由于是测试,没有放入start_urls,所以也没有启动并爬出结果,但是redis远程连接确实是做到了。下一篇结合Docker再搭建分布式爬虫。


环境配置

为了从头配置,我在阿里云上重新更换了纯净的Centos7.4,新盘,什么都没有。

创建环境

这里比较简单,参考自己写的《Aliyun-安装Anaconda记录 》就可以成功安装Anaconda了

创建环境的话用命令:

conda create --name pspiders python=3.6

创建一个名为pspiders并且版本是python3.6的虚拟环境。

进入环境的命令:

source activate pspiders

当前面出现(pspiders)

(pspiders) [root@iZqmg63rkase8aZ SRspider]# 

就代表着成功进入了虚拟环境。


安装scrapyd

首先,通过本地sftp将写好的代码上传到服务器,我这里是新建目录SRspider,然后将代码上传到目录中。

然后cd进入SRspider目录,与.cfg文件同目录内,通过命令开启虚拟环境:

source activate pspiders

然后安装scrapyd以及scrapd-client

(pspiders) [root@ixxx SRspider]#  pip install scrapyd

(pspiders) [root@ixxx SRspider]#  pip install scrapyd-client

这样就完成了他们的安装。

导入环境依赖

接着导入本地机器的依赖包,在本地的虚拟环境下,通过命令导出requirements.txt:

pip freeze > requirements.txt

就会在当前目录下生成此文件,打开后将文件内容复制,并在服务器的虚拟环境下vim新建同名文件,写入内容(刚才导出的文件内容):

six==1.11.0
Twisted==17.9.0
urllib3==1.22
w3lib==1.18.0
you-get==0.4.1011
zope.interface==4.4.3
……
……
……

这里面记录的就是之前的虚拟环境的依赖,如果不导入的话,就要手动在虚拟环境下通过pip安装这些依赖(建议导入)。

然后在服务器通过命令:

pip install -r requirements.txt

安装依赖,可以看到它依次下载并安装。


服务器安装redis

这个比较简单:

yum install redis

跟着提示就行了,然后用命令启动redis:

service redis start

设置为开启启动的话:

chkconfig redis on

配置scrapyd远程访问

到这里,scrapyd也安装好了、依赖也装好了、代码也上传了、redis也安装好了,是不是可以打包然后就开启scrapyd服务了呢?

当初我也是这么认为的,直到scrapyd启动服务后,在浏览器打开http://59.110.xxx.xxx:6800,但是始终无法访问,这个问题困扰了很久,后来在群里面有人告诉我应该开启阿里云安全组配置(我去检查了,我已经开启6800端口),又有人说scrapyd默认绑定地址是127.0.0.1,要将它绑定的地址改为0.0.0.0就可以开启外部访问了。文件路径是在:

/root/anaconda3/envs/pspiders/lib/python3.6/site-packages/scrapyd

下面有一个default_scrapyd.conf 文件,vi打开后找到里面有一句:

bind_address = 127.0.0.1

将它改成0.0.0.0保存,就可以远程访问了。

这时候到SRspider目录下打开虚拟环境,然后输入命令scrapyd启动它,再用浏览器打开就可以访问到了。

配置redis远程访问

redis同样,默认设定是本地访问,如果想开启远程访问就要改动bind

但是为了安全起见(redis默认没有密码,开启远程后别人可以操作),就需要给redis设置密码,通过命令redis-cli启动redis的命令行:

[root@iZqmg63rkase8aZ scrapyd]# redis-cli
127.0.0.1:6379> 

然后查看是否有密码:

127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> 

如果是密码为空,则需要设置密码:

CONFIG set requirepass "ranbos"

再次查看的时候就会提示需要密码:

(error) NOAUTH Authentication required.

用命令登录:

auth ranbos

即可登录。这里就完成了密码的设置,通过命令quit退出命令行。下面更改bind

进入redis.conf目录下(默认在/etc下):

 cd /etc

然后用ls查看目录下的文件,发现有redis.conf文件

输入图片说明

用vim打开它,找到里面的bind:

bind 127.0.0.1

将它改为:

#bind 127.0.0.1
bind 0.0.0.0

我怕有错,所以先注释127.0.0.1,然后添加bind0.0.0.0

然后重启redis:

service redis restart

就可以了,redis可以远程访问了。


连接redis的代码

但是写代码的时候如何连接呢?

这里有区分master和slaver,如果是主机,就在settings.py中增加连接配置:

 # 指定redis数据库的连接参数
REDIS_HOST = "127.0.0.1"
REDIS_PORT = "6379"
REDIS_PARAMS ={
     'password': 'ranbos',
}

主机就连接本地127.0.0.1的redis就行了,写上端口号和密码。

如果是slaver端,同样是这么设置,然后将REDIS_HOST改为服务器ip即可,比如我的deepin机器就这么配置:

REDIS_HOST = "59.110.xxx.xxx"
REDIS_PORT = "6379"
REDIS_PARAMS ={
    'password': 'ranbos',
}

这样就完成了所有的配置,现在去开启服务测试。


测试

首先,在服务器上开启scrapyd服务(在项目工程.cfg同目录进入虚拟环境):

source avticate pspiders

接着开启scrapyd服务:

scrapyd

会收到如下信息:

(pspiders) [root@iZqmg63rkase8aZ SRspider]# scrapyd
2018-01-23T12:56:27+0800 [-] Loading /root/anaconda3/envs/pspiders/lib/python3.6/site-packages/scrapyd/txapp.py...
2018-01-23T12:56:27+0800 [-] Scrapyd web console available at http://0.0.0.0:6800/
2018-01-23T12:56:27+0800 [-] Loaded.
2018-01-23T12:56:27+0800 [twisted.scripts._twistd_unix.UnixAppLogger#info] twistd 17.9.0 (/root/anaconda3/envs/pspiders/bin/python 3.6.4) starting up.
2018-01-23T12:56:27+0800 [twisted.scripts._twistd_unix.UnixAppLogger#info] reactor class: twisted.internet.epollreactor.EPollReactor.
2018-01-23T12:56:27+0800 [-] Site starting on 6800
2018-01-23T12:56:27+0800 [twisted.web.server.Site#info] Starting factory <twisted.web.server.Site object at 0x7f05aea75d68>
2018-01-23T12:56:27+0800 [Launcher] Scrapyd 1.2.0 started: max_proc=4, runner='scrapyd.runner'

代表服务正常开启,服务开启后再开启一个窗口,连接到服务器。然后也是进入虚拟环境,到.cfg同目录下,打包代码,发送到:

scrapyd-deploy SRspider -p Jobbole

如果成功就会返回信息:

(pspiders) [root@iZqmg63rkase8aZ SRspider]# scrapyd-deploy SRspider -p Jobbole
Packing version 1516683538
Deploying to project "Jobbole" in http://localhost:6800/addversion.json
Server response (200):
{"node_name": "iZqmg63rkase8aZ", "status": "ok", "project": "Jobbole", "version": "1516683538", "spiders": 1}

就代表打包成功,打开页面即可看到:

输入图片说明

然后通过命令启动爬虫,开始爬取:

curl http://localhost:6800/schedule.json -d project=Jobbole -d spider=jobbole

最后通过Log可以查看到爬虫的运行情况

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
Java 应用服务中间件 Linux
在阿里云服务器上部署Tomcat详细图文详解
本文介绍了在阿里云服务器上安装和配置JDK和Tomcat的步骤。首先,需要注册阿里云账号并进行实名认证,然后购买并设置服务器。接着,通过File Zilla连接服务器,创建Java和Tomcat的安装目录,并将JDK和Tomcat的tar.gz文件上传到服务器,解压并重命名。之后,配置JDK的环境变量,将catalina.sh复制到/etc/init.d/目录下,并修改相关配置。最后,启动Tomcat并配置安全组规则,确保可以通过公网访问。
|
1天前
|
弹性计算 Java Linux
阿里云服务器搭建部署宝塔详细流程
该内容是一个阿里云服务器和域名的配置指南。首先,需注册阿里云账号并进行企业实名认证。接着,选购服务器如2核2G1兆的Linux系统,并购买域名。完成域名备案后,进行域名解析和ICP备案。然后,通过远程连接登录服务器,重置密码,安装宝塔面板。在安全组中开启宝塔面板随机生成的端口。最后,登录宝塔面板安装LNMP环境,配置数据库如MySQL和Redis,部署JDK、Tomcat,上传前端和后端项目以实现上线。
|
2天前
|
弹性计算 JavaScript Java
阿里云服务器搭建部署宝塔详细流程
以下是内容的摘要: 本文主要介绍了在阿里云上创建和配置服务器环境的步骤,包括注册阿里云账号、实名认证、购买和设置服务器、域名的获取与备案、以及使用宝塔面板安装和配置环境。首先,用户需要注册阿里云账号并进行实名认证,选择合适的服务器配置。接着,购买服务器后,要准备并备案域名,以便通过友好的网址访问网站。在服务器上安装宝塔面板,可以方便地管理和配置LAMP/LNMP/Tomcat/Node.js等应用环境。完成这些步骤后,用户还需要在宝塔面板中安装MySQL、Redis等数据库,部署Java或Vue项目,并配置相关端口。最后,将前端项目打包上传至服务器,并设置站点,即可实现网站的上线。
|
2天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
4天前
|
NoSQL 关系型数据库 MySQL
阿里云服务器部署项目流程
本文主要讲解阿里云服务器的部署,如何选择配置等
|
25天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
29天前
|
存储 分布式计算 网络协议
阿里云服务器内存型r7、r8a、r8y实例区别参考
在阿里云目前的活动中,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y这几个实例规格,相比于活动内的经济型e、通用算力型u1实例来说,这些实例规格等性能更强,与计算型和通用型相比,它的内存更大,因此这些内存型实例规格主要适用于数据库、中间件和数据分析与挖掘,Hadoop、Spark集群等场景,本文为大家介绍内存型r7、r8a、r8y实例区别及最新活动价格,以供参考。
阿里云服务器内存型r7、r8a、r8y实例区别参考
|
30天前
|
SQL 弹性计算 安全
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程
当我们通过阿里云的活动购买完云服务器之后,并不是立马就能使用了,还需要我们设置云服务器密码,配置安全组等基本操作之后才能使用,有的用户还需要购买并挂载数据盘到云服务器上,很多新手用户由于是初次使用阿里云服务器,因此并不知道这些设置的操作流程,下面给大家介绍下这些设置的具体操作流程。
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程
|
1月前
|
弹性计算
阿里云3M带宽云服务器并发多大?阿里云3M带宽云服务器测评参考
在探讨云服务器3M带宽能支持多大并发这一问题时,我们首先要明白一个关键点:并发量并非仅由带宽决定,还与网站本身的大小密切相关。一般来说,一个优化良好的普通网站页面大小可能只有几K,为便于计算,我们可以暂且假定每个页面大小为50K。
808 1
|
7天前
|
弹性计算 应用服务中间件 Linux
阿里云ECS服务器上从零开始搭建nginx服务器
阿里云ECS服务器上从零开始搭建nginx服务器

热门文章

最新文章