Menggunakan Aplikasi Web melalui SFTP dengan Git: Aliran kerja yang selamat dan cekap
Artikel ini meneroka menggunakan phpseclib dan git untuk penyebaran SFTP yang diselaraskan dan selamat. Kami akan merangkumi ciri -ciri utama, kaedah pengesahan, dan teknik automasi untuk mengoptimumkan proses penempatan anda.
Kelebihan utama:
Pasang phpseclib menggunakan komposer:
Pengurusan Fail (Muat naik dan penghapusan):
Menghapus fail dan direktori:
skrip penempatan kemudian menggunakan kelas git dan phpseclib ini untuk memuat naik/memadam fail dengan sewajarnya:
Menguruskan Kebenaran Fail:
Menggabungkan phpseclib dan git menyediakan penyelesaian yang mantap, selamat, dan cekap untuk penyebaran SFTP. Automasi proses ini dengan ketara menyelaraskan aliran kerja dan mengurangkan intervensi manual. Pertimbangkan implikasi keselamatan setiap kaedah pengesahan dan pilih yang paling sesuai untuk persekitaran anda. Ingatlah untuk menguji skrip penempatan anda dengan teliti sebelum melaksanakannya dalam persekitaran pengeluaran. (Nota: Coretan kod yang disediakan adalah contoh yang dipermudahkan dan mungkin memerlukan pelarasan berdasarkan persediaan dan persekitaran projek khusus anda. Pengendalian ralat dan logik yang lebih mantap harus ditambah untuk penggunaan pengeluaran.)composer require phpseclib/phpseclib
Pilihan yang paling selamat, menggunakan kunci peribadi untuk pengesahan.
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');
}
$contents = file_get_contents('path/to/local/file');
$sftp->put('remote/path/file.txt', $contents);
$sftp->delete('remote/path/file.txt'); // Single file
$sftp->delete('remote/directory', true); // Recursive directory deletion
// (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) ...
}
$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()) ...
}
$sftp->exec('php artisan migrate');
$sftp->chmod(0755, 'remote/path/file.txt'); // Set permissions
(komersial)
git-deploy-php
PHPloy
Atas ialah kandungan terperinci Cara menggunakan aplikasi web dengan betul melalui sftp dengan git. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!