2014-02-17 34 views
6

我想为我的网站安装Capistrano部署,我已经部署工作,所有身份验证都很好,但是我用Media temple托管,所以默认的符号链接不会工作,因为Apache不会可以访问为最新版本指定的路径。Capistrano创建任务来改​​变当前的符号链接

我试图做一个任务,将取消链接当前的符号链接,然后重新创建一个相对路径,但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" 

回答

8

一个巨大的尝试和错误的量之后,我发现这个问题是;

  1. 需要使用帽V3执行

  2. 需要光盘的话链命令& &运行目录的特定命令

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

这是我得到我的工作,我认为有一个更好的方式与Capistran o 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" 
+0

你介意发布解决这个问题的代码吗?我有同样的问题。 – bigsweater

+1

@bigsweater我已经添加了什么为我工作... –

+1

谢谢!我最终只是覆盖默认的符号链接函数,以便资产和目录都被更新。我可能能够使用你的任务,但使覆盖更模块化... https://gist.github.com/bigsweater/9307075 – bigsweater

相关问题