Scrapyd是一個用於部署和運行Scrapy項目的工具,有了它,你能夠將寫好的Scrapy項目上傳到雲主機並經過API來控制它的運行。html
既然是Scrapy項目部署,基本上都使用Linux主機,因此本節的安裝是針對於Linux主機的。python
這裏推薦使用pip安裝,命令以下:nginx
pip3 install scrapyd
安裝完畢以後,須要新建一個配置文件/etc/scrapyd/scrapyd.conf,Scrapyd在運行的時候會讀取此配置文件。git
在Scrapyd 1.2版本以後,不會自動建立該文件,須要咱們自行添加。github
首先,執行以下命令新建文件:web
sudo mkdir /etc/scrapyd sudo vi /etc/scrapyd/scrapyd.conf
接着寫入以下內容:json
[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,以使外網能夠訪問。瀏覽器
Scrapyd是一個純Python項目,這裏能夠直接調用它來運行。爲了使程序一直在後臺運行,Linux和Mac可使用以下命令:服務器
(scrapyd > /dev/null &)
這樣Scrapyd就會在後臺持續運行了,控制檯輸出直接忽略。固然,若是想記錄輸出日誌,能夠修改輸出目標,如:app
(scrapyd > ~/scrapyd.log &)
此時會將Scrapyd的運行結果輸出到~/scrapyd.log文件中。
固然也可使用screen、tmux、supervisor等工具來實現進程守護。
運行以後,即可以在瀏覽器的6800端口訪問Web UI了,從中能夠看到當前Scrapyd的運行任務、日誌等內容,如圖1所示。
圖1Scrapyd首頁
固然,運行Scrapyd更佳的方式是使用Supervisor守護進程,若是感興趣,能夠參考:http://supervisord.org/。
另外,Scrapyd也支持Docker,後面咱們會介紹Scrapyd Docker鏡像的製做和運行方法。
配置完成後,Scrapyd和它的接口都是能夠公開訪問的。若是想配置訪問認證的話,能夠藉助於Nginx作反向代理,這裏須要先安裝Nginx服務器。
在此以Ubuntu爲例進行說明,安裝命令以下:
sudo apt-get install nginx
而後修改Nginx的配置文件nginx.conf,增長以下配置:
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的文件,命令以下:
htpasswd -c .htpasswd admin
接着就會提示咱們輸入密碼,輸入兩次以後,就會生成密碼文件。此時查看這個文件的內容:
cat .htpasswd admin:5ZBxQr0rCqwbc
配置完成後,重啓一下Nginx服務,運行以下命令:
sudo nginx -s reload
這樣就成功配置了Scrapyd的訪問認證了。