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.
Schlüsselfunktionen des Bereitstellers:
dep
, um definierte Aufgaben auszuführen. current
-Verzeichnis erreicht, das die neueste Version darstellt. Dadurch wird der Serverwartungsmodus während der Bereitstellung beseitigt. 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()
:
// 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 ... });
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!