[Python3 網絡爬蟲開發實戰] 1.9.2-Scrapyd 的安裝
Scrapyd 是一個用于部署和運行 Scrapy 項目的工具,有了它,你可以將寫好的 Scrapy 項目上傳到云主機并通過 API 來控制它的運行。
既然是 Scrapy 項目部署,基本上都使用 Linux 主機,所以本節的安裝是針對于 Linux 主機的。
1. 相關鏈接
GitHub:https://github.com/scrapy/scrapyd
PyPI:https://pypi.python.org/pypi/scrapyd
官方文檔:https://scrapyd.readthedocs.io
2. pip 安裝
這里推薦使用 pip 安裝,命令如下:
1
pip3 install scrapyd
3. 配置
安裝完畢之后,需要新建一個配置文件 /etc/scrapyd/scrapyd.conf,Scrapyd 在運行的時候會讀取此配置文件。
在 Scrapyd 1.2 版本之后,不會自動創建該文件,需要我們自行添加。
首先,執行如下命令新建文件:
1
2
sudo mkdir /etc/scrapyd
sudo vi /etc/scrapyd/scrapyd.conf
接著寫入如下內容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[scrapyd]
eggs_dir = eggs
logs_dir = logs
items_dir =
jobs_to_keep = 5
dbs_dir = dbs
max_proc = 0
max_proc_per_cpu = 10
finished_to_keep = 100
poll_interval = 5.0
bind_address = 0.0.0.0
http_port = 6800
debug = off
runner = scrapyd.runner
application = scrapyd.app.application
launcher = scrapyd.launcher.Launcher
webroot = scrapyd.website.Root
[services]
schedule.json = scrapyd.webservice.Schedule
cancel.json = scrapyd.webservice.Cancel
addversion.json = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json = scrapyd.webservice.ListSpiders
delproject.json = scrapyd.webservice.DeleteProject
delversion.json = scrapyd.webservice.DeleteVersion
listjobs.json = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus
配置文件的內容可以參見官方文檔 https://scrapyd.readthedocs.io/en/stable/config.html#example-configuration-file。這里的配置文件有所修改,其中之一是 max_proc_per_cpu 官方默認為 4,即一臺主機每個 CPU 最多運行 4 個 Scrapy 任務,在此提高為 10。另外一個是 bind_address,默認為本地 127.0.0.1,在此修改為 0.0.0.0,以使外網可以訪問。
4. 后臺運行
Scrapyd 是一個純 Python 項目,這里可以直接調用它來運行。為了使程序一直在后臺運行,Linux 和 Mac 可以使用如下命令:
1
(scrapyd > /dev/null &)
這樣 Scrapyd 就會在后臺持續運行了,控制臺輸出直接忽略。當然,如果想記錄輸出日志,可以修改輸出目標,如:
1
(scrapyd > ~/scrapyd.log &)
此時會將 Scrapyd 的運行結果輸出到~/scrapyd.log 文件中。
當然也可以使用 screen、tmux、supervisor 等工具來實現進程守護。
運行之后,便可以在瀏覽器的 6800 端口訪問 Web UI 了,從中可以看到當前 Scrapyd 的運行任務、日志等內容,如圖 1-85 所示。
圖 1-85 Scrapyd 首頁
當然,運行 Scrapyd 更佳的方式是使用 Supervisor 守護進程,如果感興趣,可以參考:http://supervisord.org/。
另外,Scrapyd 也支持 Docker,后面我們會介紹 Scrapyd Docker 鏡像的制作和運行方法。
5. 訪問認證
配置完成后,Scrapyd 和它的接口都是可以公開訪問的。如果想配置訪問認證的話,可以借助于 Nginx 做反向代理,這里需要先安裝 Nginx 服務器。
在此以 Ubuntu 為例進行說明,安裝命令如下:
1
sudo apt-get install nginx
然后修改 Nginx 的配置文件 nginx.conf,增加如下配置:
1
2
3
4
5
6
7
8
9
10
http {
server {
listen 6801;
location / {
proxy_pass http://127.0.0.1:6800/;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
}
}
}
這里使用的用戶名和密碼配置放置在 /etc/nginx/conf.d 目錄下,我們需要使用 htpasswd 命令創建。例如,創建一個用戶名為 admin 的文件,命令如下:
1
htpasswd -c .htpasswd admin
接著就會提示我們輸入密碼,輸入兩次之后,就會生成密碼文件。此時查看這個文件的內容:
1
2
cat .htpasswd
admin:5ZBxQr0rCqwbc
配置完成后,重啟一下 Nginx 服務,運行如下命令:
1
sudo nginx -s reload
這樣就成功配置了 Scrapyd 的訪問認證了。
Python 網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。