Problém
Mnoho nových vývojárov Laravel si to, bohužiaľ, neuvedomuje, kým neuvedú svoj kód do výroby, a niečo sa stane, takže stratia svoje údaje.
Laravel neponúka zálohu databázy ako súčasť svojich základných funkcií, takže noví vývojári Laravelu s tým nemôžu pracovať pri čítaní článkov o Laravelu alebo pri vytváraní aplikácie Laravel.
Dnes sa stáva čoraz dôležitejšou vecou ukladanie a uchovávanie zálohovaných údajov pre prípad, že by ste ich niekedy potrebovali použiť.
Bežné chyby, ktoré noví vývojári Laravelu robia, je prechod na phpmyadmin a pokus o spustenie tohto exportu ručne. Aj keď to stále bude fungovať, nie je to najlepší postup, pretože niekedy nebudete môcť urobiť zálohu, a vaši používatelia už vygenerovali nové údaje.
To, čo chcete urobiť, je automatizovať to.
Riešenie
Existuje mnoho spôsobov, ako môžete zálohovať svoju databázu, ale koľko ľudí to robí, používa tento balík https: // github.com / spatie / laravel-backup . Spoločnosť, ktorá stojí za tým, je veľmi spoľahlivá a v odbore známa.
V prvom rade je balíček ZDARMA, takže nemusíte platiť nič.
Pozitívne je, že inštalácia je celkom jednoduchá a čo sa mi obzvlášť páči, je to, že nielenže zálohujete svoju databázu, máte tiež možnosť zálohovať svoje súbory a potom ich uložiť do zip súboru. Keď hovorím o súboroch, mám na mysli úložné súbory, ako sú napríklad odovzdané dokumenty alebo súbory, ktoré vygenerujete pomocou svojej aplikácie.
Okrem toho to môžete presunúť aj na AWS S3, čo je inteligentná vec. Všetko, čo musíte urobiť, je (za predpokladu, že už máte účet AWS, je ísť a vytvoriť nový segment S3 s novými povoleniami. Potom už len môžete sledovať dokumentáciu na ich stránke Github.
Tu je rýchly náhľad na konfiguračný súbor, ktorý môžete vyladiť, aby ste dostávali oznámenia prostredníctvom iných médií, ako sú Slack a Email.
'oznámenia' => ['oznámenia' => [
\ 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'],
],
/ *
* Tu môžete určiť oznamovateľ, ktorému sa majú oznámenia odosielať. Predvolená hodnota
* notifikovateľné použije premenné uvedené v tomto konfiguračnom súbore.
* /
'notifiable' => \ Spatie \ Backup \ Notifications \ Notifiable :: class,
'mail' => [
'to' => ['editor @ linuxhint.com '],
],
'slack' => [
'webhook_url' => 'https: // háčiky.ochabnúť.com / services / ABMGGK7AB / B9PBCDSM8 / kam02gzLrycaUBctgAdRv52M ',
/ *
* Ak je nastavená hodnota null, použije sa predvolený kanál webhooku.
* /
'channel' => null,
],
],
Nastaviť automatizáciu
Nakoniec by to všetko nemalo veľký zmysel, ak by ste sa rozhodli preskočiť automatizačnú časť. Z tohto dôvodu sa chcete spoľahnúť na úlohy cron, ktoré by už mali byť na vašom hostiteľovi povolené a ukazovateľ na príkaz Laravel schedule, napríklad tento:
* * * * * cd / path-to-your-project && php artisan schedule: run >> / dev / null 2> & 1Odtiaľ vo svojej aplikácii / konzole / jadre.php súbor, mali by ste urobiť nasledovné, ak ho chcete automatizovať v konkrétnom čase (zvyčajne to robím, keď väčšina našich používateľov spí):
if (app ('env') == 'production')$ schedule-> command ('backup: clean') -> daily () -> at ('01: 00 ');
$ schedule-> command ('backup: run') -> daily () -> at ('02: 00 ');