2014-02-17 2 views
6

Ich versuche, Capistrano Deployment für meine Website einzurichten, ich habe die Bereitstellung funktioniert, alle Authentifizierung in Ordnung, aber ich hosten mit Media Tempel, so dass die Standard-Symlink nicht funktioniert, wie Apache nicht funktioniert Zugriff auf den für die aktuelle Version angegebenen Pfad habenCapistrano erstellt Aufgabe zum Ändern der aktuellen Symlink

Ich versuche eine Aufgabe zu machen, die den aktuellen Symlink auflöst und ihn dann mit einem relativen Pfad neu erstellt, allerdings fehlt die Capistrano Dokumentation stark und ich kann nirgends mehr Informationen finden, wie genau ich das einrichten soll.

Ich habe versucht, mit sh, aber das scheint die Befehle auf meinem Computer statt auf dem Server ausführen, run-Befehl nicht gefunden, und ich habe versucht, ausführen, kann aber nicht das richtige Format für Dinge wie rm oder ln zu finden usw ...

Derzeit versuche mich folgende:

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" 

Antwort

8

Nach einer riesigen Menge von Versuch und Irrtum, fand ich, dass das Problem, das war;

  1. Need in cap v3 ausführen verwenden

  2. mit bestimmten Befehlen & & zum Ausführen von Verzeichnis

  3. Capistrano mehr Dokumentation braucht ...

dann Kette Befehl cd Need

Dies ist, wie ich meins funktioniert, ich denke, es gibt eine bessere Möglichkeit, es mit Capistran zu tun o 3 aber ich konnte keine adäquate Dokumentation finden, die beschreibt, wie woanders ist.

#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

Würde es Ihnen etwas ausmachen, den Code zu veröffentlichen, der dieses Problem für Sie gelöst hat? Ich habe das gleiche Problem. – bigsweater

+1

@bigsweater Ich habe hinzugefügt, was für mich funktionierte ... –

+1

Danke! Am Ende habe ich einfach die Standard-Symlink-Funktionen überschrieben, so dass sowohl Assets als auch Verzeichnisse aktualisiert werden. Ich könnte jedoch Ihre Aufgabe verwenden, um die Überschreibungen modularer zu machen ... https://gist.github.com/bigsweater/9307075 – bigsweater

Verwandte Themen