ホームページ  >  記事  >  バックエンド開発  >  Scrapy はサーバーへのデプロイメントをどのように自動化しますか?

Scrapy はサーバーへのデプロイメントをどのように自動化しますか?

WBOY
WBOYオリジナル
2023-06-22 08:08:381280ブラウズ

Scrapy は、Python で最も人気のあるクローラー フレームワークの 1 つで、ユーザーがクローラーを迅速に構築し、クローラーの効率を向上させるのに役立ちます。 Scrapy をサーバーに自動的に展開すると、ユーザーはクローラー プログラムを展開および管理することがさらに便利になります。この記事では、Scrapyをサーバーに自動デプロイする方法を紹介します。

1. 準備ツール

Scrapy をサーバーに自動的にデプロイするには、いくつかのツールが必要です。これらのツールには次のものが含まれます:

  1. Git: バージョン管理ツール。ローカルとサーバー間のコードを管理します。
  2. SSH: Secure Shell。ローカル サーバーとリモート サーバー間でデータを安全に転送し、コマンドを実行します。
  3. Virtualenv: Python 仮想環境管理ツール。Scrapy デプロイメント環境をより明確かつ独立させることができます。
  4. スーパーバイザー: サーバー上の Scrapy クローラー プロセスを管理および監視するために使用されるプロセス制御システム。

これらのツールは非常に一般的なものなので、まだインストールされていない場合は、公式ドキュメントに従ってインストールできます。

2. プロジェクトの作成

Scrapy のデプロイメントを自動化する前に、まずローカルで Scrapy プロジェクトを作成する必要があります。 Scrapy コマンド ライン ツールを使用して、以下を作成できます。

scrapy startproject myproject

これにより、myproject という名前の Scrapy プロジェクトが作成されます。このプロジェクトには、デフォルトのコードとディレクトリ構造が含まれています。次に、スパイダー、パイプライン、その他のコンポーネントを記述します。

Scrapy プロジェクトをサーバー上でデプロイして実行しやすくするために、プロジェクトのルート ディレクトリに requirements.txt ファイルを作成して、プロジェクトの依存関係 Python ライブラリとバージョン。このファイルは、pip を通じて作成できます。例:

pip freeze > requirements.txt

これにより、現在のシステムにインストールされているすべての Python ライブラリとそのバージョン情報が含まれる requirements.txt ファイルが自動的に生成されます。その中の不要なライブラリを手動で削除し、Scrapy やその他の関連ライブラリやツールなどの必要なライブラリを保持する必要があります。依存関係を特定したら、pip を使用してこれらの依存関係を仮想環境にインストールできます:

pip install -r requirements.txt

3. サーバーの構成

デプロイメントを開始する前に、必要なコンポーネントをサーバ。 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

4. 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 を使用して Git リポジトリに接続し、関連する操作を実行できるように、サーバー上で SSH を構成する必要があります。このための 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 を使用してサーバーに接続し、操作を実行できるようになります。

5. 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 クローラーが停止した後に自動的に再起動するために使用されます。および killasgroup パラメータを使用してプロセスを停止します。関連するすべてのプロセスを同時に停止します。 最後に、次のコマンドを使用して Scrapy クローラーを開始できます:

sudo supervisorctl start myproject

この方法で、Scrapy クローラーをサーバーにデプロイし、自動的に実行できます。

要約

Scrapy のサーバーへの自動デプロイは非常に便利で効率的な方法で、コードをリモート Git リポジトリにアップロードし、SSH 経由でサーバーに接続してデプロイと管理を行うことができます。 Virtualenv と Supervisor を使用すると、プロジェクトの環境とプロセスをより適切に制御し、Scrapy クローラーをサーバー上で自動的に実行できるようになります。

以上がScrapy はサーバーへのデプロイメントをどのように自動化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。