centos 部署 scrapy 爬虫详细教程

部署流程

参考

【华为仓库】
【pyenv 多版本的Python管理工具】
【pyenv-virtualenv 虚拟环境管理工具】

环境

centos python默认2.7

安装 pyenv

安装依赖

commandline 复制代码
sudo yum -y install git gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel

安装 pyenv

commandline 复制代码
curl https://pyenv.run | bash

配置环境变量

root 用户

~/.bashrc
commandline 复制代码
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
~/.profile
commandline 复制代码
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.profile
~/.bash_profile
commandline 复制代码
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
Zsh 用户
commandline 复制代码
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
重启 shell
commandline 复制代码
exec "$SHELL"

使用 pyenv 安装 Python 3.9.1

commandline 复制代码
# 虚拟环境安装python
pyenv install 3.9.1

# 设置全局版本
pyenv global 3.9.1

# 创建虚拟环境
pyenv virtualenv  htb391

# 查询python版本位置
find / -name 3.9.1

# 修改python镜像地址
nano /root/.pyenv/plugins/python-build/share/python-build/3.9.1

将 https://www.python.org/ftp 修改为 https://mirrors.huaweicloud.com

# 验证版本
python --version

# 激活
pyenv activate 名称
# 主动退出
pyenv deactivate 

安装scrapyd

commandline 复制代码
pip install scrapyd

scrapyd 自定义部署

commandline 复制代码
1. mkdir /etc/scrapyd   创建文件
2. vi /etc/scrapyd/scrapyd.conf    写入配置文件
------------------------------------------------------------------
[scrapyd]
# 网页和Json服务监听的IP地址,默认为127.0.0.1 修改成 0.0.0.0可以远程访问
bind_address = 0.0.0.0
# 监听的端口,默认为6800
http_port = 6800
# 是否打开debug模式,默认为off
debug = off
# 每个CPU可启用的Scrapy 进程数,默认为4
max_proc_per_cpu = 4
# 可启用的最多进程数,默认为0.如果未设置或者设为0,则使用的最多进程数=CPU数量*max_proc_per_cpu
max_proc = 0
# 项目eggs生成目录,默认为项目目录下eggs
eggs_dir = eggs
# 项目日志生成目录,默认为项目目录下logs,如果不想要生成日志,可以直接设置成空
logs_dir = logs
items_dir =
# 项目dbs生成目录,默认为项目目录下dbs
dbs_dir = dbs
# 爬取的items存储的文件夹(版本0.15.以上),默认为空,不存储。
items_dir =
# 每个爬虫保持的完成任务数,默认为5.(版本0.15.以上,以前版本中为logs_to_keep)
jobs_to_keep = 5
# 保持的完成任务进程数。默认为100.(版本0.14.以上)
finished_to_keep = 100
# 轮训请求队列的时间间隔。默认为5s,可以为浮点数
poll_interval = 5.0
# 启动子进程的模块。可以使用自定义
runner = scrapyd.runner
# 返回可用于twisted的application,可继承于Scrapyd添加和移除自己的组件和服务。 https://twistedmatrix.com/documents/current/core/howto/application.html查看更多
application = scrapyd.app.application
launcher = scrapyd.launcher.Launcher
# twisted的web资源,表示到scrapyd的接口。Scrapyd包含一个带有网站的界面,可以提供对应用程序的web资源的简单监视和访问。此设置必须提供twisted web资源的根类。
webroot = scrapyd.website.Root

设置scrapyd服务

commandline 复制代码
sudo nano /etc/systemd/system/scrapyd.service
-------------------------------------------------
[Unit]
Description=Scrapyd service
After=network.target

[Service]
User=root
ExecStart=scrapyd地址 --logfile 自定义日志地址/scrapyd.log

[Install]
WantedBy=multi-user.target

Scrapyd服务

commandline 复制代码
 # 启用并启动Scrapyd服务
 systemctl enable scrapyd.service
 systemctl start scrapyd.service
 # 检查Scrapyd服务状态
 systemctl status scrapyd.service

安装Scrapyd-Client

使用Scrapyd API与Scrapyd服务交互

commandline 复制代码
pip install scrapyd-client

安装Scrapy

Scrapyd是用Scrapy的daemonize功能来运行爬虫的

commandline 复制代码
pip install scrapy

去项目里面,执行命令(注意:需要项目所在的机器上也按照Scrapyd-Client)

commandline 复制代码
scrapyd-deploy

scrapyd-deploy 生成 scrapy.cfg

commandline 复制代码
# Automatically created by: scrapy startproject
# https://scrapyd.readthedocs.io/en/latest/deploy.html
[settings]
default = 项目名.settings

[deploy]
;url = http://localhost:6800
url = http://124.223.103.190:6800
username = 用户名(scrapyd服务)
password = 密码(scrapyd服务)
project = 项目名
version = 版本号

最后,安装自己需要的包

commandline 复制代码
pip3 install fake_useragent
pip3 install bs4
pip3 install pymysql
pip3 install pymongo
pip3 install selenium
pip3 install loguru
pip3 install scrapeops_scrapy

可视化 scrapydweb

commandline 复制代码
pip install scrapydweb
pip install logparser
pip install pywin32 (针对windows)

systemd添加服务文件

commandline 复制代码
vim /etc/systemd/system/scrapydweb.service

[Unit]
Description=ScrapydWeb Service
After=network.target

[Service]
# (查询scrapydweb路径: find / -name scrapydweb)
ExecStart= 路径

[Install]
WantedBy=multi-user.target

拷贝已配置的scrapydweb_settings_v10.py文件到根目录

服务执行的默认目录就是根目录

commandline 复制代码
cp /home/scrapydweb/scrapydweb_settings_v10.py /scrapydweb_settings_v10.py

自定义 scrapydweb_settings_v10.py

commandline 复制代码
# 默认127.0.0.1 ,如需外网 0.0.0.0
SCRAPYDWEB_BIND = '0.0.0.0'
# 端口
SCRAPYDWEB_PORT = 5000
# 开启授权
ENABLE_AUTH = True
# 登录用户名
USERNAME = 'root'
# 用户密码
PASSWORD = 'liaowei@619'
# scrapyd 服务地址
LOCAL_SCRAPYD_SERVER = '服务器地址:端口'
# scrapyd日志文件
LOCAL_SCRAPYD_LOGS_DIR = '/home/scrapydweb/logs'
# 启用LOGPARSER
ENABLE_LOGPARSER = True
# scrapyd 服务
SCRAPYD_SERVERS = [
    #'scrapyd服务器:scrapyd端口',
    #'自己的用户名:自己的密码@scrapyd服务器:scrapyd端口#group',
    ('自己的用户名', '自己的密码', 'scrapyd服务器', 'scrapyd端口', 'group'),
]

重新加载 systemd,以读取新的服务文件

commandline 复制代码
systemctl daemon-reload

设置开机启动scrapydweb

commandline 复制代码
systemctl enable scrapydweb.service

启动scrapydweb服务

commandline 复制代码
systemctl start scrapydweb.service

安装logparser

commandline 复制代码
# 安装logparser
pip install logparser
# 启动logparser
logparser
# 自定义日志位置
logparser -dir /home/scrapyd/logs

生成服务文件

commandline 复制代码
vim /etc/systemd/system/logparser.service

[Unit]
Description=Logparser Service
After=network.target

[Service]
ExecStart=/root/miniconda3/envs/scrapyd/bin/logparser

[Install]
WantedBy=multi-user.target

重新加载 systemd,以读取新的服务文件

bash 复制代码
systemctl daemon-reload

设置开机启动scrapydweb

bash 复制代码
systemctl enable logparser

启动scrapydweb服务

bash 复制代码
systemctl start logparser
相关推荐
LucianaiB2 小时前
探索CSDN博客数据:使用Python爬虫技术
开发语言·爬虫·python
远游客07138 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
jingyu飞鸟8 小时前
centos-stream9系统安装docker
linux·docker·centos
数据小爬虫@11 小时前
利用Python爬虫快速获取商品历史价格信息
开发语言·爬虫·python
cominglately11 小时前
centos单机部署seata
linux·运维·centos
魏 无羡11 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
CircleMouse11 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
小白学大数据11 小时前
如何使用Selenium处理JavaScript动态加载的内容?
大数据·javascript·爬虫·selenium·测试工具
木子Linux12 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
qq_3758726913 小时前
15爬虫:下载器中间件
爬虫