Maison > développement back-end > tutoriel php > Déploiement facile des applications PHP avec déploieur

Déploiement facile des applications PHP avec déploieur

Joseph Gordon-Levitt
Libérer: 2025-02-15 08:54:12
original
886 Les gens l'ont consulté

Cet article a été mis à jour pour la dernière version de déploieur (au 26 mars 2017).


Les workflows de développement automatisés, y compris les tests, le style de code et les vérifications du système, est une pratique courante. Le déploiement de l'automatisation, déplaçant de nouvelles versions d'application vers la production, est tout aussi important. Les méthodes vont des téléchargements manuels FTP vers des outils sophistiqués comme Phing et l'envoi de Laravel. Cet article présente Deployeur, un puissant outil de déploiement PHP.

Easy Deployment of PHP Applications with Deployer

Caractéristiques clés du déploieur:

  • Deployeur est un outil basé sur PHP automatisant les déploiements d'applications PHP. Il prend en charge l'authentification SSH, permet de spécifier les serveurs de déploiement et utilise la commande dep pour exécuter des tâches définies.
  • Les déploiements de temps à zéro sont obtenus en gérant les versions et en liant la racine du serveur à un répertoire current représentant la dernière version. Cela élimine le besoin de mode de maintenance du serveur pendant les déploiements.
  • Les tâches pré-construites répondent aux besoins de l'application PHP courants, et des recettes préconfigurées existent pour les cadres populaires (Laravel, Symfony, Yii, Zend).
  • Les déploiements atomiques garantissent la cohérence des applications, même si le déploiement est interrompu. Une tâche rollback intégrée permet de revenir aux versions précédentes.

Exemple d'application:

La démonstration utilise une application à partir d'un article précédent, déployé dans une gouttelette DigitalOcean. Le code source est disponible sur github (lien omis pour la concision, car il n'est pas fourni dans le texte d'origine).

Installation:

Déploieur est distribué sous forme de fichier phar. Téléchargez-le et déplacez-le éventuellement vers le répertoire bac de votre système pour l'accès global (voir la documentation pour plus de détails):

mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep
Copier après la connexion
Copier après la connexion

Configuration du serveur:

Après le clonage du référentiel de démonstration, créez deploy.php pour définir les étapes de déploiement. Commencez par définir des serveurs. Authentification de nom d'utilisateur / mot de passe de base:

// deploy.php

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password']);
Copier après la connexion
Copier après la connexion

Spécifiez les types de serveurs (stadification, production) pour cibler les tâches vers des environnements spécifiques:

// 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');
Copier après la connexion
Copier après la connexion

default_stage est crucial lors de l'utilisation des étapes; Sinon, une erreur se produit. Remarque: PHP 7 permet de combiner use instructions (use function Deployer{set, server};).

Authentification SSH:

L'authentification des clés SSH est recommandée pour la production. (Reportez-vous aux guides de configuration de la clé SSH si nécessaire.)

// 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');
Copier après la connexion
Copier après la connexion

identityFile() par défaut est ~/.ssh/id_rsa. Personnalisez le chemin si nécessaire:

// deploy.php
    ->identityFile('path/to/id_rsa', 'path/to/id_rsa.pub', 'pass phrase')
Copier après la connexion
Copier après la connexion

Déploieur prend en charge diverses méthodes de connexion SSH, défautant vers les commandes système natives.

Extension SSH2:

L'extension PHP SSH2 offre une alternative. Installez et activez-le, puis nécessitez le package herzult/php-ssh et définissez ssh_type:

mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep
Copier après la connexion
Copier après la connexion

(Remarque: herzult/php-ssh n'est pas inclus dans le phar du déploieur; vous devrez peut-être créer un phar personnalisé.)

Configuration YAML:

Les serveurs

peuvent être définis dans un fichier yaml (servers.yml) et chargés à l'aide de serverList():

// deploy.php

server('digitalocean', '104.131.27.106')
    ->user($_ENV['staging_server_user'])
    ->password($_ENV['staging_server_password']);
Copier après la connexion
Copier après la connexion
// 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');
Copier après la connexion
Copier après la connexion

Définition de la tâche:

Les tâches

sont exécutées via la commande dep (par exemple, 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');
Copier après la connexion
Copier après la connexion

Un exemple de tâche peut télécharger des fichiers, exécuter des commandes de serveur, etc .:

// deploy.php
    ->identityFile('path/to/id_rsa', 'path/to/id_rsa.pub', 'pass phrase')
Copier après la connexion
Copier après la connexion

La méthode desc() ajoute un texte d'aide aux tâches:

// deploy.php
set('ssh_type', 'ext-ssh2');
// ...
Copier après la connexion

Organisation des tâches:

décomposer les grandes tâches en plus petites et réutilisables en utilisant before et after crochets:

# servers.yml
digitalocean:
  host: 104.131.27.106
  user: root
  identity_file: ~
  stage: staging
  deploy_path: /var/www/
Copier après la connexion

Déploiements de temps à zéro:

Utilisez un current Symlink pointant vers la dernière version du répertoire releases pour éviter les temps d'arrêt:

serverList('servers.yml');
Copier après la connexion

Tâches et recettes courantes:

Déploieur fournit des tâches communes et des recettes spécifiques au cadre (Laravel, Symfony, etc.). Exemple utilisant des tâches communes:

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

task('deploy:staging', function() {
    // ... deployment tasks ...
});
Copier après la connexion

Les sections restantes sur les recettes de déploiement et les FAQ sont omises par concision, car elles sont correctement couvertes dans le texte d'origine. Les concepts clés et les exemples de code ont été paraphrasés et réorganisés pour la clarté et la concision tout en maintenant la signification et la structure d'origine. Les images restent dans leur format et leurs positions d'origine.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal