绝世好文章,值得阅读!!!!
1.目前得情况我们得先写好一个爬虫啊!!!
2.要求我们得把爬虫部署到服务器上面!!!
- 首先我们得先下载好我们需要的包,服务器需要scrapyd、scrapydweb这两个包。这两个包下载的位置应该是在python3下的bin目录的下面。
我的是在python的安装目录下面的bin目录
/usr/local/python3/bin
2.创建两个日志文件,一个scrapyd-run.log和一个scrapydweb-run.log日志。我提前创建好了啊。
touch scrapyd-run.log
touch scrapydweb-run.log
3.创建我们的scrapyd服务啊!
先说我们scrapyd的服务。在etc/scrapyd下有我们的配置文件,scrapyd.conf里面记得把我们的bind改成那个0.0.0.0,这样就暴露在公网上了。其次,我们的把这个端口在nginx下做一个代理。做一个转向。
3.1nginx上的配置:
nginx 配置用户认证有两种方式: 1.auth_basic 本机认证,由ngx_http_auth_basic_module模块实现。配置段: http, server, location, limit_except 2.auth_request,由ngx_http_auth_request_module模块实现。配置段:http, server, location第一种方式:yum -y install httpd-tools //安装 htpasswd 工具htpasswd -c /etc/nginx/.passwd-www www //生成用户登录的认证文件配置nginx本地认证:
server {
listen 80;
server_name www.imcati.com;
auth_basic "User Authentication";
auth_basic_user_file /etc/nginx/.passwd-www;
location / {
root /usr/share/nginx/html;
index index.html;
}
}加载配置: nginx -s reload访问页面验证:
第二种方式:
编译Nginx时需要添加该模块: --with-http_auth_request_module
该模块可以将客户端输入的用户名、密码 username:password 通过 Base64 编码后写入 Request Headers 中,例如:www:wwww -> Authorization:Basic d2FuZzp3YW5n=
然后通过第三方程序解码后跟数据库中用户名、密码进行比较,Nginx服务器通过header的返回状态判断是否认证通过。
nohup scrapyd >./scrapyd-run.log 2>&1 &
4.创建我们的scrapydweb服务,首先啊,肯定是先安装上我们的scrapydweb包啊。配置我们的scrapydweb的配置文件,只要你运行scrapydweb他默认会在我们第一次运行的目录下创建一个文件,当然了,目前是启动不了,因为配置文件没有编辑好呢!!
scrapydweb_settings_v10这个文件就是我们的scrapydweb的配置文件,进去编辑几个地方就好了。如果有其他需要自行研究。
4.1外网就可以访问scrapydweb了。
4.2外网访问scrapydweb就可以加上密码了。
4.3加入你scrapyd的访问路径(经过nginx做过代理的地址,以及端口啊),以及密码,记住记住一定要给我们scrapd弄成本地访问,不要放到公网。用nginx做一个转向,加一个密码,不要容易被攻击。
我的就是。上午突发事情,服务器被注入矿机了,杀了一上午。
警告:一定要记得给scrapyd用nginx做一个代理加密码啊!!!!。把scrapyd的配置文件中的地址改为127.0.0.1
SCRAPYD_SERVERS中填写的地址就是我们经过nginx代理过的地址。
输入格式为
‘用户名:密码@nginx代理的地址:端口#编组’
4.4这个也改正经过nginx做过代理的地址。
4.5
这个好像是存放scrapyd的日志的目录。也需要你搞一下。
5.继续在当前目录下面输入命令
创建好scrapydweb的nohup日志文件
touch scrapydweb-run.log
执行nohup命令
nohup scrapydweb >./scrapydweb-run.log 2>&1 &
这样我们在外网就输入地址就可以访问我们的scrapyd和scrapydweb的服务了。
继续说一遍啊
警告:千万、千万、千万给scrapyd用nginx做一个代理啊
然后通过打包我们的scrapy项目发送到scrapyd上面
在我们的scrapyd的更目录下执行如下操作
5. 1、进入带有scrapy.cfg文件的目录,
scrapy.cfg文件是给scrapyd-deploy使用的,
将里面url这行代码的注释去掉,并且在【deploy的位置】设置你的部署名称
复制代码
[settings]
default = company_info.settings
[deploy:wj]
url = http://localhost:6800/
project = company_info
- 2、执行scrapyd-deploy,测试scrapyd-deploy是否可以运行
scrapyd-deploy -l
如果出现 wj http://localhost:6800/ 说明正常运行
-
3、执行scrapy list 查看要可以运行的项目
- 4、用这个命令:scrapyd-deploy 部署名称 -p 项目名称
执行 scrapyd-deploy wj -p TotalSpider
该命令( scrapyd-deploy)通过读取scrapy项目目录下的配置文件scrapy.cfg来获取项目信息。
每一个scrapy.cfg对于scrapyd来说都是一个target。所以我们需要先编辑scrapy.cfg文件
[deploy:NAME]
如果你只有一个deploy配置那么可以不写NAME
但是如果你需要在多个远程服务器或者多个scrapyd进程上部署的话
应该为不同的deploy命名,方便部署。
- 5、
scrapyd-deploy -p 项目名 -v 版本名 --build-egg=egg包名.egg
输入完之后会生成一个egg文件即可
再记一个东西啊
编写计划任务的
crontab -e
`0 6 * * * /usr/local/python3/bin/python3 /home/python/down/downFile.py >> /root/down.log 2> /root/down_error.log &`