Come eseguire il backup dell’applicazione Laravel e archiviarla su Amazon S3
In passato, ho pubblicato un articolo che memorizza il backup di Laravel localmente sul server. Sebbene in quell’articolo abbiamo discusso dell’archiviazione di un backup sul server di hosting, non è consigliabile un metodo di archiviazione. L’opzione più sicura per archiviare il backup è sul cloud. Può succedere che il tuo server si arresti in modo anomalo e che tu perda l’applicazione insieme ai backup archiviati localmente. In questi scenari peggiori, se hai un backup archiviato sul cloud, puoi ripristinarlo facilmente in qualsiasi momento.
Considerando l’importanza del backup, in questo articolo, studiamo come eseguire il backup di un’applicazione Laravel e archiviarla su Amazon s3. Per raggiungere il nostro obiettivo, utilizzeremo sia Laravel Filesystem che il pacchetto sviluppato da Spatie.
Ottieni le tue credenziali di sicurezza AWS
Per iniziare, dovresti prima avere un account su Amazon S3. Dopo aver creato l’account assicurati di aver attivato il servizio S3 seguendo il processo di verifica AWS.
Dopo aver attivato il servizio S3, ottieni le tue credenziali di sicurezza che ci serviranno tra qualche istante. Lo otterrai facendo clic sul collegamento "Le mie credenziali di sicurezza".
Configura il driver S3 in Laravel
Vai al tuo editor di codice e apri il file config/filesystems.php
. In questo file, puoi vedere che i dettagli di S3 sono impostati utilizzando il env()
metodo. Significa che devi impostare le tue credenziali S3 nel .env
file.
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'),
],
...
...
];
Apri il .env
file e aggiungi le credenziali AWS S3. Non è necessario impostare il valore AWS_URL poiché è facoltativo.
.env
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
Prima di utilizzare S3, sarà necessario installare il pacchetto appropriato tramite Composer:
composer require league/flysystem-aws-s3-v3 ~1.0
Installa e configura la libreria di Spatie
Prima di installare la libreria di Spatie assicurati che il tuo sistema soddisfi i requisiti del pacchetto. Maggiori informazioni a riguardo nella loro pagina Requisiti.
Se stai usando una versione precedente di Laravel, controlla una delle versioni precedenti di questo pacchetto su v6, v5, v4.
Installiamo il pacchetto eseguendo il comando seguente:
composer require spatie/laravel-backup
Una volta installata la libreria, esegui il comando successivo di seguito che pubblicherà il file di configurazione in config/backup.php
.
php artisan vendor:publish --provider="SpatieBackupBackupServiceProvider"
Apri il config/backup.php
file e imposta il nome dei "dischi" come "s3". In questo modo, stiamo dicendo a questo pacchetto di archiviare il backup di Laravel nel bucket Amazon S3.
<?php
...
...
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
's3',
],
Ci sono anche altre configurazioni disponibili in questo file. Un utente può includere ed escludere le directory per il backup. Per l’inclusione il valore è base_path()
e per l’opzione di esclusione i valori sono base_path('vendor'), base_path(‘node_modules’)
. Significa non includere vendor
e nod_modules
cartelle nel backup finale.
Archivia il backup dell’applicazione Laravel su Amazon S3
Abbiamo finito con tutte le configurazioni di base necessarie per archiviare il backup di Laravel su Amazon S3. Ora possiamo archiviare il nostro primo backup. Apri il terminale nella directory principale del tuo progetto ed esegui il comando:
php artisan backup:run
Il comando precedente eseguirà il backup della tua applicazione Laravel su AWS. Troverai lo zip del backup nel tuo bucket S3. Lo zip di backup contiene i file, le cartelle e l’archivio del database dell’applicazione.
Questa libreria consente anche di pianificare un processo di backup. Puoi automatizzare la tua attività di backup. Per questo, aggiungi il codice seguente nel app/Console/Kernel.php
file.
<?php
...
...
protected function schedule(Schedule $schedule)
{
$schedule->command('backup:run')->daily()->at('06:00');
}
Qui ho impostato il backup giornaliero alle 06:00. L’utente può modificare questa volta in base alle proprie esigenze.
Spero che tu capisca come eseguire un backup dell’applicazione Laravel e archiviarlo su Amazon S3. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.
articoli Correlati
- Come caricare file su S3 utilizzando Laravel Filesystem
- Carica file su Amazon S3 utilizzando AWS PHP SDK
- Backup dell’applicazione Laravel su Dropbox