almadih/maneuver-v2

通过FTP或SFTP轻松部署Laravel项目,使用Git进行版本控制。

2.1.5 2023-04-10 00:53 UTC

This package is auto-updated.

Last update: 2024-09-10 04:09:58 UTC


README

这是一个使部署变得前所未有的简单的Laravel包。它使用Git读取文件更改并通过FTP或SFTP部署到您的服务器(们)。为什么选择Git?因为每个人都应该已经对他们的文件进行了版本控制,如果他们这样做,那么他们几乎肯定正在使用Git。为什么选择FTP?因为它是最容易实现和使用的传输协议。

使用它非常简单!在配置中添加您的服务器,只需运行一个命令。就这样!其他任何事情都将自动处理。哦,它甚至支持Git SubModules和Sub-SubModules。这难道不很酷吗?

Maneuver与PHPloy紧密结合,这是一个用PHP编写的CLI工具,可以部署任何项目,而不仅仅是Laravel应用程序。

maneuver

为什么?

有许多出色的部署工具:Capistrano、Rocketeer或Envoy(Laravel自己的ssh任务运行器),仅举几个例子。它们可以完成任务,可能以更优雅的方式。那么为什么使用这种方法呢?

尽管任何理智的开发者都会使用Git进行版本控制,但并不是每个人都了解或费心去理解如何利用Git进行部署。关键是Git的领域不是部署,因此将其配置为向远程仓库推送并触发钩子以传输工作树可能是一项繁琐的任务。值得一提的是,仍然有一些项目托管在共享主机上,在那里设置远程Git仓库可能是不可能的。

Maneuver通过一个非常简单的方法解决了这些问题。它将版本控制的最佳实践与文件传输相结合,而不需要在服务器上做任何特殊的事情。开发者已经使用FTP几十年来有选择地上传文件,这是一个耗时且容易出错的流程。现在他们可以使用一个只需几分钟就可以开始的自动工具。

安装

首先根据您的Laravel安装确定所需的Maneuver版本。您将在下一步使用该特定版本。

  1. 将包添加到您的composer.json文件中,并运行composer update
{
    "require": {
        "almadih/maneuver-v2": "2.1.*"
    }
}
  1. Fadion\Maneuver\ManeuverServiceProvider添加到您的config/app.php文件中,位于providers数组内。

  2. 使用php artisan vendor:publish发布包的配置,这样您就可以轻松地在config/maneuver.php中修改它。

配置

第一步是在配置文件中添加服务器。如果您遵循了上面的第3步,您将找到它位于config/maneuver.php中。

connections数组中添加一个或多个服务器,为每个服务器提供一个独特且易于识别的名称。显然,还应输入凭据。可选地,通过在default选项中输入服务器名称来指定默认服务器以进行部署。如果未覆盖,更改将部署到该服务器。如果您将default选项留空,则部署将运行到所有服务器。

别忘了为您的服务器设置schemeftpssh以进行SFTP。

使用方法

您将像运行其他artisan命令一样从命令行使用Maneuver。即使终端感觉像是一个难以理解的环境,我保证它将变得非常简单。

从现在起,我将假设您已经有一个本地的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将在您的服务器上存储一个.revision文件,其中包含最新部署提交的哈希值。删除该文件将触发新的部署,并将所有文件重新传输。编辑其内容应予以避免,否则可能会发生非常奇怪的事情。

同步远程修订文件

远程修订文件将自动处理,通常这是所需的操作行为。对于那些需要更新其内容的情况,您可以使用当前本地修订或您选择的特定提交的哈希值来同步它。

同步到当前本地修订

php artisan deploy:sync

同步到特定提交

php artisan deploy:sync --commit=<hash>

运行sync命令将连接到您的服务器并更新.revision文件,但不会执行其他上传。