Maison >développement back-end >Tutoriel Python >Comment Scrapy automatise-t-il le déploiement sur le serveur ?

Comment Scrapy automatise-t-il le déploiement sur le serveur ?

WBOY
WBOYoriginal
2023-06-22 08:08:381339parcourir

Scrapy est l'un des frameworks de robots d'exploration les plus populaires en Python. Il peut aider les utilisateurs à créer rapidement des robots d'exploration et à améliorer leur efficacité. Le déploiement automatique de Scrapy sur le serveur peut permettre aux utilisateurs de déployer et de gérer plus facilement les programmes d'exploration. Cet article explique comment déployer automatiquement Scrapy sur le serveur.

1. Outils de préparation

Pour déployer automatiquement Scrapy sur le serveur, nous avons besoin de quelques outils, ces outils incluent :

  1. Git : outil de contrôle de version pour gérer le code entre le local et le serveur.
  2. SSH : Secure Shell, transférez des données en toute sécurité et exécutez des commandes entre des serveurs locaux et distants.
  3. Virtualenv : outil de gestion de l'environnement virtuel Python, qui peut rendre notre environnement de déploiement Scrapy plus clair et indépendant.
  4. Superviseur : système de contrôle de processus, utilisé pour gérer et surveiller le processus du robot Scrapy sur le serveur.

Ces outils sont très courants S'ils ne sont pas encore installés, vous pouvez les installer selon la documentation officielle.

2. Créer un projet

Avant le déploiement automatisé de Scrapy, nous devons d'abord créer un projet Scrapy localement. Il peut être créé à l'aide de l'outil de ligne de commande Scrapy :

scrapy startproject myproject

Cela créera un projet Scrapy nommé monprojet, qui inclut du code par défaut et une structure de répertoires. Ensuite, nous pouvons écrire des Spiders, des Pipelines et d’autres composants. 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

Afin de rendre notre projet Scrapy plus pratique à déployer et à exécuter sur le serveur, nous pouvons créer un fichier requirements.txt dans le répertoire racine du projet pour gérer les bibliothèques Python et les bibliothèques dont dépend le projet. sur. Ce fichier peut être créé via pip, par exemple :

sudo supervisorctl start myproject

Cela générera automatiquement un fichier requirements.txt, qui contient toutes les bibliothèques Python installées dans le système actuel et leurs informations de version. Nous devons supprimer manuellement les bibliothèques inutiles et conserver les bibliothèques nécessaires comme Scrapy et d'autres bibliothèques et outils associés. Après avoir déterminé les dépendances, nous pouvons utiliser pip pour installer ces dépendances dans l'environnement virtuel :

rrreee

3. Configurer le serveur

Avant de démarrer le déploiement, nous devons installer les composants requis sur le serveur. En prenant Ubuntu comme exemple, nous devons installer Git, SSH, Virtualenv et Supervisor. Il peut être installé via la commande suivante : 🎜rrreee🎜Une fois l'installation terminée, nous devons créer un nouvel utilisateur sur le serveur. Cet utilisateur jouera un rôle important dans le déploiement et le fonctionnement ultérieurs et aura accès au robot Scrapy. Un nouvel utilisateur nommé myuser peut être créé à l'aide de la commande suivante : 🎜rrreee🎜 Ensuite, nous devons créer un nouveau répertoire pour enregistrer les fichiers de déploiement Scrapy et les configurations associées. Sur le serveur, vous pouvez utiliser la commande suivante pour créer un répertoire /srv/myproject : 🎜rrreee🎜4 Configurez le référentiel Git et SSH🎜🎜Ensuite, nous devons télécharger le projet Scrapy sur. le référentiel Git et déployez à l’aide de SSH. Localement, nous pouvons utiliser la commande suivante pour télécharger tout le code du projet Scrapy vers le référentiel Git :🎜rrreee🎜Ce code télécharge le projet Scrapy sur le serveur distant et l'enregistre dans /srv/myproject.git code> répertoire. 🎜🎜Ensuite, nous devons configurer SSH sur le serveur afin de pouvoir utiliser SSH pour nous connecter au référentiel Git et effectuer les opérations associées. Nous pouvons créer une clé SSH pour cela et ajouter la clé publique au fichier <code>authorized_keys côté serveur. 🎜🎜Tout d'abord, nous pouvons créer une nouvelle clé SSH localement en utilisant la commande suivante : 🎜rrreee🎜Cela créera une paire de clés publique et privée. Ensuite, nous devons ajouter la clé publique au fichier authorized_keys côté serveur : 🎜rrreee🎜 Veuillez remplacer PUBLIC_KEY par la clé publique sur votre ordinateur local. 🎜🎜Nous pouvons désormais utiliser SSH pour nous connecter au serveur et effectuer des opérations. 🎜🎜5. Déployer le projet Scrapy🎜🎜Maintenant, nous sommes prêts à déployer automatiquement le projet Scrapy sur le serveur. Pour ce faire, nous devons créer un nouvel environnement virtuel sur le serveur et installer Scrapy et les autres bibliothèques dépendantes requises : 🎜rrreee🎜Créez un répertoire de travail du projet Scrapy sur le serveur, clonez le projet Scrapy à partir du référentiel Git et créez un supervisord.conf est utilisé pour configurer la gestion des processus : 🎜rrreee🎜Cela clonera le projet Scrapy sur le serveur et créera supervisord dans le répertoire <code>/srv/myproject .conf fichier. Nous pouvons éditer le fichier supervisord.conf pour démarrer le robot Scrapy : 🎜rrreee🎜Le paramètre command est utilisé pour démarrer le robot Scrapy, et le répertoire code> est utilisé pour spécifier le répertoire de travail, les paramètres <code>autostart et autorestart sont utilisés pour redémarrer automatiquement le robot Scrapy après son arrêt, le stopasgroup et les paramètres killasgroup sont utilisés. Lors de l'arrêt d'un processus, il arrête également tous les processus associés. 🎜🎜Enfin, nous pouvons utiliser la commande suivante pour démarrer le robot Scrapy : 🎜rrreee🎜De cette façon, le robot Scrapy peut être déployé sur le serveur et s'exécuter automatiquement. 🎜🎜Résumé🎜

Le déploiement automatisé de Scrapy sur le serveur est une méthode très pratique et efficace. Nous pouvons télécharger le code sur le référentiel Git distant et nous connecter au serveur via SSH pour le déploiement et la gestion. En utilisant Virtualenv et Supervisor, nous pouvons mieux contrôler l'environnement et le processus du projet, et laisser les robots Scrapy s'exécuter automatiquement sur le serveur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn