6

我正在尝试为我的网站设置 Capistrano 部署,我的部署工作正常,所有身份验证都很好,但是我使用 Media Temple 托管,因此默认符号链接将不起作用,因为 apache 无法访问为当前指定的路径最新发布的。

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

我曾尝试使用 sh,但这似乎是在我的计算机上而不是在服务器上运行命令,找不到运行命令,我尝试执行但找不到正确的格式来执行诸如 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"
4

1 回答 1

8

经过大量的试验和错误,我发现问题是这样的;

  1. 需要在 cap v3 中使用 execute

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

  3. Capistrano 需要更多文档...

这就是我的工作方式,我认为使用 Capistrano 3 有更好的方法,但我找不到足够的文档来描述如何在任何地方工作。

#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"
于 2014-02-17T14:42:07.120 回答