我的服务器中有两个用户:root
和development
。每次重新启动Sphinx时,searchd.production.pid
的所有权始终更改为root
。我总是使用development
来执行任何上限,更新代码等。
我在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 :(得分:0)
这不是一个capistrano问题,而是SSH。
我猜你是从你正在部署的同一台服务器上运行capistrano。
使用什么用户来运行“上限”并不重要,如果您将“服务器”用于服务器,那么真正重要的是用户。
如果您是“开发”用户并且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