2010-11-19 2 views
0

내 서버에 두 명의 사용자가 있습니다 : root 및 입니다. 스핑크스가 다시 시작될 때마다 searchd.production.pid의 소유권은 항상 root으로 변경되었습니다. 나는 항상 development을 사용하여 모자를 쓰고 코드를 업데이트합니다.자동으로 searchd.production.pid 소유주를 Sphinx를 다시 시작한 후 원하는 소유자에게 변경합니다.

나는 나의 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 

그러나이 development 사용자를 사용하여 실행되고, 나는 단지 파일의 소유권을 변경할 수 있습니다. 어떤 생각? 감사!

답변

0

이것은 카피ist라노 문제가 아니라 SSH입니다.

배포하려는 동일한 서버에서 capistrano를 실행중인 것 같습니다.

'cap'을 실행하기 위해 어떤 사용자를 사용하는지는 중요하지 않습니다. 실제로 중요한 것은 서버에 연결하는 경우 어떤 사용자인지입니다.

'개발'사용자이고 서버에 ssh 인 경우 어떤 사용자입니까?

root? .ssh/config 파일을 수정하십시오.

귀하의 deploy.rb 좋아 보인다,하지만 난 그것을 건조 것 :

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 
관련 문제