文章目录
前言
对于scrapy框架,本人已经接触了有5年之久,期间其实有段时间没使用,回头来查相关的文章内容,看到很多人连配置文件怎么弄都不知道,而是直接修改源码里面的default_scrapyd.conf,这是很不好的行为,因为如果你升级,或者更换了虚拟环境,原本配置的信息就丢失了,你直接scrapyd去启动,有时候就会异常。对此,还是按照官方的方式去配置比较好。
scrapyd安装
本人推荐使用miniconda创建虚拟环境,对于miniconda的使用,可以参考另外的文章miniconda安装教程,
创建好环境后,通过pip即可简单安装完成
pip install scrapyd
scrapyd.conf配置文件
查找scrapyd源码目录
安装后不需急着scrapyd直接启动。以前版本,我是直接执行后,在执行目录就会生成scrapyd.conf文件,但新版本好像取消了。就需要你去找到default_scrapyd.conf文件,然后重命名一下。在shell中输入一下指令
find / -name scrapyd
此时会查找出scrapyd的源码位置,也就是结果中的第三个(site-packages目录下的)
/root/miniconda3/envs/scrapyd
/root/miniconda3/envs/scrapyd/bin/scrapyd
/root/miniconda3/envs/scrapyd/lib/python3.11/site-packages/scrapyd
scrapyd.conf放置目录
拷贝该目录下的default_scrapyd.conf到官方指定的目录中
- 先说明一下官方指定配置文件目录
Scrapyd searches for configuration files in the following locations, and parses them in order with the latest one taking more priority:
- /etc/scrapyd/scrapyd.conf (Unix)
- c:\scrapyd\scrapyd.conf (Windows)
- /etc/scrapyd/conf.d/* (in alphabetical order, Unix)
- scrapyd.conf
- ~/.scrapyd.conf (users home directory)
The configuration file supports the following options (see default values in the example).
以上内容是官方文档的说明,也就是说,scrapyd服务会默认去这些文件夹里面读取配置,按照顺序进行读取。具体顺序需自行测试,其中可以看到scrapyd.conf就是执行scrapyd当前目录的意思,我们因为等下要把scrapyd做成系统服务,所以选择一条指定路径,就用/etc/scrapyd/scrapyd.conf。先创建文件夹,然后拷贝
mkdir -p /etc/scrapyd/
cp /root/miniconda3/envs/scrapyd/lib/python3.11/site-packages/scrapyd/default_scrapyd.conf /etc/scrapyd/scrapyd.conf
这样就运行scrapyd就会使用这一份配置,而不是使用default_scrapyd.conf
设置外网访问和账号密码
在生成了专属的scrapyd.conf文件后,现在需要配置一些基本的信息,方便外网使用和设置账号密码提高安全性,设置完后记得保存
[scrapyd]
eggs_dir = /etc/scrapyd/eggs # 打包了的爬虫代码存放路径
logs_dir = /etc/scrapyd/logs # scrapyd服务器上爬虫运行的日志记录
items_dir =
jobs_to_keep = 5
dbs_dir = /etc/scrapyd/dbs # scrapyd的一些数据本地存储
max_proc = 0
max_proc_per_cpu = 4
finished_to_keep = 100
poll_interval = 5.0
bind_address = 127.0.0.1 # 这里修改成0.0.0.0,这样就可以外网访问
http_port = 6800
username = # 设置一下账号
password = # 设置一下密码
prefix_header = x-forwarded-prefix
启动scrapyd
现在可以通过以下指令启动scrapyd进行体验了
scrapyd
查看网页
- 通过http://127.0.0.1:6800/,看到以下页面即为完成,进去前可能需要输入一下账号密码
- 如果外网访问异常,请排查一下是否127.0.0.1没有设置成0.0.0.0,或者服务器端口6800没有对外开放
把scrapyd做成系统服务
现在启动的scrapyd只能在我们连接shell的时候,正常使用,我们还需要使它能在后台运行,有的使用nohup,这个不推荐,也有用screem,这个看自己爱好吧。我这边是用把它做成系统服务,可以通过systemctl start scrapyd.service这样去启动服务,并随着开机启动
查找scrapyd运行文件的目录
通过以下指令
which scrapyd
直接查找出/root/miniconda3/envs/scrapyd/bin/scrapyd这个目录,下面会用到
生成service配置文件
vim /etc/systemd/system/scrapyd.service
然后填入以下内容
[Unit]
Description=Scrapyd service
After=network.target
[Service]
User=root
Group=root
ExecStart=/root/miniconda3/envs/scrapyd/bin/scrapyd
[Install]
WantedBy=multi-user.target
- User和Group使用当前用户即可,我使用root用户。
- ExecStart就是用上面通过which scrapyd查询出来的路径/root/miniconda3/envs/scrapyd/bin/scrapyd
保存并退出即可
重新加载 systemd,以读取新的服务文件
systemctl daemon-reload
设置开机启动scrapyd
systemctl enable scrapyd.service
启动scrapyd服务
systemctl start scrapyd.service
停止scrapyd服务
systemctl stop scrapyd.service
重启scrapyd服务
systemctl restart scrapyd.service
查看scrapyd服务状态
systemctl status scrapyd.service
余后工作
- 删除miniconda安装文件
- 安装scrapy项目需要的requirements.txt文件