Como fazer backup do aplicativo Laravel e armazená-lo no Amazon S3
Já publiquei um artigo armazenando o backup do Laravel localmente no servidor. Embora nesse artigo tenhamos discutido o armazenamento de um backup no servidor de hospedagem, não é uma forma de armazenamento recomendada. A opção mais segura de armazenamento de backup está na nuvem. Pode acontecer que seu servidor trave e você perca o aplicativo junto com os backups armazenados localmente. Nesses piores cenários, se você tiver um backup armazenado na nuvem, poderá revertê-lo facilmente a qualquer momento.
Considerando a importância do backup, neste artigo, estudamos como fazer backup de um aplicativo Laravel e armazená-lo no Amazon s3. Para atingir nosso objetivo, usaremos o Laravel Filesystem e o pacote desenvolvido por Spatie.
Obtenha suas credenciais de segurança da AWS
Para começar, você deve primeiro ter uma conta no Amazon S3. Depois de criar a conta, certifique-se de ter ativado o serviço S3 seguindo o processo de verificação da AWS.
Após ativar o serviço S3, obtenha suas credenciais de segurança de que precisaremos em alguns instantes. Você o obterá clicando no link ‘Minhas credenciais de segurança’.
Configurar o driver S3 no Laravel
Vá até o seu editor de código e abra o arquivo config/filesystems.php
. Neste arquivo, você pode ver que os detalhes do S3 são definidos usando o env()
método. Isso significa que você precisa definir suas credenciais S3 no .env
arquivo.
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'),
],
...
...
];
Abra seu .env
arquivo e adicione as credenciais do AWS S3 a ele. Não há necessidade de definir o valor AWS_URL, pois é opcional.
.env
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
Antes de usar o S3, você precisará instalar o pacote apropriado por meio do Composer:
composer require league/flysystem-aws-s3-v3 ~1.0
Instalar e configurar a biblioteca de Spatie
Antes de instalar a biblioteca de Spatie, certifique-se de que seu sistema atenda aos requisitos do pacote. Leia mais sobre isso na página de requisitos.
Se você estiver usando uma versão mais antiga do Laravel, verifique uma das versões anteriores deste pacote em v6, v5, v4.
Vamos instalar o pacote executando o comando abaixo:
composer require spatie/laravel-backup
Assim que a biblioteca estiver instalada, execute o próximo comando abaixo, que publicará o arquivo de configuração config/backup.php
.
php artisan vendor:publish --provider="SpatieBackupBackupServiceProvider"
Abra o config/backup.php
arquivo e defina o nome dos ‘discos’ como ‘s3’. Fazendo isso, estamos dizendo a este pacote para armazenar o backup do Laravel no bucket do Amazon S3.
<?php
...
...
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
's3',
],
Existem outras configurações também disponíveis neste arquivo. Um usuário pode incluir e excluir os diretórios para backup. Para incluir o valor é base_path()
e para excluir os valores da opção são base_path('vendor'), base_path(‘node_modules’)
. Isso significa não incluir pastas vendor
e nod_modules
no backup final.
Armazene o backup do aplicativo Laravel no Amazon S3
Concluímos todas as configurações básicas necessárias para armazenar o backup do Laravel no Amazon S3. Agora podemos armazenar nosso primeiro backup. Abra o terminal no diretório raiz do seu projeto e execute o comando:
php artisan backup:run
O comando acima fará o backup de seu aplicativo Laravel na AWS. Você encontrará o zip do backup em seu balde S3. O zip de backup contém seus arquivos de aplicativo, pastas e armazenamento de banco de dados nele.
Esta biblioteca também permite agendar um processo de backup. Você pode automatizar sua tarefa de backup. Para isso, adicione o código abaixo no app/Console/Kernel.php
arquivo.
<?php
...
...
protected function schedule(Schedule $schedule)
{
$schedule->command('backup:run')->daily()->at('06:00');
}
Aqui, defino o backup diário às 06:00. O usuário pode alterar este tempo de acordo com sua necessidade.
Espero que você entenda como fazer um backup do aplicativo Laravel e armazená-lo no Amazon S3. Eu gostaria de ouvir seus pensamentos e sugestões na seção de comentários abaixo.
Artigos relacionados
- Como fazer upload de arquivo para S3 usando o sistema de arquivos Laravel
- Carregar arquivos para o Amazon S3 usando AWS PHP SDK
- Faça backup do aplicativo Laravel no Dropbox