Backup Aplikasi Laravel Dan Database Menggunakan Package Spatie Laravel backup Dan Jalankan Schedule Otomatis Backup Di Laravel Forge Menggunakan Cronjob

Adinata
5 min readApr 23, 2021

--

Ketika aplikasi yang sudah kita develop sudah di tahap production tentu backup merupakan hal yang sangat penting baik itu melakukan backup di level aplikasi ataupun di level database, Untuk melakukan backup pada aplikasi yang kita deploy menggunakan laravel kita dapat menggunakan package dari spatie yaitu laravel backup silahkan anda baca dokumentasinya klik disini

Pada tutorial kali ini kita akan mengkombinasikan laravel backup + laravel Forge ya kali ini saya menggunakan laravel forge untuk deployment dan salah satu fitur yang terdapat pada laravel forge yaitu fitur schedule dimana kita dapat membuat schedule cronjob dengan mudah, Bagi anda yang tidak terbiasa dengan crontab parameter anda dapat menggunakan bantuan cronjob generate dari crontab guru silahkan cek disini

instalasi Package Laravel Backup

composer require spatie/laravel-backup

setelah anda install package ini akan otomatis melakukan register di service provider namun jika tidak anda dapat menambahkannya sendiri sbb

//config/app.php 'providers' => [ /* * Laravel Framework Service Providers... */ Spatie\Backup\BackupServiceProvider::class,

lalu kita publish backupo confignya dengan cara sbb

php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"

lalu buka file config/backup.php dan silahkan anda config storagenya disini saya menggunakan s3 storage dari amazon webservices

'destination' => [ /* * The filename prefix used for the backup zip file. */ 'filename_prefix' => '', /* * The disk names on which the backups will be stored. */ 'disks' => [ 's3-backup', ], ],

Dikarenakan kita menyimpan backup di s3 amazon web service maka disk monitornya harus kita arahkan ke s3 amazon web service juga sbb

'monitor_backups' => [ [ 'name' => env('APP_NAME', 'laravel-backup'), 'disks' => ['s3-backup'], 'health_checks' => [ \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1, \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000, ], ], ],

Konfigurasi Amazon S3

Jika anda menyimpan backup ke amazon s3 storage maka anda harus menginstall package league/flysystem-aws-s3-v3 ~1.0

composer require league/flysystem-aws-s3-v3 ~1.0

Setelah Itu Setting Di File .ENV beberapa parameter sbb

AWS_ACCESS_KEY_ID_BACKUP=AKIAVJO3TM21232132 AWS_SECRET_ACCESS_KEY_BACKUP=1cX21321DTFGWWwGe43ZV1r1xkSu AWS_DEFAULT_REGION_BACKUP=ap-southeast-1 AWS_BUCKET_BACKUP=novalio-id-backup

Nilai dari Parameter di atas anda dapatkan dari amazon web service anda silahkan anda setup IAM untuk s3 Storagenya di AWS Console

Tahap Pengujian

setelah kita melakukan config seperti diatas maka tahap selanjutnya adalah kita menjalankan command yang tersedia di laravel backup beberapa command yang sangat sering di jalankan antara lain :

php artisan backup:clean

Command diatas berfungsi untuk melakukan cleanup backup di server

php artisan backup:run

Command diatas berfungsi untuk melakukan backup dan menyimpannya ke media penyimpanan yang telah kita tentukan di backup config di artikel ini kita menyimpan ke S3 Storage Amazon Web Service

php artisan backup:monitor

Command diatas berfungsi untuk melakukan monitor apakah ada kendala di backup yang kita jalankan misal proses backup gagal ataupun berhasil dan kita bisa setup notifikasi ke email ataupun ke provider lain seperti slack

Proses Menjalankan backup Clean

Proses Menjalankan backup Run

Proses Menjalankan Backup Monitor

Cek backup Di Amazon S3

Notifikasi Backup

Untuk Mendapatkan Notifikasi dari proses backup yang di jalankan kita dapat melakukan konfigrurasi notifikasi via email silahkan anda bukan backup config yang berada di config/backup.php dan lakukan konfigurasi sbb

'notifications' => [ 'notifications' => [ \Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => ['mail'], \Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFound::class => ['mail'], \Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => ['mail'], \Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => ['mail'], \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFound::class => ['mail'], \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessful::class => ['mail'], ],'mail' => [ 'to' => 'backup@adinata.id', 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'backup@adinata.id'), 'name' => env('MAIL_FROM_NAME', 'Backup Novalio'), ], ],

Agar Notifikasi Ini berjalan anda perlu melakukan konfigurasi SMTP pada File .ENV sbb

MAIL_MAILER=smtp MAIL_HOST=mail.adinata.id MAIL_PORT=465 MAIL_USERNAME=email anda MAIL_PASSWORD=password email anda MAIL_ENCRYPTION=SSL MAIL_FROM_ADDRESS=backup@adinata.id MAIL_FROM_NAME="${APP_NAME}"

Maka ketika anda menjalankan backup akan muncul notifkasi ke email anda sbb

Notifikasi Clean Up Backup

Notifikasi Backup Run

Notifikasi Backup Monitor

Notifikasi Gagal Backup

Otomatis Jalankan Backup Dengan Schedule

Tentu kita tidak akan menjalankan backup ini secara manual maka kita perlu melakukan schedule pada aplikasi kita dan untuk membuat schedule command di laravel sangat mudah sekali pertama kita tambahkan dulu command yang akan di jalankan pada file app/Console/Kernel.php sbb

protected function schedule(Schedule $schedule) { $schedule->command('backup:clean')->dailyAt('01:00'); $schedule->command('backup:run')->dailyAt('01:30'); $schedule->command('backup:monitor')->dailyAt('03:00'); }

Jika Server anda di deploy di satu negara saja maka anda dapat menambahkan method Schedule Timezone sbb

/** * Get the timezone that should be used by default for scheduled events. * * @return \DateTimeZone|string|null */ protected function scheduleTimezone() { return 'Asia/Jakarta'; }

Setelah kita berhasil menambahkan schedule command selanjutnya kita tambahkan cronjob dan kali ini kita menggunakan platform Laravel Forge bagi anda yang ingin menggunakan laravel forge silahkan cek

Pada Laravel Forge Kita dapat membuat cronjob sesuai dengan jadwal di jalankannya schedule backup sbb

Bagi anda yang bingung dengan parameter crontab anda dapat mengenerate crontab dengan bantuan Crontab Guru Silahkan Cek

Agar Jadwal Cronjob berjalan sesuai dengan waktu di negara anda maka jangan lupa seting timezone server anda di laravel forge ke timezone negara anda contohnya disini saya set ke Asia/Jakarta anda dapat melakukan setting di menu sbb

Command Untuk Menjalankan backup Di Laravel Forge ( Menggunakan PHP 8 )

php8.0 /home/forge/novalio.id/artisan schedule:run

Demikian Tutorial ini semoga bermanfaat

Salam,

Adinata

Referensi Terkait

Spatie Laravel backup klik disini

Laravel Forge Scheduler klik disini

Mattstaufer Forge Schedule klik disini

Originally published at https://adinata.id on April 23, 2021.

--

--

Adinata
Adinata

Written by Adinata

Saya merupakan seorang fullstack developer dan wirausaha saya rutin membagikan tulisan saya seputar fullstack developer di website : https://midteknologi.com/

No responses yet