使用 Laravel Envoy 部署到具有不同项目根的多个服务器

问题描述

当使用 Laravel Envoy 部署到多台服务器时,如何指定每台服务器的项目根目录?文档中提供的示例假设项目根目录对于两台服务器来说是相同的路径。

Screenshot

假设 web-1 的项目根目录为 /var/html/wwwweb-2 的项目根目录为 /var/foo/bar。如何在运行时访问不同服务器的项目根目录?

解决方法

可以通过不同的方式使用 Laravel Envoy 来实现您想要实现的目标。例如,根据您的描述,在运行 envoy run deploy 后,您的 Envoy.blade.php 文件中会出现类似以下内容。

@servers(['web-1' => '127.0.0.1','web-2' => '127.0.0.1'])

@setup
    function logMessage($message) {
        return "echo '\033[32m" .$message. "\033[0m';\n";
    }
@endsetup

@story('deploy')
    deploy-web-1
    deploy-web-2
@endstory

@task('deploy-web-1',['on' => ['web-1']])
    cd /Users/Shared
    {{ logMessage('? Task complete for web-1') }}
@endtask

@task('deploy-web-2',['on' => ['web-2']])
    cd /Users/khill
    {{ logMessage('? Task complete for web-2') }}
@endtask
,

你一定要试试这个

$webServerIps = [
'web-1' => 'xxx.xxx.xxx.xxx','web-2' => 'xxx.xxx.xxx.xxx',];

@servers(array_merge($webServerIps,['persistent' => 'xxx.xxx.xxx.xxx','worker' 
=> 'xxx.xxx.xxx.xxx','local' => '127.0.0.1']))

我希望你得到你的解决方案。

您也可以关注此link以获得更多帮助