WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Резервное копирование приложения Laravel на Dropbox

59

Всегда рекомендуется хранить резервную копию приложения в облаке. Никогда не знаешь, когда может понадобиться восстановить сайт из резервной копии. 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 на 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 на Dropbox

Это ручной процесс создания резервной копии Laravel. Пользователь также может запланировать задачу резервного копирования. Для этого добавьте приведенный ниже код в scheduleметод app/Console/Kernel.phpfile.

protected function schedule(Schedule $schedule)
{
    $schedule->command('backup:run')->daily()->at('06:00');
}

Здесь я планирую ежедневное резервное копирование на 06:00. Пользователь может изменить это время по своему усмотрению.

Надеюсь, вы узнали о хранении резервной копии приложения Laravel в Dropbox. Я хотел бы услышать ваши мысли и предложения в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее