cybex / laravel-protector
通过生成备份并在非生产环境中导入来保护数据库。
Requires
- php: ^8.2
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- ext-pdo: *
- ext-sodium: *
- guzzlehttp/guzzle: ^7.4
- illuminate/support: ^11.0
- laravel/framework: ^11.0
- laravel/sanctum: ^4.0
Requires (Dev)
- laravel/sail: ^1.26
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^10.5
- dev-master
- v3.0.0
- v2.2.0
- v2.1.0
- v2.0.1
- v2.0.0
- v1.6.0
- v1.5.0
- v1.4.1
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- dev-feature/postgres-support
- dev-feature/add-laravel-9-10-support
- dev-release/v2
- dev-feature/pint-formatting
- dev-release/v3
- dev-feature/set-connection
- dev-feature/add-pint-auto-linting-action
- dev-release/v1
- dev-fix/option-latest-with-force
- dev-feature/dump-meta-data
This package is auto-updated.
Last update: 2024-09-25 18:00:04 UTC
README
此包允许您下载、导出和导入应用程序的数据库备份。
常见使用场景
- 将本地数据库存储在文件中
- 非生产开发机器可以下载实时服务器数据库
- 中央备份服务器可以收集多个实时服务器的备份
功能集
- 从服务器下载并可选地导入数据库
- 导入现有的数据库文件
- 将本地数据库导出到文件
- 通过 Laravel Sanctum 令牌进行用户身份验证
- 使用 Sodium 加密传输
支持数据库
- 目前,Protector 仅支持 MySQL 数据库。
- MariaDB 数据库可能工作,但目前尚未积极测试和支持。
- 目前不会检查源和目标数据库。请确保您以相同的软件版本运行以防止出现问题。
- 由于不同的转储格式,从 MariaDB 拉取转储并将其恢复到 MySQL 将不起作用。
注意事项
- 启用 Laravel Telescope 将阻止下载远程文件,因为它打开并丢弃 HTTP 流!
目录
使用说明
导出到文件
要保存本地数据库的副本,请运行
php artisan protector:export
默认情况下,转储存储在您的默认项目磁盘上的 storage/app/protector。您可以通过发布 protector 配置文件到项目来配置目标磁盘、文件名等。
artisan vendor:publish --tag=protector.config
导入
运行以下命令以启动交互式 shell
php artisan protector:import
导入特定源
要一次性下载并导入服务器数据库,请运行
php artisan protector:import --remote
当与其他选项一起使用时,远程将作为后备行为。
要导入您之前下载的特定数据库文件,请运行
php artisan protector:import --file=<absolute path to database file>
或者只需在 protector 文件夹中引用数据库文件名(默认文件夹为 storage/app/protector)。
php artisan protector:import --dump=<name of database file>
要导入最新的现有数据库文件,请运行
php artisan protector:import --latest
选项
如果您想在导入数据库文件后运行迁移,请运行
php artisan protector:import --migrate
为了自动化,还考虑使用 flush 选项来清理旧数据库文件,以及使用 force 选项来跳过用户交互。
php artisan protector:import --remote --migrate --flush --force
要了解更多关于导入选项的信息,请运行
php artisan protector:import --help
设置说明
以下列出了三种常见的使用场景。这些场景不是互斥的。
本地数据库存储设置
如果您只想将本地数据库的副本存储在磁盘上,设置很简单。
在本地 Laravel 项目中安装 protector
通过 composer 安装此包。
composer require cybex/laravel-protector
您可以选择发布 protector 配置来设置以下选项
fileName:数据库转储的文件名baseDirectory:文件存储的位置diskName:在 config/filesystems.php 中定义的专用 Laravel 磁盘。这些可以指向特定的本地文件夹或像 AWS S3 这样的云文件存储桶
artisan vendor:publish --tag=protector.config
本地使用
现在您可以使用 artisan 命令将备份写入 protector 存储文件夹。
php artisan protector:export
默认情况下,文件将被存储在storage/protector,并且文件名中包含时间戳。您也可以指定文件名。
您也可以通过以下方式自动化此操作
- 在Linux上安装cronjob
- 在您部署到服务器时运行它
- 创建一个Laravel任务并将其排队
php artisan protector:export --file=storage/database.sql
远程服务器数据库导入设置
此软件包可以在同一软件仓库的服务器和客户端机器上运行。您可以在服务器上设置授权的开发者,并给他们提供本地机的密钥。
在您的Laravel项目中安装protector
通过 composer 安装此包。
composer require cybex/laravel-protector
在您的User模型类中添加以下特性。
use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens; ... }
发布protector数据库迁移,并可选择修改它以适应您的项目。
php artisan vendor:publish --tag=protector.migrations
在客户端和服务器仓库上运行迁移。
php artisan migrate
您可以选择发布protector配置以设置有关存储、访问和传输文件的选项。
php artisan vendor:publish --tag=protector.config
在客户端机器上
运行以下命令以接收
- 要给您的服务器管理员提供的公钥
- 要保存到您的.env文件中的私钥
php artisan protector:keys
您的服务器管理员将给您token和server-url,以保存到您的.env文件中。除非您的软件有其他指定,否则.env密钥是
PROTECTOR_AUTH_TOKEN= PROTECTOR_SERVER_URL=
不要将您的私钥给任何人,并始终保持保护
有关如何导入远程数据库的说明,请参阅使用方法。
下载的数据库转储文件存储未加密
在服务器上
确保服务器可以通过HTTPS从客户端机器访问。
当您的开发人员给您上一步中提供的公钥时,您可以使用以下方式授权他们
php artisan protector:token --publicKey=<public key> <user id>
您将收到要给开发人员的token和url,他们必须将其保存到他们的.env文件中。
然后,开发人员可以自行下载和导入服务器数据库。
从多个服务器收集备份的设置
您可以开发一个自定义客户端,该客户端可以访问和存储远程服务器备份。这些服务器可以是安装了protector软件包的不同Laravel项目。
有关如何给予备份客户端对所有服务器的访问权限的说明,请参阅上一章节。备份客户端需要在每个目标服务器上有一个相应的用户。
- 目标服务器上的所有备份用户都将具有客户端的相同公钥
- 对于每个目标服务器,客户端将存储相应的url和token
有关示例实现,请参阅cybex-gmbh/collector。
从 Protector v1.x 迁移到 v2.x 的迁移指南
影响可能性:高
- 如果您的应用程序没有明确要求laravel/sanctum软件包,将Protector升级到2.x版本也将Sanctum升级到3.x版本。这将要求您遵循其升级指南。
影响可能性:低
- 现在对以前公开的方法
getGitRevision()、getGitHeadDate()或getGitBranch()的访问受到保护。您现在需要调用getMetaData()并从返回的数组中提取信息。
贡献
有关详细信息,请参阅CONTRIBUTING。
安全性
如果您发现任何与安全相关的问题,请通过webdevelopment@cybex-online.com发送电子邮件,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。
Laravel包模板
此软件包是用Laravel包模板生成的。