Проблем
За съжаление, много нови разработчици на Laravel не осъзнават това, докато не пуснат кода си в производство и нещо се случва, така че те губят данните си.
Laravel не предлага архивиране на база данни като част от тяхната основна функционалност, така че новите разработчици на Laravel не могат да работят с това, докато четат статии или създават приложение на Laravel.
Днес става все по-важно нещо да съхранявате и съхранявате резервните си данни, в случай че някога се наложи да ги използвате.
Често срещани грешки, които новите разработчици на Laravel правят, е да отидат на phpmyadmin и да се опитат да стартират този експорт ръчно. Въпреки че това все още ще работи, това не е най-добрата практика, защото понякога няма да сте там, за да направите резервното копие и вашите потребители вече са генерирали нови данни.
Това, което искате да направите, е да автоматизирате това.
Решение
Има много начини, по които можете да направите резервно копие на вашата база данни, но колко хора правят, е да използвате този пакет https: // github.com / spatie / laravel-backup . Компанията зад нея е много надеждна и позната в бранша.
На първо място, пакетът е БЕЗПЛАТЕН, така че не е нужно да плащате нищо.
Положителното е, че инсталацията е доста проста и това, което ми харесва по-специално, е, че не само прави резервно копие на вашата база данни, но и имате възможност да архивирате вашите файлове и след това да съхранявате всичко това в zip файл. Когато казвам файлове, имам предвид файлове за съхранение, като например качване на документи или файлове, които генерирате с приложението си.
Освен това можете да го преместите и в AWS S3, което е умно нещо. Всичко, което трябва да направите, е (ако приемете, че вече имате AWS акаунт, е да отидете и да създадете нов сегмент S3 с нови разрешения. След това можете просто да следвате документацията на тяхната страница в Github.
Ето бърз преглед на конфигурационния файл, който можете да промените, за да получавате известия чрез други носители като Slack и Email.
'известия' => ['известия' => [
\ Spatie \ Backup \ Notifications \ Notifications \ BackupHasFailed :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ UnhealthyBackupWasFound :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ CleanupHasFailed :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ BackupWasSuccessful :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ HealthyBackupWasFound :: class => ['mail', 'slack'],
\ Spatie \ Backup \ Notifications \ Notifications \ CleanupWasSuccessful :: class => ['mail', 'slack'],
],
/ *
* Тук можете да посочите уведомлението, на което да се изпращат известията. По подразбиране
* notifiable ще използва променливите, посочени в този конфигурационен файл.
* /
'notifiable' => \ Spatie \ Backup \ Notifications \ Notifiable :: class,
'поща' => [
'до' => ['редактор @ linuxhint.com '],
],
'отпуснато' => [
'webhook_url' => 'https: // куки.отпуснатост.com / services / ABMGGK7AB / B9PBCDSM8 / kam02gzLrycaUBctgAdRv52M ',
/ *
* Ако това е зададено за нула, ще се използва каналът по подразбиране на webhook.
* /
'канал' => нула,
],
],
Настройте автоматизация
И накрая, всичко това няма да има много смисъл, ако решите да пропуснете частта за автоматизация. За това искате да разчитате на cron задания, които вече трябва да са активирани на вашия хост и указател на командата за график Laravel по следния начин:
* * * * * cd / path-to-your-project && php artisan график: стартирайте >> / dev / null 2> & 1Оттук в приложението / конзолата / ядрото.php файл, трябва да направите следното, ако искате да го автоматизирате в определен момент (обикновено правя това, когато повечето от нашите потребители спят):
if (app ('env') == 'production')$ schedule-> command ('backup: clean') -> daily () -> at ('01: 00 ');
$ schedule-> command ('backup: run') -> daily () -> at ('02: 00 ');