brunocfalcao / larapush
php artisan push - 使用单个 Artisan 命令将您的代码库部署到您的 web 服务器
Requires
- php: ^7.2
- brunocfalcao/helpers: ^1.0
- illuminate/support: ^5.8.15|^6.0|^7.0
- kitetail/zttp: ^0.6
- laravel/helpers: ^1.0
- nelexa/zip: ^3.1
- sixlive/dotenv-editor: ^1.2
Requires (Dev)
- phpunit/phpunit: ^8.0
README
使用新的 Laravel Artisan 命令将您的代码库部署到您的 web 服务器
php artisan push
功能
- 客户端与服务器之间使用 HTTP 进行通信。无需 SSH 访问!
- 选择您要上传的代码库(文件、文件夹)。
- 运行您定义的预脚本和后脚本(Artisan 命令、可调用的类或自定义方法)。
- 您可以选择仅上传已修改的文件,或者上传代码库中的所有文件。
- 将文件列入黑名单,使其永远不会上传到您的 web 服务器(例如 .env)。
- 在您的存储路径上备份所有上传的代码库版本。
- 如果您正在上传到生产环境,将会有提示。
- 适用于 UNIX 和 Windows web 服务器。
要求
数据库仅在您的 web 服务器 中需要(将安装 Laravel Passport)
PHP 7.2+
Laravel 5.8+
安装
❗ 为了生成您的 OAuth 客户端和令牌,您需要首先在您的 web 服务器上安装 Larapush!
登录到您的 web 服务器并运行以下命令
composer require brunocfalcao/larapush
php artisan larapush:install-remote
最后,它将生成您将需要在您的本地计算机上安装的命令行。例如
❗ 现在将您在 web 服务器上生成的复制粘贴出来,以便您可以在以后的本地安装中使用。
在您的 本地开发计算机 上,运行以下命令
composer require brunocfalcao/larapush
现在将您之前在 web 服务器上的安装行 粘贴到您的本地计算机提示符 中。这里是一个例子
php artisan larapush:install-local --client=4 --secret=5DrehY2gjPWTPL4rxzQwseHiQHWq8FXaH0Y --token=WXD2W6ZVK5
安装程序将提示您输入您的 web 服务器 URL。只需将其添加为 FQDN 格式(例如:https://www.johnsmith.com)。
安装完成后,您应该会看到
All good! Now you can push your codebase to your web server! Don't forget to update your larapush.php configuration file for the correct codebase files and directories that you want to upload.
用法
从现在起,您只需运行以下命令
php artisan push
它将上传您在 larapush.php 配置文件(larapush.codebase)中定义的代码库以及您也指定的脚本(larapush.scripts)。
配置
创建了一个新的 larapush.php 配置文件。让我们来看看。
larapush.type
无需更改此内容,它将由安装程序自动配置,使用已注册的 .env 密钥。
larapush.environment
如果您的 web 服务器环境名称与这里指定的任何一个匹配,那么每次您推送代码时,Larapush 都会要求您确认上传。这将避免您将代码库上传到您可能不想上传的环境(例如生产环境)。
larapush.remote
默认情况下无需更改这些密钥,除非您想更改主根 URL 路径或强制使用 web 服务器 URL。
larapush.scripts (pre_scripts 和 post_scripts)
您可以在代码部署到您的 web 服务器前后指定操作。对于每个操作,您可以
- 运行 Artisan 命令。例如:['cache:clear', ScriptType::ARTISAN]
- 执行可调用的方法。例如:[MyClass::class, ScriptType::CLASSMETHOD]
- 执行特定对象的方法:例如:['MyClass@myMethod', ScriptType::CLASSMETHOD]
- 执行系统 shell 命令:例如:"['composer dumpautoload', ScriptType::SHELLCMD]"
您可以添加尽可能多的内容。所有输出都存储在您的交易文件夹中(稍后解释)。
larapush.codebase
重要部分,您可以在此处指定您的代码库文件夹和文件。只需将它们添加为数组值,例如。
'codebase' => [ 'App', 'database', 'resources/views/file.blade.php', 'webpack.js' ],
larapush.storage
这是所有您的代码库推送交易存储的路径。将其视为一种版本化方式来存储所有代码库随时间的变化。
larapush.oauth
这些是由Laravel Passport生成的安全令牌。不要更改它们,它们已记录在您的.env文件中。
larapush.token
这是一层额外的安全层,确保令牌在Web服务器和您的本地开发计算机上相同。通过安装过程进行注册。
代码库事务仓库
每次您上传代码库时,Larapush都会在您的本地计算机和Web服务器上存储该代码库以及您配置的“pre”和“post”脚本。这被称为事务。默认情况下,这些事务文件夹位于您的storage_path("app/larapush")。您可以在larapush.php配置文件中更改此路径。
例如,您正在推送代码库,您在artisan命令信息中看到这条线
[...]
Creating local environment codebase repository (20190413-211644-GFKXN)...
[...]
括号内的代码是事务代码。如果您导航到storage-path/app/larapush,您将看到那里列出了所有事务文件夹。每个文件夹都对应于您推送到Web服务器的一次推送。
在您的Web服务器上,它的工作方式完全相同。此外,在每一个文件夹中,您可能还会看到两个文件
output_pre_scripts.log output_post_scripts.log
这些是每次代码库推送运行脚本的控制台导出。因此,如果您正在运行脚本,您将在这里看到您的控制台输出。不错吧? :)
安全至上
Larapush在开发时非常重视安全。最终,任何知道您的端点的人都可以上传恶意代码库到您的Web服务器。这就是为什么Larapush使用OAuth客户端访问令牌为每个在您的Web服务器和本地计算机之间握手的HTTP事务。HTTP事务结束时,客户端访问令牌被标记为已使用,因此不能再次使用。
当您在Web服务器上安装Larapush时,它会安装Laravel Passport并生成一个特定客户端令牌,该令牌在您的Web服务器和本地计算机之间是唯一的。从此以后,任何在您的本地计算机和Web服务器之间的交易都需要首先请求新的客户端授权令牌,然后在该相应的HTTP调用中使用该令牌。此外,还有一个需要在本地计算机和Web服务器之间相同的令牌。如果不一致,交易将错误终止。
每次您推送代码库时,所有这些都会自动完成。既简单又流畅!
安全
如果您发现任何与安全相关的问题,请直接给我发邮件。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。