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

Einfache Bereitstellung von PHP -Anwendungen mit Deployer

Joseph Gordon-Levitt
Freigeben: 2025-02-15 08:54:12
Original
886 Leute haben es durchsucht

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
Nach dem Login kopieren
Nach dem Login kopieren

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']);
Nach dem Login kopieren
Nach dem Login kopieren

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');
Nach dem Login kopieren
Nach dem Login kopieren

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');
Nach dem Login kopieren
Nach dem Login kopieren

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')
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

(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']);
Nach dem Login kopieren
Nach dem Login kopieren
// 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');
Nach dem Login kopieren
Nach dem Login kopieren

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');
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

// deploy.php
set('ssh_type', 'ext-ssh2');
// ...
Nach dem Login kopieren

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/
Nach dem Login kopieren

Zero-DownTime-Bereitstellungen:

Verwenden Sie einen

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

serverList('servers.yml');
Nach dem Login kopieren

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 ...
});
Nach dem Login kopieren
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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage