You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Capistrano 3如何获取新版本路径?部署切换目录执行composer install遇阻

解决Capistrano 3部署时无法切换到指定目录执行Composer的问题

从你的配置代码来看,核心问题是你已经定义了主题目录的变量:theme_path,但在build任务里没有使用它,仍然在根release_path下执行命令,自然无法进入Sage主题的正确文件夹。

修正后的部署任务代码

set :theme_path, "#{release_path}/web/app/themes/sage"
append :linked_dirs, "web/app/uploads"
append :linked_files, ".env"
set :keep_releases, 3

namespace :deploy do
  desc "Build Sage theme dependencies"
  after :updated, :build do
    on roles(:app) do
      # 切换到预定义的主题目录
      within fetch(:theme_path) do
        # 执行Composer安装,建议添加生产环境参数
        execute :composer, 'install', '--no-dev', '--optimize-autoloader'
      end
    end
  end
end

关键说明

  1. 使用fetch(:theme_path)获取变量:
    Capistrano中获取自定义变量的标准方式是用fetch方法,而不是直接引用符号,这样能避免路径解析时的潜在问题,也更符合框架的最佳实践。

  2. 添加Composer生产环境参数:

    • --no-dev:生产环境下不安装开发依赖(比如PHPUnit、代码检查工具等),减少部署体积和安全风险。
    • --optimize-autoloader:生成优化的自动加载文件,提升应用运行时的性能。
  3. 额外排查点:
    如果执行时提示找不到composer命令,你可以:

    • 直接指定Composer的绝对路径,比如execute '/usr/local/bin/composer', 'install', ...;
    • 在Capistrano配置中添加全局的Composer路径设置:set :composer_path, '/usr/local/bin/composer'。

内容的提问来源于stack exchange,提问作者Octoxan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:05:55