Scrapy ist eines der beliebtesten Crawler-Frameworks in Python. Es kann Benutzern helfen, Crawler schnell zu erstellen und die Crawler-Effizienz zu verbessern. Durch die automatische Bereitstellung von Scrapy auf dem Server können Benutzer Crawler-Programme bequemer bereitstellen und verwalten. In diesem Artikel erfahren Sie, wie Sie Scrapy automatisch auf dem Server bereitstellen.
1. Vorbereitungstools
Um Scrapy automatisch auf dem Server bereitzustellen, benötigen wir einige Tools. Zu diesen Tools gehören:
Diese Tools sind sehr verbreitet. Wenn sie noch nicht installiert sind, können Sie sie gemäß der offiziellen Dokumentation installieren.
2. Erstellen Sie ein Projekt
Vor der automatisierten Scrapy-Bereitstellung müssen wir zunächst lokal ein Scrapy-Projekt erstellen. Es kann mit dem Scrapy-Befehlszeilentool erstellt werden:
scrapy startproject myproject
Dadurch wird ein Scrapy-Projekt mit dem Namen myproject
erstellt, das einige Standardcodes und eine Verzeichnisstruktur enthält. Als nächstes können wir Spiders, Pipelines und andere Komponenten schreiben. 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
requirements.txt
erstellen, um die Python-Bibliotheken und Bibliotheken zu verwalten, von denen das Projekt abhängt auf. Version. Diese Datei kann beispielsweise über pip erstellt werden: sudo supervisorctl start myproject
requirements.txt
-Datei generiert, die alle im aktuellen System installierten Python-Bibliotheken und deren Versionsinformationen enthält. Wir müssen die unnötigen Bibliotheken darin manuell entfernen und die notwendigen Bibliotheken wie Scrapy und andere verwandte Bibliotheken und Tools behalten. Nachdem wir die Abhängigkeiten ermittelt haben, können wir pip verwenden, um diese Abhängigkeiten in der virtuellen Umgebung zu installieren: rrreee
3. Konfigurieren Sie den Server Bevor wir mit der Bereitstellung beginnen, müssen wir die erforderlichen Komponenten auf dem Server installieren. Am Beispiel von Ubuntu müssen wir Git, SSH, Virtualenv und Supervisor installieren. Es kann über den folgenden Befehl installiert werden: 🎜rrreee🎜Nachdem die Installation abgeschlossen ist, müssen wir einen neuen Benutzer auf dem Server erstellen. Dieser Benutzer wird bei der späteren Bereitstellung und dem Betrieb eine wichtige Rolle spielen und Zugriff auf den Scrapy-Crawler haben. Mit dem folgenden Befehl kann ein neuer Benutzer namensmyuser
erstellt werden: 🎜rrreee🎜 Als nächstes müssen wir ein neues Verzeichnis erstellen, um Scrapy-Bereitstellungsdateien und zugehörige Konfigurationen zu speichern. Auf dem Server können Sie den folgenden Befehl verwenden, um ein Verzeichnis /srv/myproject
zu erstellen: 🎜rrreee🎜4. Richten Sie das Git-Repository und SSH ein🎜🎜Als nächstes müssen wir das Scrapy-Projekt hochladen das Git-Repository und stellen Sie es über SSH bereit. Lokal können wir den folgenden Befehl verwenden, um den gesamten Code im Scrapy-Projekt in das Git-Repository hochzuladen:🎜rrreee🎜Dieser Code lädt das Scrapy-Projekt auf den Remote-Server hoch und speichert es in /srv/myproject.git Code> Verzeichnis. 🎜🎜Als nächstes müssen wir SSH auf dem Server konfigurieren, damit wir SSH verwenden können, um eine Verbindung zum Git-Repository herzustellen und entsprechende Vorgänge auszuführen. Wir können hierfür einen SSH-Schlüssel erstellen und den öffentlichen Schlüssel serverseitig zur Datei <code>authorized_keys
hinzufügen. 🎜🎜Zunächst können wir mit dem folgenden Befehl lokal einen neuen SSH-Schlüssel erstellen: 🎜rrreee🎜Dadurch wird ein öffentliches und privates Schlüsselpaar erstellt. Als nächstes müssen wir den öffentlichen Schlüssel zur Datei authorized_keys
auf der Serverseite hinzufügen: 🎜rrreee🎜 Bitte ersetzen Sie PUBLIC_KEY
durch den öffentlichen Schlüssel auf Ihrem lokalen Computer. 🎜🎜Jetzt können wir SSH verwenden, um eine Verbindung zum Server herzustellen und Vorgänge auszuführen. 🎜🎜5. Stellen Sie das Scrapy-Projekt bereit🎜🎜Jetzt sind wir bereit, das Scrapy-Projekt automatisch auf dem Server bereitzustellen. Dazu müssen wir eine neue virtuelle Umgebung auf dem Server erstellen und Scrapy und andere erforderliche abhängige Bibliotheken installieren: 🎜rrreee🎜Erstellen Sie ein Scrapy-Projekt-Arbeitsverzeichnis auf dem Server, klonen Sie das Scrapy-Projekt aus dem Git-Repository und erstellen Sie ein supervisord.conf wird zum Konfigurieren der Prozessverwaltung verwendet: 🎜rrreee🎜Dadurch wird das Scrapy-Projekt auf den Server geklont und supervisord im Verzeichnis <code>/srv/myproject
erstellt .conf-Datei. Wir können die Datei supervisord.conf
bearbeiten, um den Scrapy-Crawler zu starten: 🎜rrreee🎜Der Parameter command
wird zum Starten des Scrapy-Crawlers und das Verzeichnis verwendet. Der Parameter code> wird verwendet, um das Arbeitsverzeichnis anzugeben. Die Parameter <code>autostart
und autorestart
werden verwendet, um den Scrapy-Crawler automatisch neu zu starten, nachdem er gestoppt wurde, die stopasgroup
und killasgroup
-Parameter werden verwendet. Beim Stoppen eines Prozesses werden auch alle zugehörigen Prozesse gestoppt. 🎜🎜Abschließend können wir den Scrapy-Crawler mit dem folgenden Befehl starten: 🎜rrreee🎜Auf diese Weise kann der Scrapy-Crawler auf dem Server bereitgestellt und automatisch ausgeführt werden. 🎜🎜Zusammenfassung🎜Die automatisierte Bereitstellung von Scrapy auf dem Server ist eine sehr praktische und effiziente Methode. Wir können den Code in das Remote-Git-Repository hochladen und zur Bereitstellung und Verwaltung eine Verbindung zum Server herstellen. Durch die Verwendung von Virtualenv und Supervisor können wir die Umgebung und den Prozess des Projekts besser steuern und den Scrapy-Crawler automatisch auf dem Server ausführen lassen.
Das obige ist der detaillierte Inhalt vonWie automatisiert Scrapy die Bereitstellung auf dem Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!