Scrapyd安装部署:
在向服务器部署爬虫时,我们需要下载2个模块
a、scrapyd(安装在服务端,运行服务)
b、scrapy-client(安装在客户端,用于将自己的爬虫部署到服务器上)
stept1 :
yum install firewalld
systemctl start firewalld
firewall-cmd --zone=public --add-port=1024-65535/udp --permanent
firewall-cmd --zone=public --add-port=1024-65535/tcp --permanent
firewall-cmd --reload
pip3 install --upgrade pip
pip install scrapyd
cd /usr/local/python3/lib/python3.6/site-packages/scrapyd
vim default_scrapyd.conf
step2:
在site-packages 下的scrapyd文件里面 vim default_scrapyd.conf
bind_address默认值127.0.0.1,改为0.0.0.0 从而允许多地址访问
step3:
方法一:
命令来后台开启服务,这样关闭窗口后仍能进行连接
setsid scrapyd
ps -ef | grep -i scrapyd #关闭的方法
kill -9 PID
方法二:
创建后台启动脚本
cd /etc/init.d 目录下面,
vim scrapyd 粘贴下面代码
HOME路径是要新建的,用来存日志;BIN=路径是scrapyd的运行路径一般在python的bin目录下)
#!/bin/bash
PORT=6800
HOME="/var/scrapyd"
BIN="/usr/local/python3/bin/scrapyd"
pid=`netstat -lnopt | grep :$PORT | awk '/python/{gsub(/\/python/,"",$7);print $7;}'`
start() {
if [ -n "$pid" ]; then
echo "server already start,pid:$pid"
return 0
fi
cd $HOME
nohup $BIN >> $HOME/scrapyd.log 2>&1 &
echo "start at port:$PORT"
}
stop() {
if [ -z "$pid" ]; then
echo "not find program on port:$PORT"
return 0
fi
#结束程序,使用讯号2,如果不行可以尝试讯号9强制结束
kill -9 $pid
echo "kill program use signal 9,pid:$pid"
}
status() {
if [ -z "$pid" ]; then
echo "not find program on port:$PORT"
else
echo "program is running,pid:$pid"
fi
}
case $1 in
start)
start
;;
stop)
stop
;;
status)
status
;;
*)
echo "Usage: {start|stop|status}"
;;
esac
exit 0
粘贴完在/etc/init.d 目录下执行以下命令赋予可执行权限:
chmod u+x scrapyd
创建HOME 目录
cd /var/
mkdir scrapyd
开启服务
service scrapyd start
查看状态
service scrapyd status
关闭服务
service scrapyd stop
>>>netstat -an | grep 6800 #查看6800端口,发现已经启动监听
step4:
本地打开浏览器输入: 远程机器ip:6800 #发现scrapyd页面
step5:
打开scrapy项目根目录,修改文件scrapy.cfg
[deploy:vm1] #vm1 为自定义的scrapyd中这个机器的名称
url = http://ip:6800/
project = maginfo #项目名称
[deploy:vm2]
url = http://ip2:6800/
project = maginfo
step6:安装scrapyd-client
>>>pip install scrapyd-client==1.2.0a1 #2020年5月27号最新版本为此
安装好了之后来到scrapy项目根目录下
>>>scrapyd-deploy -l #查看当前配置情况,会报个错,
于是乎进入到site-packages/scrapyd-client,双击scrapyd-deploy的exec文件(我系统为macOS)
会又报一个错deploy.py文件,打开该文件按照提示修改即可
step7:
上传项目到远程主机
例如将项目部署到IP为139.217.26.30的vm2主机
>>>scrapyd-deploy vm2
ps:
Scrapyd设置了访问限制,我们可以在配置文件中加入用户名和密码的配置,
同时修改端口成Nginx代理端口。如果Nginx代理端口使用的是6801,
那么这里就需要改成6801,修改如下:
[deploy:vm1]
url = http://ip1:6801/
project = weibo
username = admin
password = 123456
[deploy:vm2]
url = http://ip2:6801/
project = weibo
username = user2
password = 654321