This is a Laravel 9 Dropbox backup tutorial, where we will learn how to backup a Laravel application and store the app backup in Dropbox.
This guide will enable you to integrate Dropbox in Laravel to store your Laravel app backup, and the Spatie package will surely help you in this journey.
Save Laravel 9 App Backup in Dropbox Storage
- Step 1: Install Laravel Project
- Step 2: Add Database Credentials
- Step 3: Install Laravel Spatie
- Step 4: Get Dropbox Access Token
- Step 5: Configure Dropbox FileSystem
- Step 6: Add Dropbox Access Key
- Step 7: Clear Config Cache
- Step 8: Take a Backup and Store on Dropbox
Install Laravel Project
Firstly, lets install composer on your system, and create a fresh Laravel application using the command below.
composer create-project laravel/laravel --prefer-dist laravel-demo-app
Get inside the project.
cd laravel-demo-app
Configure Database Connection
The database configuration of Laravel applications is located in the application’s .env configuration file.
You need to open this file, and add your database name, username, and password.
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=
If you are working on macOS and using the MAMP local server, ensure to append UNIX_SOCKET and DB_SOCKET database credentials as shown below in your .env file.
UNIX_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
Install Laravel Spatie
Next, you need to dynamically install the Laravel Spatie package via composer command as shown below.
composer require spatie/laravel-backup
After taking backup, Spatie sends a confirmation email about the backup. Hence, you should add an email address to receive a confirmation response on your Laravel backup.
So, add the email address using the MAIL_FROM_ADDRESS variable, as shown below.
MAIL_FROM_ADDRESS=demo@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
In the next step, we should run a command to publish the Spatie package separately.
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
Above the vendor publish command, you need to publish a new config/backup.php file, where you have to set backup values.
For example, add a dropbox name to disks property, this is the disk name that can store your backup.
<?php
return [
'destination' => [
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
'dropbox',
],
],
Get Dropbox Access Token
In this Laravel dropbox example, we will need a Dropbox access token, that will show you how to get a dropbox access token from the Dropbox dashboard.
You have to go to the Dropbox admin console and make sure you create a new project.
Here you will see “Generated access token” button, click on it to generate and get the Dropbox access token.
Configure Dropbox FileSystem
Next step is to quickly install the spatie flysystem-dropbox package via the composer command shown below.
composer require spatie/flysystem-dropbox
Now, run PHP artisan make command and publish dropbox service provider.
php artisan make:provider DropboxServiceProvider
Open your app/config/app.php file, to add the dropbox service provider class into the providers’ array as shown below.
'providers' => [
...
...
...
App\Providers\DropboxDriveServiceProvider::class,
];
Open your app/Providers/DropboxServiceProvider.php file, and update the boot function inside the provider class as shown below.
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class DropboxServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
Storage::extend('dropbox', function ($app, $config) {
$client = new DropboxClient(
$config['add_authorization_token']
);
return new Filesystem(new DropboxAdapter($client));
});
}
}
Add Dropbox Access Key
Finally, we will now add dropbox in Laravel, and this mutual consent requires an authentication key, a callback URL and a client id to be added into your config/filesystem.php file.
<?php
return [
...
'disks' => [
...
'dropbox' => [
'driver' => 'dropbox',
'key' => env('DROPBOX_APP_KEY'),
'secret' => env('DROPBOX_APP_SECRET'),
'authorization_token' => env('DROPBOX_ACCESS_TOKEN'),
],
],
];
Lastly, you need to open the .env file and, add here the dropbox auth token.
DROPBOX_AUTH_TOKEN=<dropbox_auth_token>
Clear Config Cache
Let us now first clear your application’s config cache, then execute the command from terminal.
php artisan config:clear
Take Backup and Store on Dropbox
Eventually, you need to run the command below to take a backup and then store it onto dropbox in this last step.
php artisan backup:run
Conclusion
In this tutorial, we have learned how to integrate Dropbox backup in a Laravel application, and we hope you liked and learnt from this tutorial.
The primary reason for backup is to store essential files at a safe place, in cases if an error occurs, or a website gets hacked. To secure your Laravel application, we have used the Laravel spatie package, that will prevent natural or man-made disasters.