Maison > développement back-end > tutoriel php > Comment déployer correctement les applications Web via SFTP avec GIT

Comment déployer correctement les applications Web via SFTP avec GIT

Jennifer Aniston
Libérer: 2025-02-10 14:27:12
original
511 Les gens l'ont consulté

Déployer des applications Web via SFTP avec GIT: un flux de travail sécurisé et efficace

Cet article explore l'utilisation de PhPSeclib et Git pour les déploiements SFTP rationalisés et sécurisés. Nous couvrirons les principales fonctionnalités, les méthodes d'authentification et les techniques d'automatisation pour optimiser votre processus de déploiement.

How to Properly Deploy Web Apps via SFTP with Git

Les méthodes SFTP traditionnelles utilisant des clients de bureau sont souvent lourdes et inefficaces, nécessitant des téléchargements de projet complets même pour des changements mineurs. PHPSECLIB propose une solution robuste, en tirant parti des extensions de PHP en option ou en se repliant sur l'implémentation interne pour la flexibilité. L'intégration de GIT améliore encore l'efficacité en transférant uniquement des fichiers modifiés, en économisant du temps et de la bande passante.

Avantages clés:

  • Transferts sécurisés: La communication cryptée de SFTP assure la sécurité des données.
  • Mises à jour efficaces: Le contrôle de version de Git permet de télécharger uniquement des fichiers modifiés.
  • Déploiements automatisés: Le script permet des processus de déploiement automatisés.
  • Fonctionnalité polyvalente: PHPSECLIB prend en charge les téléchargements de fichiers, les suppressions, la gestion des autorisations et l'exécution de la commande distante.

Installation et authentification PHPSeclib:

Installez PHPSECLIB à l'aide du compositeur:

composer require phpseclib/phpseclib
Copier après la connexion

PhPSECLIB prend en charge diverses méthodes d'authentification:

  • Clé RSA: L'option la plus sécurisée, en utilisant une clé privée pour l'authentification.
  • Clé RSA protégé par mot de passe: prend en charge les clés RSA avec protection par mot de passe.
  • Nom d'utilisateur et mot de passe: moins sécurisé et généralement découragé.

Exemple utilisant l'authentification de la clé RSA:

namespace App;

use phpseclib\Crypt\RSA;
use phpseclib\Net\SFTP;

$key = new RSA();
$key->loadKey(file_get_contents('privatekey'));
$sftp = new SFTP('192.168.0.1');

if (!$sftp->login('username', $key)) {
    exit('Login Failed');
}
Copier après la connexion

Gestion des fichiers (téléchargement et suppressions):

Fichiers de téléchargement:

$contents = file_get_contents('path/to/local/file');
$sftp->put('remote/path/file.txt', $contents);
Copier après la connexion

Suppression de fichiers et répertoires:

$sftp->delete('remote/path/file.txt'); // Single file
$sftp->delete('remote/directory', true); // Recursive directory deletion
Copier après la connexion

Automatisation du déploiement avec git:

Tirer parti des capacités de Git minimise les données transférées. Une classe GIT personnalisée peut être créée pour gérer les interactions GIT, telles que l'identification des fichiers modifiés:

// (Simplified Git class example - error handling omitted for brevity)
class Git {
    public function getChangedFiles($startCommit, $endCommit) {
        // ... (Git command execution using Symfony Process component) ...
        return $changedFiles; // Array of added, modified, and deleted files
    }
    // ... (Other Git helper functions) ...
}
Copier après la connexion

Le script de déploiement utilise ensuite cette classe GIT et PhPSeclib pour télécharger / supprimer les fichiers en conséquence:

$git = new Git();
$changedFiles = $git->getChangedFiles('HEAD~1', 'HEAD'); // Compare with previous commit

foreach ($changedFiles['added'] as $file) {
    // ... (Upload file using $sftp->put()) ...
}
foreach ($changedFiles['deleted'] as $file) {
    // ... (Delete file using $sftp->delete()) ...
}
Copier après la connexion

Exécution de la commande distante et gestion de l'autorisation:

PhPSECLIB permet d'exécuter des commandes sur le serveur distant:

$sftp->exec('php artisan migrate');
Copier après la connexion

Gestion des autorisations de fichiers:

$sftp->chmod(0755, 'remote/path/file.txt'); // Set permissions
Copier après la connexion

Alternatives:

Plusieurs alternatives existent pour les déploiements SFTP automatisés:

  • git-deploy-php
  • PHPloy
  • Deploy-Tantra (commercial)

Conclusion:

La combinaison de PHPSeclib et Git fournit une solution robuste, sécurisée et efficace pour les déploiements SFTP. L'automatisation de ce processus rationalise considérablement les flux de travail et réduit l'intervention manuelle. Considérez les implications de sécurité de chaque méthode d'authentification et choisissez la plus appropriée pour votre environnement. N'oubliez pas de tester soigneusement vos scripts de déploiement avant de les mettre en œuvre dans un environnement de production.

How to Properly Deploy Web Apps via SFTP with Git

(Remarque: Les extraits de code fournis sont des exemples simplifiés et peuvent nécessiter des ajustements en fonction de votre configuration et de votre environnement spécifiques.

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