Kopia zapasowa aplikacji Laravel na Dropbox
Zawsze zalecane jest przechowywanie kopii zapasowej aplikacji w chmurze. Nigdy nie wiadomo, kiedy trzeba będzie przywrócić witrynę z kopii zapasowej. Amazon S3, Google Cloud, Dropbox itp. to tylko niektóre z popularnych usług do przechowywania kopii zapasowych aplikacji. W tym samouczku zajmiemy się przechowywaniem kopii zapasowych aplikacji Laravel w Dropbox. Jeśli chcesz go przechowywać w Amazon S3, zapoznaj się z naszym artykułem dotyczącym przechowywania kopii zapasowej Laravel w Amazon S3.
Dropbox oferuje usługę API, która może wysłać kopię zapasową z naszej aplikacji do Dropbox. Jeśli chodzi o Laravela, musimy skonfigurować Laravel Filesystem i ustawić Dropbox jako jeden z magazynów plików. Następnie będzie wchodzić w interakcje z Dropbox API za kulisami.
Podczas interakcji z Dropbox API musimy posiadać token dostępu do konta Dropbox w celu autoryzacji. Najpierw zdobądźmy token dostępu Dropbox.
Uzyskaj token dostępu do Dropbox
Aby uzyskać token dostępu, utwórz aplikację Dropbox. Po zalogowaniu kliknij przycisk „Utwórz aplikację". W kolejnym kroku poprosisz o wybór API. Pod typem dostępu wybierz „Folder aplikacji” i nadaj nazwę swojej aplikacji. Zobacz zrzut ekranu poniżej.
Następnie z zakładki „Uprawnienia” dodaj zakresy plików i folderów, aby nasza aplikacja mogła zapisywać do Dropbox.
Na koniec z zakładki „Ustawienia” wybierz „Bez ważności” w polu Wygaśnięcie tokena dostępu i kliknij przycisk „Generuj”, który da Ci token dostępu.
Skonfiguruj system plików Laravel dla Dropbox
Laravel dostarcza system plików, który dostarcza sterowniki do lokalnej pamięci masowej, SFTP i Amazon S3. Aby dodać Dropbox jako sterownik, musimy go trochę skonfigurować. Wymaga dodania adaptera Dropbox do aplikacji Laravel. Możesz to zrobić, wykonując poniższe czynności.
Zainstaluj bibliotekę spatie/flysystem-dropbox za pomocą polecenia:
composer require spatie/flysystem-dropbox
Po zainstalowaniu biblioteki utwórz dostawcę usług DropboxServiceProvider
za pomocą poniższego polecenia.
php artisan make:provider DropboxServiceProvider
Następnie zdefiniuj niestandardowy sterownik dropbox
w boot
metodzie 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));
});
}
}
Zarejestruj dostawcę usług DropboxServiceProvider
w providers
tablicy config/app.php
plików.
'providers' => [
// ...
AppProvidersDropboxServiceProvider::class,
];
Następnie dodaj sterownik „dropbox” do dysków systemu plików. Otwórz config/filesystems.php
plik i dodaj element „dropbox” do disks
tablicy.
'disks' => [
...
...
'dropbox' => [
'driver' => 'dropbox',
'authorization_token' => env('DROPBOX_AUTH_TOKEN'),
],
],
Tutaj otrzymuję wartość stałej „DROPBOX_AUTH_TOKEN” przy użyciu env()
metody. Oznacza to, że powinniśmy dodać tę stałą w .env
pliku.
.env
...
...
DROPBOX_AUTH_TOKEN=PASTE_ACCESS_TOKEN_HERE
Zainstaluj i skonfiguruj bibliotekę kopii zapasowych Laravel
Na razie skończyliśmy z dodawaniem adaptera Dropbox do aplikacji Laravel. Teraz zainstaluj bibliotekę kopii zapasowych spatie/laravel, która pozwala nam wysyłać kopie zapasowe do różnych usług w chmurze, w tym Dropbox. Uruchom poniższe polecenie w celu instalacji.
composer require spatie/laravel-backup
Po zainstalowaniu biblioteki opublikuj plik konfiguracyjny config/backup.php
za pomocą polecenia:
php artisan vendor:publish --provider="SpatieBackupBackupServiceProvider"
Następnie otwórz config/backup.php
i dodaj „dropbox” do tablicy „disk”.
<?php
return [
.......
.......
'destination' => [
......
......
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
'dropbox',
],
......
......
Opcjonalnie możesz również ustawić swój adres e-mail, na który będzie wysyłane powiadomienie o stanie kopii zapasowej. Tę opcję znajdziesz w mail
tablicy config/backup.php
file.
Kopia zapasowa aplikacji Laravel na Dropbox
Zakończyliśmy wszystkie podstawowe ustawienia wymagane do utworzenia kopii zapasowej aplikacji Laravel w Dropbox. Podejdź do terminala i strzel poniższe polecenie:
php artisan backup:run
Powyższe polecenie utworzy folder „Laravel” na Twoim koncie Dropbox i przechowa w nim kopię zapasową zip. Ten zip kopii zapasowej zawiera pliki, foldery i bazę danych aplikacji Laravel.
Jest to ręczny proces tworzenia kopii zapasowej Laravel. Użytkownik może również zaplanować zadanie tworzenia kopii zapasowej. W tym celu dodaj poniższy kod do schedule
metody app/Console/Kernel.php
pliku.
protected function schedule(Schedule $schedule)
{
$schedule->command('backup:run')->daily()->at('06:00');
}
Tutaj planuję codzienną kopię zapasową o 06:00. Użytkownik może zmienić ten czas zgodnie z ich wymaganiami.
Mam nadzieję, że dowiedziałeś się o przechowywaniu kopii zapasowej aplikacji Laravel w Dropbox. Chciałbym usłyszeć wasze przemyślenia i sugestie w sekcji komentarzy poniżej.
Powiązane artykuły
- Jak przesłać plik do S3 za pomocą systemu plików Laravel?
- Prześlij pliki do Amazon S3 za pomocą AWS PHP SDK
- Jak przesłać obrazy na inny serwer przez FTP w Laravel?