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

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

Jun 22, 2023 am 08:08 AM
無駄に自動化されたデプロイメント サーバーの展開 自動導入ソリューション

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

正規表現とは何ですか? 正規表現とは何ですか? Mar 20, 2025 pm 06:25 PM

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? 文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? Apr 01, 2025 pm 11:18 PM

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

人気のあるPythonライブラリとその用途は何ですか? 人気のあるPythonライブラリとその用途は何ですか? Mar 21, 2025 pm 06:46 PM

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

See all articles