ホームページ >バックエンド開発 >PHPチュートリアル >gitを使用してSFTPを介してWebアプリを適切に展開する方法

gitを使用してSFTPを介してWebアプリを適切に展開する方法

Jennifer Aniston
Jennifer Anistonオリジナル
2025-02-10 14:27:12433ブラウズ
この記事では、合理化された安全なSFTP展開のために、PHPSECLIBとGITを使用して検討します。 展開プロセスを最適化するために、主要な機能、認証方法、自動化技術について説明します。

デスクトップクライアントを使用した従来のSFTPメソッドは、しばしば面倒で非効率的であり、わずかな変更にも完全なプロジェクトのアップロードが必要です。 PHPSECLIBは堅牢なソリューションを提供し、オプションのPHP拡張機能を活用するか、柔軟性のために内部実装に戻ります。 GITの統合は、変更されたファイルのみを転送し、時間と帯域幅を節約することにより、効率をさらに向上させます。

How to Properly Deploy Web Apps via SFTP with Git 主要な利点:

セキュア転送:SFTPの暗号化された通信により、データセキュリティが保証されます

    効率的なアップデート:
  • gitのバージョン制御により、変更されたファイルのみをアップロードできます。 自動展開:
  • スクリプトは、自動展開プロセスを有効にします
  • 汎用性のある機能:phpseclibは、ファイルのアップロード、削除、許可管理、およびリモートコマンドの実行をサポートしています。
  • phpseclibのインストールと認証:
  • コンポーザーを使用してphpseclibをインストールします:
  • phpseclibはさまざまな認証方法をサポートしています:

rsaキー:

認証に秘密鍵を使用している最も安全なオプション。

パスワードで保護されたRSAキー:
<code class="language-bash">composer require phpseclib/phpseclib</code>
パスワード保護でRSAキーをサポートします。

ユーザー名とパスワード:
    安全性が低く、一般的に落胆しています。
  • RSAキー認証を使用した例:
  • 例:
  • ファイル管理(アップロードと削除):
  • ファイルのアップロード:

ファイルとディレクトリの削除:

<code class="language-php">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');
}</code>

gitを使用した展開の自動:

GITの機能を活用すると、転送されたデータが最小限に抑えられます。 変更されたファイルの識別など、GITインタラクションを管理するためにカスタムGitクラスを作成できます。

展開スクリプトは、このgitクラスとphpseclibを使用して、それに応じてファイルをアップロード/削除します。
<code class="language-php">$contents = file_get_contents('path/to/local/file');
$sftp->put('remote/path/file.txt', $contents);</code>

リモートコマンドの実行と許可管理:
<code class="language-php">$sftp->delete('remote/path/file.txt'); // Single file
$sftp->delete('remote/directory', true); // Recursive directory deletion</code>

phpseclibを使用すると、リモートサーバーでコマンドを実行できます

ファイル許可の管理:

<code class="language-php">// (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) ...
}</code>

代替案:

<code class="language-php">$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()) ...
}</code>

自動化されたSFTP展開にはいくつかの代替品が存在します:

<code class="language-php">$sftp->exec('php artisan migrate');</code>

<code class="language-php">$sftp->chmod(0755, 'remote/path/file.txt'); // Set permissions</code>

(コマーシャル)

結論:

    PHPSECLIBとGITを組み合わせることで、SFTP展開に堅牢で安全で効率的なソリューションが提供されます。 このプロセスを自動化すると、ワークフローが大幅に合理化され、手動介入が減少します。 各認証方法のセキュリティへの影響を考慮し、環境に最も適した方法を選択してください。 生産環境に実装する前に、展開スクリプトを徹底的にテストすることを忘れないでください。

    How to Properly Deploy Web Apps via SFTP with Git

    (注:提供されたコードスニペットは簡素化された例であり、特定のプロジェクトのセットアップと環境に基づいて調整が必要になる場合があります。エラー処理とより堅牢なロジックを生産用に追加する必要があります。

以上がgitを使用してSFTPを介してWebアプリを適切に展開する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。