Comment faire une sauvegarde de l’application Laravel et la stocker sur Amazon S3
Dans le passé, j’ai publié un article stockant la sauvegarde Laravel localement sur le serveur. Bien que dans cet article, nous ayons discuté du stockage d’une sauvegarde sur le serveur d’hébergement, ce mode de stockage n’est pas recommandé. L’option la plus sûre pour stocker la sauvegarde est sur le cloud. Il peut arriver que votre serveur tombe en panne et que vous perdiez l’application ainsi que les sauvegardes stockées localement. Dans ces pires scénarios, si vous avez une sauvegarde stockée sur le cloud, vous pouvez la restaurer facilement à tout moment.
Compte tenu de l’importance de la sauvegarde, dans cet article, nous étudions comment sauvegarder une application Laravel et la stocker sur Amazon s3. Pour atteindre notre objectif, nous utiliserons à la fois Laravel Filesystem et le package développé par Spatie.
Obtenez vos informations d’identification de sécurité AWS
Pour commencer, vous devez d’abord avoir un compte sur Amazon S3. Après avoir créé le compte, assurez-vous d’avoir activé le service S3 en suivant le processus de vérification AWS.
Après avoir activé le service S3, récupérez vos identifiants de sécurité dont nous aurons besoin dans quelques instants. Vous l’obtiendrez en cliquant sur le lien "Mes informations d’identification de sécurité".
Configurer le pilote S3 dans Laravel
Rendez-vous dans votre éditeur de code et ouvrez le fichier config/filesystems.php
. Dans ce fichier, vous pouvez voir que les détails S3 sont définis à l’aide de la env()
méthode. Cela signifie que vous devez définir vos informations d’identification S3 dans un .env
fichier.
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'),
],
...
...
];
Ouvrez votre .env
fichier et ajoutez-y les informations d’identification AWS S3. Pas besoin de définir la valeur AWS_URL car elle est facultative.
.env
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
Avant d’utiliser le S3, vous devrez installer le package approprié via Composer :
composer require league/flysystem-aws-s3-v3 ~1.0
Installer et configurer la bibliothèque de Spatie
Avant d’installer la bibliothèque de Spatie, assurez-vous que votre système répond aux exigences du package. En savoir plus à ce sujet sur leur page Exigences.
Si vous utilisez une ancienne version de Laravel, consultez l’une des versions précédentes de ce package aux v6, v5, v4.
Installons le package en exécutant la commande ci-dessous :
composer require spatie/laravel-backup
Une fois la bibliothèque installée, exécutez la commande suivante ci-dessous qui publiera le fichier de configuration dans config/backup.php
.
php artisan vendor:publish --provider="SpatieBackupBackupServiceProvider"
Ouvrez le config/backup.php
fichier et définissez le nom des ‘disques’ comme ‘s3’. Ce faisant, nous demandons à ce package de stocker la sauvegarde Laravel sur le compartiment Amazon S3.
<?php
...
...
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
's3',
],
D’autres configurations sont également disponibles dans ce fichier. Un utilisateur peut inclure et exclure les répertoires pour la sauvegarde. Pour l’inclusion, la valeur est base_path()
et pour l’exclusion, les valeurs d’option sont base_path('vendor'), base_path(‘node_modules’)
. Cela signifie ne pas inclure les dossiers vendor
et nod_modules
dans la sauvegarde finale.
Stocker la sauvegarde de l’application Laravel sur Amazon S3
Nous avons terminé avec toutes les configurations de base requises pour stocker la sauvegarde Laravel sur Amazon S3. Nous pouvons maintenant stocker notre première sauvegarde. Ouvrez le terminal dans le répertoire racine de votre projet et exécutez la commande :
php artisan backup:run
La commande ci-dessus sauvegardera votre application Laravel sur AWS. Vous trouverez le zip de la sauvegarde dans votre bucket S3. Le zip de sauvegarde contient vos fichiers d’application, vos dossiers et votre base de données.
Cette bibliothèque permet également de planifier un processus de sauvegarde. Vous pouvez automatiser votre tâche de sauvegarde. Pour cela, ajoutez le code ci-dessous dans le app/Console/Kernel.php
fichier.
<?php
...
...
protected function schedule(Schedule $schedule)
{
$schedule->command('backup:run')->daily()->at('06:00');
}
Ici, j’ai défini une sauvegarde quotidienne à 06h00. L’utilisateur peut modifier cette heure selon ses besoins.
J’espère que vous comprenez comment faire une sauvegarde de l’application Laravel et la stocker sur Amazon S3. J’aimerais entendre vos pensées et suggestions dans la section des commentaires ci-dessous.
Articles Liés
- Comment télécharger un fichier sur S3 à l’aide du système de fichiers Laravel
- Charger des fichiers sur Amazon S3 à l’aide d’AWS PHP SDK
- Sauvegarder l’application Laravel sur Dropbox