2010-11-19 16 views
0

私のサーバーには2人のユーザー:rootdevelopmentがあります。スフィンクスが再開されるたびに、searchd.production.pidの所有権は常にrootに変更されました。私はいつもdevelopmentを使ってキャップや更新コードなどを行う。自動変更searchd.production.pid所有者にスフィンクス再起動後の所有者

は、私は私の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

これはカピストラー問題ではなく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 
関連する問題