Scrapy是Python中最受歡迎的爬蟲框架之一,它可以幫助使用者快速地建立爬蟲,並提高爬蟲的效率。而Scrapy自動化部署到伺服器則可以使得使用者更方便部署和管理爬蟲程式。本文將介紹Scrapy如何自動化部署到伺服器。
一、準備工具
要自動化部署Scrapy到伺服器,我們需要一些工具,這些工具包括:
這些工具都很常見,如果還沒有安裝,可以按照官方文件進行安裝。
二、建立專案
在進行Scrapy自動化部署之前,我們首先需要在本機上建立一個Scrapy專案。可以使用Scrapy命令列工具進行建立:
scrapy startproject myproject
這會建立一個名為myproject
的Scrapy項目,其中包含了一些預設的程式碼和目錄結構。接下來,我們可以編寫Spiders、Pipeline以及其他的元件。
為了讓我們的Scrapy專案可以更方便地在伺服器上部署和運行,我們可以在專案根目錄下創建一個requirements.txt
文件,用於管理專案所依賴的Python庫和版本。這個文件可以透過pip進行創建,例如:
pip freeze > requirements.txt
這會自動產生一個requirements.txt
文件,其中包含了目前系統中所安裝的所有Python庫以及它們的版本訊息。我們需要手動刪除其中不必要的程式庫並保留必需的程式庫,例如Scrapy和其他相關的程式庫和工具。確定好依賴之後,我們可以使用pip在虛擬環境中安裝這些依賴:
pip install -r requirements.txt
三、設定伺服器
在開始部署之前,我們需要在伺服器上安裝所需的元件。以Ubuntu為例,我們需要安裝Git、SSH、Virtualenv和Supervisor。可以透過以下命令進行安裝:
sudo apt-get update sudo apt-get install git ssh virtualenv supervisor
安裝完成後,我們需要在伺服器上建立一個新的使用者。這個使用者將會在之後的部署和運行中扮演重要的角色,並擁有Scrapy爬蟲的存取權。可以使用以下指令建立一個名為myuser
的新使用者:
sudo adduser myuser
接下來,我們需要建立一個新的目錄,用於保存Scrapy部署檔案和相關設定。在伺服器上,可以使用下列指令來建立一個/srv/myproject
的目錄:
sudo mkdir /srv/myproject sudo chown myuser:myuser /srv/myproject
四、設定Git倉庫和SSH
接下來,我們需要將Scrapy專案上傳到Git倉庫,並使用SSH進行部署。在本地,我們可以使用以下命令將Scrapy專案中所有的程式碼上傳到Git倉庫:
git init git add . git commit -m "Initial commit" git remote add origin ssh://myuser@myserver.com/srv/myproject.git git push -u origin master
這段程式碼將Scrapy專案上傳到了遠端伺服器上,保存在/srv/myproject.git
目錄下。
接下來,我們需要在伺服器上設定SSH,以便可以使用SSH連接到Git倉庫並執行相關操作。我們可以為此建立一個SSH金鑰,並將公鑰加入伺服器端的authorized_keys
檔案中。
首先,我們可以在本機上使用以下指令建立一個新的SSH金鑰:
ssh-keygen
這將會建立一對公鑰和私鑰。接下來,我們需要將公鑰新增至伺服器端的authorized_keys
檔案:
ssh myuser@myserver.com "mkdir -p ~/.ssh && chmod 0700 ~/.ssh && echo 'PUBLIC_KEY' >> ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys"
請取代PUBLIC_KEY
為您本機電腦上的公鑰。
現在我們可以使用SSH連接到伺服器上並進行操作。
五、部署Scrapy專案
現在,我們已經準備好在伺服器上自動部署Scrapy專案了。為此,我們需要在伺服器上新建一個虛擬環境,並安裝Scrapy和其他需要的依賴庫:
mkdir /srv/myproject/env virtualenv /srv/myproject/env source /srv/myproject/env/bin/activate pip install scrapy supervisor
在伺服器上建立Scrapy專案工作目錄,從Git倉庫中克隆Scrapy項目,並在其中建立一個supervisord.conf
檔案用於設定進程管理:
mkdir /srv/myproject/src cd /srv/myproject/src git clone ssh://myuser@myserver.com/srv/myproject.git . cp /srv/myproject/env/bin/supervisord /srv/myproject/env/bin/supervisord.conf /etc sudo supervisorctl reread sudo supervisorctl update
這會將Scrapy專案克隆到伺服器上,並在/srv/myproject
目錄下建立supervisord.conf
檔。我們可以編輯supervisord.conf
檔案來啟動Scrapy爬蟲:
[program:myproject] command=/srv/myproject/env/bin/scrapy crawl myspider directory=/srv/myproject/src autostart=true autorestart=true stopasgroup=true killasgroup=true
#其中command
參數用於啟動Scrapy爬蟲,directory
參數用於指定工作目錄,autostart
和autorestart
參數用於在Scrapy爬蟲停止後自動重啟,stopasgroup
和killasgroup
參數用於停止進程時同時停止所有相關進程。
最後,我們可以使用以下命令啟動Scrapy爬蟲:
sudo supervisorctl start myproject
這樣就可以把Scrapy爬蟲部署到伺服器上並自動運行了。
總結
自動化部署Scrapy到伺服器是一個非常方便且有效率的方法,我們可以將程式碼上傳到遠端Git倉庫中,並透過SSH連接伺服器進行部署和管理。透過使用Virtualenv和Supervisor,我們可以更好地控制專案的環境和進程,並讓Scrapy爬蟲在伺服器上自動化運作。
以上是Scrapy如何自動化部署到伺服器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!