15.2 Scrapyd-Client 的使用
15.2 Scrapyd-Client 的使用
這裡有現成的工具來完成部署過程,它叫作 Scrapyd-Client。本節將簡單介紹使用 Scrapyd-Client 部署 Scrapy 專案的方法。
1. 準備工作
請先確保 Scrapyd-Client 已經正確安裝,安裝方式可以參考第 1 章的內容。
2. Scrapyd-Client 的功能
Scrapyd-Client 為了方便 Scrapy 專案的部署,提供兩個功能:
- 將專案打包成 Egg 檔案。
- 將打包生成的 Egg 檔案通過 addversion.json 介面部署到 Scrapyd 上。
也就是說,Scrapyd-Client 幫我們把部署全部實現了,我們不需要再去關心 Egg 檔案是怎樣生成的,也不需要再去讀 Egg 檔案並請求介面上傳了,這一切的操作只需要執行一個命令即可一鍵部署。
3. Scrapyd-Client 部署
要部署 Scrapy 專案,我們首先需要修改一下專案的配置檔案,例如我們之前寫的 Scrapy 微博爬蟲專案,在專案的第一層會有一個 scrapy.cfg 檔案,它的內容如下:
[settings]
default = weibo.settings
[deploy]
#url = http://localhost:6800/
project = weibo
在這裡我們需要配置一下 deploy 部分,例如我們要將專案部署到 120.27.34.25 的 Scrapyd 上,就需要修改為如下內容:
[deploy] url = http://120.27.34.25:6800/ project = weibo
這樣我們再在 scrapy.cfg 檔案所在路徑執行如下命令:
scrapyd-deploy
執行結果如下:
Packing version 1501682277 Deploying to project "weibo" in http://120.27.34.25:6800/addversion.json Server response (200): {"status": "ok", "spiders": 1, "node_name": "datacrawl-vm", "project": "weibo", "version": "1501682277"}
返回這樣的結果就代表部署成功了。
我們也可以指定專案版本,如果不指定的話預設為當前時間戳,指定的話通過 version 引數傳遞即可,例如:
scrapyd-deploy --version 201707131455
值得注意的是在 Python3 的 Scrapyd 1.2.0 版本中我們不要指定版本號為帶字母的字串,需要為純數字,否則可能會出現報錯。
另外如果我們有多臺主機,我們可以配置各臺主機的別名,例如可以修改配置檔案為:
[deploy:vm1]
url = http://120.27.34.24:6800/
project = weibo
[deploy:vm2]
url = http://139.217.26.30:6800/
project = weibo
有多臺主機的話就在此統一配置,一臺主機對應一組配置,在 deploy 後面加上主機的別名即可,這樣如果我們想將專案部署到 IP 為 139.217.26.30 的 vm2 主機,我們只需要執行如下命令:
scrapyd-deploy vm2
這樣我們就可以將專案部署到名稱為 vm2 的主機上了。
如此一來,如果我們有多臺主機,我們只需要在 scrapy.cfg 檔案中配置好各臺主機的 Scrapyd 地址,然後呼叫 scrapyd-deploy 命令加主機名稱即可實現部署,非常方便。
如果 Scrapyd 設定了訪問限制的話,我們可以在配置檔案中加入使用者名稱和密碼的配置,同時埠修改一下,修改成 Nginx 代理埠,如在第一章我們使用的是 6801,那麼這裡就需要改成 6801,修改如下:
[deploy:vm1]
url = http://120.27.34.24:6801/
project = weibo
username = admin
password = admin
[deploy:vm2]
url = http://139.217.26.30:6801/
project = weibo
username = germey
password = germey
這樣通過加入 username 和 password 欄位我們就可以在部署時自動進行 Auth 驗證,然後成功實現部署。
4. 結語
本節介紹了利用 Scrapyd-Client 來方便地將專案部署到 Scrapyd 的過程,有了它部署不再是麻煩事。