Резервное копирование приложения Laravel на Dropbox
Всегда рекомендуется хранить резервную копию приложения в облаке. Никогда не знаешь, когда может понадобиться восстановить сайт из резервной копии. Amazon S3, Google Cloud, Dropbox и т.д. – некоторые из популярных сервисов для хранения резервных копий приложений. В этом руководстве мы изучаем хранение резервной копии приложения Laravel в Dropbox. Если вы хотите сохранить его на Amazon S3, обратитесь к нашей статье о хранении резервной копии Laravel на Amazon S3.
Dropbox предлагает службу API, которая может отправлять резервную копию из нашего приложения в Dropbox. Когда дело доходит до Laravel, мы должны настроить файловую систему Laravel и установить Dropbox в качестве одного из хранилищ файлов. Затем он будет незаметно взаимодействовать с Dropbox API.
Во время взаимодействия с Dropbox API нам нужен токен доступа к аккаунту Dropbox для авторизации. Давайте сначала возьмем токен доступа Dropbox.
Получить токен доступа Dropbox
Чтобы получить токен доступа, создайте приложение Dropbox. После входа в систему нажмите кнопку «Создать приложение». На следующем шаге вам будет предложено выбрать API. Под типом доступа выберите «Папка приложения» и дайте название своему приложению. См. Снимок экрана ниже.
Затем на вкладке «Разрешение» добавьте области файлов и папок, чтобы наше приложение могло писать в Dropbox.
Наконец, на вкладке «Настройки» выберите «Без истечения срока действия» в поле «Срок действия токена доступа» и нажмите кнопку «Создать», которая предоставит вам токен доступа.
Настроить файловую систему Laravel для Dropbox
Laravel предоставляет файловую систему, которая предоставляет драйверы для локального хранилища, SFTP и Amazon S3. Чтобы добавить Dropbox в качестве драйвера, нам нужно немного его настроить. Это требует, чтобы вы добавили адаптер Dropbox в приложение Laravel. Вы можете сделать это, выполнив следующие действия.
Установите библиотеку spatie / flysystem-dropbox с помощью команды:
composer require spatie/flysystem-dropbox
После установки библиотеки создайте поставщика услуг, DropboxServiceProvider
используя следующую команду.
php artisan make:provider DropboxServiceProvider
Затем определите собственный драйвер dropbox
в boot
методе DropboxServiceProvider
.
appProvidersDropboxServiceProvider.php
<?php
namespace AppProviders;
use IlluminateSupportFacadesStorage;
use IlluminateSupportServiceProvider;
use LeagueFlysystemFilesystem;
use SpatieDropboxClient as DropboxClient;
use SpatieFlysystemDropboxDropboxAdapter;
class DropboxServiceProvider extends ServiceProvider
{
...
...
public function boot()
{
Storage::extend('dropbox', function ($app, $config) {
$client = new DropboxClient(
$config['authorization_token']
);
return new Filesystem(new DropboxAdapter($client));
});
}
}
Зарегистрируйте поставщика услуг DropboxServiceProvider
в providers
массиве config/app.php
файлов.
'providers' => [
// ...
AppProvidersDropboxServiceProvider::class,
];
После этого добавьте драйвер dropbox на диски файловой системы. Откройте config/filesystems.php
файл и добавьте в disks
массив элемент dropbox.
'disks' => [
...
...
'dropbox' => [
'driver' => 'dropbox',
'authorization_token' => env('DROPBOX_AUTH_TOKEN'),
],
],
Здесь я получаю значение константы DROPBOX_AUTH_TOKEN с помощью env()
метода. Это означает, что мы должны добавить эту константу в .env
файл.
.env
...
...
DROPBOX_AUTH_TOKEN=PASTE_ACCESS_TOKEN_HERE
Установить и настроить библиотеку резервного копирования Laravel
На этом мы закончили добавление адаптера Dropbox в приложение Laravel. Теперь установите библиотеку spatie / laravel-backup, которая позволяет нам отправлять резервные копии в различные облачные сервисы, включая Dropbox. Выполните приведенную ниже команду для установки.
composer require spatie/laravel-backup
После установки библиотеки опубликуйте файл конфигурации с config/backup.php
помощью команды:
php artisan vendor:publish --provider="SpatieBackupBackupServiceProvider"
После этого откройте config/backup.php
и добавьте dropbox в массив disks.
<?php
return [
.......
.......
'destination' => [
......
......
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
'dropbox',
],
......
......
При желании вы также можете указать свой адрес электронной почты, на который будет отправляться уведомление о статусе резервного копирования. Вы найдете эту опцию в mail
массиве config/backup.php
file.
Резервное копирование приложения Laravel на Dropbox
Мы выполнили всю базовую настройку, необходимую для резервного копирования приложения Laravel в Dropbox. Подойдите к терминалу и выполните команду ниже:
php artisan backup:run
Приведенная выше команда создаст папку Laravel в вашей учетной записи Dropbox и сохранит в ней архивный zip-архив. Этот архивный zip-архив содержит файлы, папки и базу данных вашего приложения Laravel.
Это ручной процесс создания резервной копии Laravel. Пользователь также может запланировать задачу резервного копирования. Для этого добавьте приведенный ниже код в schedule
метод app/Console/Kernel.php
file.
protected function schedule(Schedule $schedule)
{
$schedule->command('backup:run')->daily()->at('06:00');
}
Здесь я планирую ежедневное резервное копирование на 06:00. Пользователь может изменить это время по своему усмотрению.
Надеюсь, вы узнали о хранении резервной копии приложения Laravel в Dropbox. Я хотел бы услышать ваши мысли и предложения в разделе комментариев ниже.
Статьи по Теме
- Как загрузить файл на S3 с помощью файловой системы Laravel
- Загрузка файлов в Amazon S3 с помощью AWS PHP SDK
- Как загрузить изображения на другой сервер через FTP в Laravel