2010-11-19 34 views
0

J'ai deux utilisateurs sur mon serveur: root et development. À chaque redémarrage de Sphinx, la propriété searchd.production.pid a été remplacée par root. J'utilise toujours le development pour faire un bouchon, mettre à jour le code, etc.Modification automatique de la propriété searchd.production.pid au propriétaire souhaité après le redémarrage de Sphinx

J'ai dans mon 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 

Mais cela est exécuté en utilisant l'utilisateur development, je ne peux changer la propriété d'un fichier si je suis le propriétaire. Une idée? Merci!

Répondre

0

Ce n'est pas un problème de Capistrano mais SSH.

Je suppose que vous exécutez capistrano à partir du même serveur que celui que vous déployez.

Peu importe l'utilisateur que vous utilisez pour exécuter 'cap', ce qui compte vraiment, c'est quel utilisateur vous êtes si vous êtes sur votre serveur.

Si vous êtes un utilisateur 'développement' et ssh sur votre serveur, de quel utilisateur êtes-vous? Root ?, puis corrigez votre fichier .ssh/config.

Votre deploy.rb semble bon, mais je tariraient avec:

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