Heim >Backend-Entwicklung >PHP-Tutorial >Einfache Bereitstellung von PHP -Anwendungen mit Deployer

Einfache Bereitstellung von PHP -Anwendungen mit Deployer

Joseph Gordon-Levitt
Joseph Gordon-LevittOriginal
2025-02-15 08:54:12957Durchsuche

Dieser Artikel wurde für die neueste Bereitstellungsversion (ab dem 26. März 2017) aktualisiert.


Die Automatisierung von Entwicklungsworkflows, einschließlich Tests, Code -Styling und Systemprüfungen, ist eine gängige Praxis. Die Bereitstellungsautomatisierung, die neue Anwendungsversionen in die Produktion verschieben, ist ebenso wichtig. Die Methoden reichen von manuellen FTP -Uploads bis hin zu hoch entwickelten Tools wie Phing und Laravels Gesandten. In diesem Artikel wird Deployer eingeführt, ein leistungsstarkes PHP -Bereitstellungstool.

Easy Deployment of PHP Applications with Deployer

Schlüsselfunktionen des Bereitstellers:

  • Deployer ist ein PHP-basiertes Tool, das PHP-Anwendungsbereitstellungen automatisiert. Es unterstützt die SSH -Authentifizierung, ermöglicht die Angabe von Bereitstellungsservern und verwendet den Befehl dep, um definierte Aufgaben auszuführen.
  • Zero-DownTime-Bereitstellungen werden durch Verwalten von Releases und Verknüpfung des Server-Roots mit einem current -Verzeichnis erreicht, das die neueste Version darstellt. Dadurch wird der Serverwartungsmodus während der Bereitstellung beseitigt.
  • Vorgefertigte Aufgaben richten sich an die allgemeinen PHP-Anwendungsbedürfnisse, und vorkonfigurierte Rezepte für beliebte Frameworks (Laravel, Symfony, Yii, Zend).
  • atomare Bereitstellungen gewährleisten die Anwendungskonsistenz, auch wenn die Bereitstellung unterbrochen wird. Eine integrierte rollback -Abgleis ermöglicht die Rückkehr zu vorherigen Veröffentlichungen.

Beispielanwendung:

Die Demonstration verwendet eine Anwendung aus einem vorherigen Artikel, der in einem digitalen Tröpfchen bereitgestellt wird. Der Quellcode ist auf GitHub verfügbar (Link für die Kürze weggelassen, da er nicht im Originaltext bereitgestellt wird).

Installation:

Bereitsteller wird als PHAR -Datei verteilt. Laden Sie es herunter und verschieben Sie es optional in das Bin -Verzeichnis Ihres Systems für den globalen Zugriff (Einzelheiten siehe Dokumentation):

mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep

Serverkonfiguration:

Erstellen Sie nach dem Klonen des Demo -Repositorys deploy.php, um Bereitstellungsschritte zu definieren. Beginnen Sie mit der Definition von Servern. Grundlegende Benutzername/Kennwortauthentifizierung:

// deploy.php

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password']);

Geben Sie Servertypen (Staging, Produktion) an, um Aufgaben auf bestimmte Umgebungen zu zielen:

// deploy.php
use function Deployer\set;
use function Deployer\server;

set('default_stage', 'staging');

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password'])
    ->stage('staging')
    ->env('deploy_path', '/var/www');

default_stage ist bei der Verwendung von Stufen entscheidend; Andernfalls tritt ein Fehler auf. HINWEIS: PHP 7 ermöglicht das Kombinieren von use Anweisungen (use function Deployer{set, server};).

SSH -Authentifizierung:

SSH -Schlüsselauthentifizierung wird für die Produktion empfohlen. (Siehe SSH Key Setup Guides bei Bedarf.)

// deploy.php
use function Deployer\{set, server};

set('default_stage', 'staging');

server('digitalocean', '104.131.27.106')
    ->identityFile()
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password'])
    ->stage('staging');

identityFile() standardmäßig ~/.ssh/id_rsa. Passen Sie den Pfad bei Bedarf an:

// deploy.php
    ->identityFile('path/to/id_rsa', 'path/to/id_rsa.pub', 'pass phrase')

Deployer unterstützt verschiedene SSH -Verbindungsmethoden, die sich mit nativen Systembefehlen befinden.

SSH2 -Erweiterung:

Die PHP SSH2 -Erweiterung bietet eine Alternative. Installieren und aktivieren, benötigen Sie das herzult/php-ssh -Paket und setzen Sie ssh_type:

mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep

(Anmerkung: herzult/php-ssh ist nicht im Bereitstellungs -Phar enthalten; Sie müssen möglicherweise ein benutzerdefiniertes Phar erstellen.)

YAML -Konfiguration:

Server können in einer YAML -Datei definiert werden (servers.yml) und unter Verwendung serverList():

geladen werden
// deploy.php

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password']);
// deploy.php
use function Deployer\set;
use function Deployer\server;

set('default_stage', 'staging');

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password'])
    ->stage('staging')
    ->env('deploy_path', '/var/www');

Task Definition:

Aufgaben werden über den Befehl dep ausgeführt (z. B. dep deploy:staging).

// deploy.php
use function Deployer\{set, server};

set('default_stage', 'staging');

server('digitalocean', '104.131.27.106')
    ->identityFile()
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password'])
    ->stage('staging');

Eine Beispielaufgabe kann Dateien hochladen, Serverbefehle ausführen usw.:

// deploy.php
    ->identityFile('path/to/id_rsa', 'path/to/id_rsa.pub', 'pass phrase')

Die desc() -Methode fügt den Aufgaben Hilfstext hinzu:

// deploy.php
set('ssh_type', 'ext-ssh2');
// ...

Taskorganisation:

Brechen Sie große Aufgaben mit before und after Haken in kleinere, wiederverwendbare.

# servers.yml
digitalocean:
  host: 104.131.27.106
  user: root
  identity_file: ~
  stage: staging
  deploy_path: /var/www/

Zero-DownTime-Bereitstellungen:

Verwenden Sie einen

Symlink, der auf die neueste Version im Verzeichnis current zeigt, um Ausfallzeiten zu vermeiden: releases

serverList('servers.yml');

gemeinsame Aufgaben und Rezepte:

Bergabwickler bietet gemeinsame Aufgaben und Framework-spezifische Rezepte (Laravel, Symfony usw.). Beispiel unter Verwendung gemeinsamer Aufgaben:

// deploy.php
use function Deployer\{server, task, run, set, get, add, before, after, upload};

task('deploy:staging', function() {
    // ... deployment tasks ...
});
Die verbleibenden Abschnitte zu Bereitstellungsrezepten und FAQs werden aus der Kürze weggelassen, da sie im Originaltext ausreichend behandelt werden. Die Schlüsselkonzepte und Code -Beispiele wurden für Klarheit und Zuversicht umgezogen und gleichzeitig reorganisiert und gleichzeitig die ursprüngliche Bedeutung und Struktur beibehalten. Die Bilder bleiben in ihrem ursprünglichen Format und ihrer Positionen.

Das obige ist der detaillierte Inhalt vonEinfache Bereitstellung von PHP -Anwendungen mit Deployer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn