fadion / maneuver
通过 FTP 或 SFTP 部署 Laravel 项目,使用 Git 进行版本控制。
Requires
- php: >=5.5.0
- banago/bridge: ~1.0.8
- illuminate/config: 5.*
- illuminate/console: 5.*
- illuminate/support: 5.*
- jakeasmith/http_build_url: ~0.1.2
This package is auto-updated.
Last update: 2024-09-21 20:43:42 UTC
README
这是一个使部署变得前所未有的简单的 Laravel 扩展包。它使用 Git 来读取文件更改并通过 FTP 或 SFTP 部署到您的服务器。 为什么使用 Git? 因为每个人都应该已经对文件进行版本控制,如果他们这么做,几乎可以肯定他们会使用 Git。 为什么使用 FTP? 因为它是实现和使用的最简单的传输协议。
使用它非常简单!在配置文件中添加您的服务器,然后只需运行一条命令。这就完成了!其他任何事情都会自动处理。哦,它甚至支持 Git SubModules 和 Sub-SubModules。这不是很酷吗?
Maneuver 与 PHPloy 紧密耦合,这是一个用 PHP 编写的 CLI 工具,可以部署任何项目,而不仅仅是 Laravel 应用程序。
为什么?
有大量的优秀部署工具:Capistrano、Rocketeer 或 Envoy(Laravel 自带的 ssh 任务运行器),仅举几个例子。它们能够完成任务,可能的方式更加优雅。那么为什么使用这种方法呢?
虽然任何理智的开发者都会使用 Git 进行版本控制,但并非所有人都能理解如何利用 Git 进行部署。重点是 Git 的领域不是部署,因此设置它以推送到远程仓库并触发钩子以传输工作树可能是一项繁琐的任务。值得一提的是,仍有项目托管在共享主机上,在那里设置远程 Git 仓库可能不可行。
Maneuver 通过一种非常简单的方法解决了这些问题。它将版本控制的优势与文件传输相结合,而无需在服务器上安装任何特殊软件。开发者已经使用了数十年的 FTP 来有选择地上传文件,这是一个既耗时又容易出错的过程。现在,他们可以使用一个只需几分钟即可开始使用的自动工具。
安装
首先根据您的 Laravel 安装确定您需要的 Maneuver 版本。您将在下面的步骤中使用该特定版本。
- 将包添加到您的 composer.json 文件中,并运行
composer update
{
"require": {
"fadion/maneuver": "2.1.*"
}
}
-
将
Fadion\Maneuver\ManeuverServiceProvider添加到您的config/app.php文件中的providers数组。 -
使用
php artisan vendor:publish发布包的配置,以便您可以在config/maneuver.php中轻松修改它。
配置
第一步是在配置文件中添加服务器。如果您遵循了上述第 3 步,您将可以在 config/maneuver.php 中找到它。
在 connections 数组中添加一个或多个服务器,并为每个服务器提供一个独特且易于识别的名称。显然,还需要输入凭证。可选地,通过在 default 选项中输入服务器的名称,指定一个默认服务器进行部署。如果未进行覆盖,更改将部署到该服务器。如果留空 default 选项,则将部署到所有服务器。
不要忘记为您的服务器设置 scheme 为 ftp 或 ssh 以支持 SFTP。
用法
您将从命令行使用 Maneuver,就像运行其他 artisan 命令一样。即使终端感觉像是一个您无法理解的神秘环境,我保证它会变得轻而易举。
从现在起,我将假设您已经有一个本地的Git仓库,并且已经提交了一些更改。Maneuver使用Git的信息来获取文件更改,如果没有Git仓库则无法工作。此外,我将假设您已经打开了一个终端(命令提示符或您的操作系统称之为什么)并且位于您的Laravel应用的根目录中。
部署
您将一直使用的命令,大多数情况下不带任何参数,是
php artisan deploy
该命令将读取Git仓库,构建一个要上传和/或删除的文件列表,并开始通过FTP传输它们。如果您在配置文件中指定了默认服务器,它将推送到该服务器,否则它将推送到您定义的所有服务器。它也非常详细,在过程的每个步骤都会打印出有用的信息。
服务器
您可以通过向deploy命令传递参数,选择部署到默认服务器之外的其中一个或多个服务器。假设我们已经定义了开发、测试和生成服务器,其中'开发'是默认的,我们可以仅通过以下方式部署到'测试':
php artisan deploy --server=staging
通过传递多个选项,我们可以告诉它同时部署到'测试'和'生成'服务器
php artisan deploy --server=staging --server=production
甚至还有一个快捷选项
php artisan deploy -s staging -s production
列出已更改的文件
为了方便起见,您可以查看自上次部署以来已更改的文件列表
php artisan deploy:list
与deploy命令一样,它将列出默认服务器的已更改文件。您可以通过传递服务器选项来执行此操作
php artisan deploy:list --server=staging
正如您所猜到的,运行此命令将仍然连接到您的服务器,但不会进行上传。它只是比较版本并列出更改的文件。
回滚
回滚是一个功能,它会为您做繁重的工作,通过暂时移动到之前的提交并部署那些文件。运行后,Git仓库将回滚到命令执行前的状态。请将其用作快速回滚服务器中文件的方法,但不是修改您的Git仓库的方法。
要回滚到上一个提交
php artisan deploy:rollback
如果您想回滚到特定的提交
php artisan deploy:rollback --commit=<hash>
远程版本文件
为了实现同步,Maneuver将在您的服务器(s)中存储一个包含最新部署提交哈希的.revision文件。删除该文件将触发新的部署,并将所有文件重新传输。编辑其内容应予以避免,否则可能会发生非常奇怪的事情。
同步远程版本文件
远程版本文件会自动处理,通常这是所需的行为。对于那些需要更新其内容的情况,您可以将其与当前的本地版本或您选择的特定提交哈希同步。
同步到当前本地版本
php artisan deploy:sync
同步到特定提交
php artisan deploy:sync --commit=<hash>
运行sync命令将连接到您的服务器并更新.revision文件,但不会进行其他上传。