Резервное копирование приложения 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.phpfile.
Резервное копирование приложения Laravel на Dropbox
Мы выполнили всю базовую настройку, необходимую для резервного копирования приложения Laravel в Dropbox. Подойдите к терминалу и выполните команду ниже:
php artisan backup:runПриведенная выше команда создаст папку Laravel в вашей учетной записи Dropbox и сохранит в ней архивный zip-архив. Этот архивный zip-архив содержит файлы, папки и базу данных вашего приложения Laravel.
Это ручной процесс создания резервной копии Laravel. Пользователь также может запланировать задачу резервного копирования. Для этого добавьте приведенный ниже код в scheduleметод app/Console/Kernel.phpfile.
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


