Problém
Mnoho nových vývojářů Laravel si to bohužel neuvědomuje, dokud neprovedou svůj kód do výroby, a něco se stane, takže ztratí svá data.
Laravel nenabízí zálohu databáze jako součást své základní funkce, takže noví vývojáři Laravelu s tím nemohou pracovat při čtení článků o Laravelu nebo při vytváření aplikace Laravel.
Dnes se stává stále důležitější věcí ukládat a uchovávat vaše záložní data pro případ, že byste je někdy potřebovali použít.
Časté chyby, které noví vývojáři Laravelu dělají, je přejít na phpmyadmin a pokusit se tento export spustit ručně. I když to bude i nadále fungovat, není to nejlepší postup, protože někdy tam nebudete, abyste vytvořili zálohu, a vaši uživatelé již vygenerovali nová data.
To, co chcete udělat, je automatizovat to.
Řešení
Existuje mnoho způsobů, jak můžete zálohovat databázi, ale kolik lidí používá tento balíček https: // github.com / spatie / laravel-backup . Společnost za ním je velmi spolehlivá a v oboru známá.
Nejprve je balíček ZDARMA, takže nemusíte nic platit.
Pozitivní je, že instalace je poměrně jednoduchá a hlavně se mi líbí, že nejenže zálohuje vaši databázi, ale máte také možnost zálohovat soubory a poté vše uložit do souboru zip. Když říkám soubory, mám na mysli soubory úložiště, například nahrání dokumentu nebo soubory, které vygenerujete pomocí své aplikace.
Kromě toho to můžete také přesunout na AWS S3, což je chytrá věc. Vše, co musíte udělat, je (za předpokladu, že již máte účet AWS, je jít a vytvořit nový kbelík S3 s novými oprávněními. Pak můžete jen sledovat dokumentaci na jejich stránce Github.
Zde je rychlý náhled konfiguračního souboru, který můžete vyladit, abyste dostávali oznámení prostřednictvím jiných médií, jako je Slack a e-mail.
'notifications' => ['notifications' => [
\ 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'],
],
/ *
* Zde můžete určit oznamovatel, kterému mají být oznámení zasílána. Výchozí
* notifiable použije proměnné uvedené v tomto konfiguračním souboru.
* /
'notifiable' => \ Spatie \ Backup \ Notifications \ Notifiable :: class,
'mail' => [
'to' => ['editor @ linuxhint.com '],
],
'slack' => [
'webhook_url' => 'https: // háčky.ochabnout.com / services / ABMGGK7AB / B9PBCDSM8 / kam02gzLrycaUBctgAdRv52M ',
/ *
* Pokud je nastaveno na null, použije se výchozí kanál webhooku.
* /
'channel' => null,
],
],
Nastavit automatizaci
Nakonec by to všechno nemělo smysl, kdybyste se rozhodli přeskočit automatizační část. Za tímto účelem se chcete spolehnout na úlohy cron, které by již měly být povoleny na vašem hostiteli a ukazatel na příkaz Laravel harmonogram, jako je tento:
* * * * * cd / path-to-your-project && php artisan schedule: run >> / dev / null 2> & 1Odtud ve vaší aplikaci / konzole / jádře.php soubor, měli byste udělat následující, pokud jej chcete automatizovat v určitou dobu (obvykle to dělám, když většina našich uživatelů spí):
if (app ('env') == 'production')$ schedule-> command ('backup: clean') -> daily () -> at ('01: 00 ');
$ schedule-> command ('backup: run') -> daily () -> at ('02: 00 ');