Deployment Capistrano创建任务以更改当前符号链接

Deployment Capistrano创建任务以更改当前符号链接,deployment,capistrano,web-deployment,capistrano3,Deployment,Capistrano,Web Deployment,Capistrano3,我正在尝试为我的网站设置Capistrano部署,我已使部署工作,所有身份验证都正常,但我使用Media temple托管,因此默认的符号链接将无法工作,因为apache将无法访问为当前至最新版本指定的路径 我正在尝试创建一个任务,该任务将取消当前符号链接的链接,然后使用相对路径重新创建它,但是Capistrano文档严重缺乏,我在任何地方都找不到关于如何准确设置该符号链接的更多信息 我尝试过使用sh,但似乎在我的计算机上而不是服务器上运行命令,找不到run命令,我尝试过执行,但找不到正确的格式

我正在尝试为我的网站设置Capistrano部署,我已使部署工作,所有身份验证都正常,但我使用Media temple托管,因此默认的符号链接将无法工作,因为apache将无法访问为当前至最新版本指定的路径

我正在尝试创建一个任务,该任务将取消当前符号链接的链接,然后使用相对路径重新创建它,但是Capistrano文档严重缺乏,我在任何地方都找不到关于如何准确设置该符号链接的更多信息

我尝试过使用sh,但似乎在我的计算机上而不是服务器上运行命令,找不到run命令,我尝试过执行,但找不到正确的格式来执行rm或ln等操作

目前,我正在尝试以下方法:

namespace :deploy do

  desc "Change HTML Symlink to relative path"
  task :create_symlink do
    #latest_release_relative = relative_path(deploy_to, release_path + '/html')
    #sh "rm -f #{current_path} && ln -s #{latest_release_relative} #{current_path}"
    #sh "echo #{File.basename release_path}"
    info "echo Modifying symlink to be relative"
    #run "rm -d #{current_path}"
    #run "ln releases/#{File.basename release_path} #{current_path}"
    #execute :rm, '-d', #{current_path}
  end

  desc "Create environment file"
  task :create_env_conf
  file 'env.conf' do |t|
    sh "touch env.conf"
  end

end

after :deploy, "deploy:create_symlink", "deploy:create_env_conf"

经过大量的尝试和错误,我发现问题在于

  • 需要在capv3中使用execute

  • 需要cd,然后使用&&链接命令以运行特定于目录的命令

  • Capistrano需要更多的文档

  • 这就是我如何让我的工作,我认为有一个更好的方法与Capistrano3做到这一点,但我找不到足够的文件说明如何在任何地方

    #config valid only for Capistrano 3.1
    lock '3.1.0'
    
    set :application, 'prism-credentials'
    set :repo_url, 'REPO URL'
    
    # Default deploy_to directory is /var/www/my_app
    set :deploy_to, 'DEPLOY FOLDER'
    
    # Default value for keep_releases is 5
    set :keep_releases, 5
    
    set :branch, "master"
    if ENV['branch']
        set :branch, ENV['branch']
    end
    
    namespace :deploy do
    
      desc "Change HTML Symlink to relative path"
      task :create_symlink do
        on roles(:app) do
    
            #execute "ls -l"
            info "Modifying symlink to be relative"
            execute "rm -d #{current_path}"
    
            info "Deleted current symlink"
            execute "cd ../DEPLOY FOLDER && ln -s ./releases/#{File.basename release_path} current"
            info "Created relative current symlink"
    
            execute "cd ~/../DEPLOY FOLDER && touch env.conf && echo 'live' >> env.conf"
            info "Created environment file"
    
        end
      end
    
    end
    
    after :deploy, "deploy:create_symlink"
    

    你介意为你发布解决这个问题的代码吗?我也有同样的问题,谢谢!我最终只是覆盖了默认的符号链接函数,以便更新资产和目录。我也许可以使用您的任务,使覆盖更加模块化。。。