ホームページ >バックエンド開発 >PHPチュートリアル >gitを使用してSFTPを介してWebアプリを適切に展開する方法
主要な利点:
セキュア転送:SFTPの暗号化された通信により、データセキュリティが保証されます
rsaキー:
認証に秘密鍵を使用している最も安全なオプション。 パスワードで保護されたRSAキー:<code class="language-bash">composer require phpseclib/phpseclib</code>パスワード保護で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>
(コマーシャル)
結論:
以上がgitを使用してSFTPを介してWebアプリを適切に展開する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。