Scrapy如何自動化部署到伺服器?

WBOY
發布: 2023-06-22 08:08:38
原創
1303 人瀏覽過

Scrapy是Python中最受歡迎的爬蟲框架之一,它可以幫助使用者快速地建立爬蟲,並提高爬蟲的效率。而Scrapy自動化部署到伺服器則可以使得使用者更方便部署和管理爬蟲程式。本文將介紹Scrapy如何自動化部署到伺服器。

一、準備工具

要自動化部署Scrapy到伺服器,我們需要一些工具,這些工具包括:

  1. Git: 版本控制工具,用於在本地和伺服器之間管理程式碼。
  2. SSH: Secure Shell,在本機和遠端伺服器之間安全地傳輸資料和執行命令。
  3. Virtualenv: Python虛擬環境管理工具,可以讓我們的Scrapy部署環境更加清晰和獨立。
  4. Supervisor: 進程控制系統,用於在伺服器上管理和監控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參數用於指定工作目錄,autostartautorestart參數用於在Scrapy爬蟲停止後自動重啟,stopasgroupkillasgroup參數用於停止進程時同時停止所有相關進程。

最後,我們可以使用以下命令啟動Scrapy爬蟲:

sudo supervisorctl start myproject
登入後複製

這樣就可以把Scrapy爬蟲部署到伺服器上並自動運行了。

總結

自動化部署Scrapy到伺服器是一個非常方便且有效率的方法,我們可以將程式碼上傳到遠端Git倉庫中,並透過SSH連接伺服器進行部署和管理。透過使用Virtualenv和Supervisor,我們可以更好地控制專案的環境和進程,並讓Scrapy爬蟲在伺服器上自動化運作。

以上是Scrapy如何自動化部署到伺服器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板