部署流程
- 参考
- 环境
- [安装 pyenv](#安装 pyenv)
-
- 安装依赖
- [安装 pyenv](#安装 pyenv)
- 配置环境变量
-
- [root 用户](#root 用户)
-
-
-
- ~/.bashrc
- ~/.profile
- ~/.bash_profile
- [Zsh 用户](#Zsh 用户)
- [重启 shell](#重启 shell)
-
-
- [使用 pyenv 安装 Python 3.9.1](#使用 pyenv 安装 Python 3.9.1)
- 安装Scrapyd-Client
- 安装Scrapy
- systemd添加服务文件
参考
【华为仓库】
【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