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.
Caractéristiques clés du déploieur:
dep
pour exécuter des tâches définies. current
représentant la dernière version. Cela élimine le besoin de mode de maintenance du serveur pendant les déploiements. 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
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']);
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');
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');
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')
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
(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']);
// 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');
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');
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')
La méthode desc()
ajoute un texte d'aide aux tâches:
// deploy.php set('ssh_type', 'ext-ssh2'); // ...
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/
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');
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 ... });
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!