2010-11-19 10 views
0

Ich habe zwei Benutzer in meinem Server: root und development. Jedes Mal, wenn Sphinx neu gestartet wird, hat sich der Besitz von searchd.production.pid immer zu root geändert. Ich benutze immer die development, um eine Kappe, Update-Code usw. zu tun.Automatische Änderung searchd.production.pid Besitz an den gewünschten Besitzer nach Sphinx Neustart

Ich habe dies in meinem deploy.rb:

after "deploy:update_code", "sphinx:stop" 
after "deploy:migrate", "sphinx:start" 

namespace :sphinx do 
    desc "Start Sphinx Searchd" 
    task :start, :roles => :app do 
    run "cd #{deploy_to}/current/; /usr/bin/rake ts:start RAILS_ENV=#{rails_env}" 
    end 

    desc "Stop Sphinx Searchd" 
    task :stop, :roles => :app do 
    run "cd #{deploy_to}/current/; /usr/bin/rake ts:stop RAILS_ENV=#{rails_env}" 
    end 
    desc "Restart Sphinx Searchd" 
    task :restart, :roles => :app do 
    run "cd #{deploy_to}/current/; /usr/bin/rake ts:restart RAILS_ENV=#{rails_env}" 
    end 
end 

Aber dann wird diese laufen development Benutzer verwenden, ich nur den Besitz einer Datei ändern kann, wenn ich der Besitzer bin. Irgendeine Idee? Vielen Dank!

Antwort

0

Dies ist kein Problem mit Capistrano, sondern SSH.

Ich denke, Sie laufen capistrano von demselben Server, auf dem Sie bereitstellen.

Es spielt keine Rolle, welchen Benutzer Sie benutzen, um 'cap' auszuführen, was wirklich wichtig ist, welcher Benutzer Sie sind, wenn Sie 'ssh' zu Ihrem Server sind.

Wenn Sie 'Entwicklung' Benutzer und SSH zu Ihrem Server sind, welcher Benutzer bist du?

root ?, dann reparieren Sie Ihre .ssh/config-Datei.

Ihre deploy.rb sieht gut aus, aber ich würde trocknen Sie es mit:

namespace :sphinx do 
    desc "Start Sphinx Searchd" 
    task :start, :roles => :app do 
    rake "ts:start" 
    end 

    desc "Stop Sphinx Searchd" 
    task :stop, :roles => :app do 
    rake "ts:stop" 
    end 
    desc "Restart Sphinx Searchd" 
    task :restart, :roles => :app do 
    rake "ts:restart" 
    end 
end 

def rake(rake_task) 
    if rake_task 
    raise "Rails environment not set" unless rails_env 
    run "cd #{current_path} && rake #{rake_task} RAILS_ENV=#{rails_env}" 
    end 
end