教程介绍Laravel框架创建应用程序和数据库的备份。我们使用Spatie创建一个好用的开源软件库。


本文的初心来自我之前听过的一个故事。


某公司使用云应用来管理其网站内容。经过一年多的蜜月阶段,一切都按照预期运行。在某一个清晨,他们发现竟然不能登录服务器,提供凭据不对。因为他们在一年多中,没有更改过密码。安全部门经常提示应该每季度更改一次密码。但事实证明,现在的云端和数据库丢失了。


如果有一个良好的备份机制,数据会很快恢复,网站也会很快恢复。


但是事实上,他们没有做备份。


我喜欢从错误中吸取教训,但我更愿意从其他人的错误中吸取教训。这件事摧促我尽快建立自己的备份系统。于是,我决定写一篇关于如何备份网站的教程,这样你就可以从别人的错误中学到东西。


步骤如下:


创建项目


进入终端,转到Laravel项目目录,运行如下命令:


composer require spatie/laravel-backup


接下来运行如下命令,以显示config.php文件内容:


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


接下来,再用你喜欢的任一款IDE,转到config文件夹中的backup.php文件。


1)首先设置邮件地址:


'mail'  => [

    'to'  =>  'your@example.com',

]


上面的邮件地址用来做备份成功与否的通知,包括运行的详细状态。注意,本地服务器需要安装MTA代理,否则上述操作将无效。也可以用SMTP或第三方的邮件服务处理。


如果不需要使用邮件服务,可以设置为空。


2.在备份文件名中添加前缀(可选)


'filename_prefix'  =>  'backup-',

3.确保在境文件(.env)中指定了有意义的应用程序名字。


文件备份将生成到/storage/app/<your_meaningful_app_name>/backup-2018-12-18-17-22-38.zip。


4.设置备份占用的空间量限制。


默认情况下,它设置为5G,这个空间太大了。以下是我建议的设置:


'deleteOldestBackupsWhenUsingMoreMegabytesThan'  =>  800,


5.文件压缩


我们希望备份不占用云端空间,可以使用压缩功能。在config/backup.php中找到以下行:


'database_dump_compressor'  =>  null,


改为:


'database_dump_compressor'  =>  Spatie \ DbDumper \ Compressors \ GzipCompressor :: class,


网站快捷备份的七个步骤_java


接下来我启用了备份压缩,效果不错,请看:


网站快捷备份的七个步骤_java_02


6.监控备份

这个库还给我们提供了另一个很棒的命令。用来检查备份运行状态的命令。他也是可配置的,它会检测备份时间是否超过了1天,备份是否超过一定的空间。


php artisan backup:monitor


这是我在备份前运行命令的结果:


网站快捷备份的七个步骤_java_03


然后我运行了备份命令,检查备份的运行状态:


网站快捷备份的七个步骤_java_04


7。自动化你的生活


自动化会成为我们的朋友。我们并不希望每天,每周都运行该命令,备份数据。我们使用cron安排它每晚运行,让我们睡得更踏实,再不用担心丢失任何数据。


小结


前面的公司如果这个库,他就会省下很多时间和钱。至少我们现在知道,不能找借口不备份我们的数据。