Как сделать резервную копию приложения Laravel и сохранить ее на Amazon S3
Раньше я публиковал статью о локальном хранении резервной копии Laravel на сервере. Хотя в этой статье мы обсуждали хранение резервной копии на сервере хостинга, такой способ хранения не рекомендуется. Более безопасный вариант хранения резервной копии – в облаке. Может случиться так, что ваш сервер выйдет из строя, и вы потеряете приложение вместе с локально сохраненными резервными копиями. В этих наихудших сценариях, если у вас есть резервная копия, хранящаяся в облаке, вы можете легко восстановить ее в любое время.
Учитывая важность резервного копирования, в этой статье мы изучаем, как создать резервную копию приложения Laravel и сохранить его на Amazon s3. Для достижения нашей цели мы будем использовать как файловую систему Laravel, так и пакет, разработанный Spatie.
Получите свои учетные данные для обеспечения безопасности AWS
Для начала у вас должна быть учетная запись на Amazon S3. После создания учетной записи убедитесь, что вы активировали сервис S3, выполнив процедуру проверки AWS.
После активации службы S3 получите свои учетные данные безопасности, которые нам понадобятся через несколько минут. Вы получите его, щелкнув ссылку «Мои учетные данные безопасности».
Настроить драйвер S3 в Laravel
Перейдите в редактор кода и откройте файл config/filesystems.php
. В этом файле вы можете увидеть, что детали S3 устанавливаются с помощью env()
метода. Это означает, что вам необходимо указать учетные данные S3 в .env
файле.
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'),
],
...
...
];
Откройте .env
файл и добавьте к нему учетные данные AWS S3. Нет необходимости устанавливать значение AWS_URL, так как это необязательно.
.env
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
Перед использованием S3 вам необходимо установить соответствующий пакет через Composer:
composer require league/flysystem-aws-s3-v3 ~1.0
Установите и настройте библиотеку Spatie
Перед установкой библиотеки Spatie убедитесь, что ваша система соответствует требованиям пакета. Узнайте больше об этом на их странице требований.
Если вы используете старую версию Laravel, проверьте одну из предыдущих версий этого пакета на v6, v5, v4.
Давайте установим пакет, выполнив команду ниже:
composer require spatie/laravel-backup
После установки библиотеки выполните следующую команду, которая опубликует файл конфигурации в config/backup.php
.
php artisan vendor:publish --provider="SpatieBackupBackupServiceProvider"
Откройте config/backup.php
файл и установите имя «disks» как «s3». Таким образом, мы говорим этому пакету хранить резервную копию Laravel в корзине Amazon S3.
<?php
...
...
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
's3',
],
В этом файле также доступны другие конфигурации. Пользователь может включать и исключать каталоги для резервного копирования. Для включения значение равно, base_path()
а для параметра исключения – значения base_path('vendor'), base_path(‘node_modules’)
. Это означает, что не включает в себя vendor
и nod_modules
папок в конечной подпорке.
Храните резервную копию приложения Laravel на Amazon S3
Мы закончили со всеми основными конфигурациями, необходимыми для хранения резервных копий Laravel на Amazon S3. Теперь мы можем сохранить нашу первую резервную копию. Откройте терминал в корневом каталоге вашего проекта и выполните команду:
php artisan backup:run
Приведенная выше команда создаст резервную копию вашего приложения Laravel на AWS. Вы найдете zip резервной копии в своем ведре S3. ZIP-архив с резервной копией содержит файлы вашего приложения, папки и хранилище базы данных.
Эта библиотека также позволяет планировать процесс резервного копирования. Вы можете автоматизировать задачу резервного копирования. Для этого добавьте в app/Console/Kernel.php
файл приведенный ниже код .
<?php
...
...
protected function schedule(Schedule $schedule)
{
$schedule->command('backup:run')->daily()->at('06:00');
}
Здесь я установил ежедневное резервное копирование в 06:00. Пользователь может изменить это время по своему усмотрению.
Надеюсь, вы понимаете, как сделать резервную копию приложения Laravel и сохранить ее на Amazon S3. Я хотел бы услышать ваши мысли и предложения в разделе комментариев ниже.
Статьи по Теме
- Как загрузить файл на S3 с помощью файловой системы Laravel
- Загрузка файлов в Amazon S3 с помощью AWS PHP SDK
- Резервное копирование приложения Laravel на Dropbox