Hur man tar backup av Laravel Application och lagrar det på Amazon S3
Tidigare har jag publicerat en artikel som lagrar Laravel-backup lokalt på servern. Även om vi i den artikeln diskuterade lagring av en säkerhetskopia på värdservern rekommenderas det inte ett sätt att lagra. Det säkrare alternativet att lagra säkerhetskopiering finns i molnet. Det kan hända att din server kraschar och du förlorar applikationen tillsammans med lokalt lagrade säkerhetskopior. I dessa värsta scenarier, om du har en säkerhetskopia lagrad i molnet kan du enkelt återställa den när som helst.
Med tanke på vikten av säkerhetskopiering studerar vi i den här artikeln hur man säkerhetskopierar en Laravel-applikation och lagrar den på Amazon s3. För att uppnå vårt mål använder vi både Laravel Filesystem och paketet utvecklat av Spatie.
Få dina AWS-säkerhetsuppgifter
För att komma igång bör du först ha ett konto på Amazon S3. När du har skapat kontot, se till att du har aktiverat S3-tjänsten genom att följa AWS-verifieringsprocessen.
Efter att ha aktiverat S3-tjänsten, få dina säkerhetsuppgifter som vi behöver om några ögonblick. Du får det genom att klicka på länken "My Security Credentials".
Konfigurera S3 Driver i Laravel
Gå över till din kodredigerare och öppna filen config/filesystems.php
. I den här filen kan du se att S3-detaljer ställs in med env()
metoden. Det betyder att du måste ange dina S3-referenser i .env
fil.
config / filesystems.php
<?php
return [
.....
'disks' => [
.....
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
],
...
...
];
Öppna din .env
fil och lägg till AWS S3-referenserna i den. Du behöver inte ställa in AWS_URL-värde eftersom det är valfritt.
.env
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
Innan du använder S3 måste du installera lämpligt paket via Composer:
composer require league/flysystem-aws-s3-v3 ~1.0
Installera och konfigurera Spatie’s Library
Innan du installerar Spatis bibliotek, se till att ditt system uppfyller paketkraven. Läs mer om det på sidan Krav.
Om du använder en äldre version av Laravel, kolla in en av de tidigare versionerna av dessa paket på v6, v5, v4.
Låt oss installera paketet genom att köra kommandot nedan:
composer require spatie/laravel-backup
När biblioteket har installerats kör du nästa kommando nedan som publicerar konfigurationsfilen till config/backup.php
.
php artisan vendor:publish --provider="SpatieBackupBackupServiceProvider"
Öppna config/backup.php
filen och ställ in namnet ‘diskar’ som ‘s3’. Genom att göra det ber vi detta paket att lagra Laravel-säkerhetskopian på Amazon S3-hinken.
<?php
...
...
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
's3',
],
Det finns även andra konfigurationer i den här filen. En användare kan inkludera och utesluta kataloger för säkerhetskopiering. För inkludera är värdet base_path()
och för exkluderar alternativvärden base_path('vendor'), base_path(‘node_modules’)
. Det betyder att inte inkludera vendor
och nod_modules
mappar i den slutliga säkerhetskopian.
Lagra säkerhetskopian av Laravel-applikationen på Amazon S3
Vi är klara med alla grundläggande konfigurationer som krävs för att lagra Laravel-säkerhetskopiering på Amazon S3. Nu kan vi lagra vår första säkerhetskopia. Öppna terminalen i din projektkatalog och kör kommandot:
php artisan backup:run
Ovanstående kommando säkerhetskopierar din Laravel-applikation på AWS. Du hittar zip-filen för säkerhetskopian i din S3-hink. Backup-zip innehåller dina applikationsfiler, mappar och databaslager i den.
Detta bibliotek tillåter också schemaläggning av en säkerhetskopieringsprocess. Du kan automatisera din säkerhetskopieringsuppgift. För detta, lägg till nedanstående kod i app/Console/Kernel.php
filen.
<?php
...
...
protected function schedule(Schedule $schedule)
{
$schedule->command('backup:run')->daily()->at('06:00');
}
Här ställer jag in daglig säkerhetskopia kl 06:00. Användaren kan ändra den här tiden enligt deras krav.
Jag hoppas att du förstår hur du tar en säkerhetskopia av Laravel-applikationen och lagrar den på Amazon S3. Jag skulle vilja höra dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- Hur laddar jag upp filen till S3 med Laravel Filesystem
- Ladda upp filer till Amazon S3 med AWS PHP SDK
- Backup Laravel-applikation på Dropbox