【问题标题】:Automatic change searchd.production.pid ownership to desired owner after Sphinx restart在 Sphinx 重新启动后自动将 searchd.production.pid 所有权更改为所需的所有者
【发布时间】:2010-11-19 02:56:10
【问题描述】:

我的服务器中有两个用户:rootdevelopment。每次 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 用户运行的,如果我是所有者,我只能更改文件的所有权。任何的想法?谢谢!

【问题讨论】:

    标签: ruby-on-rails sphinx capistrano


    【解决方案1】:

    这不是 capistrano 问题,而是 SSH。

    我猜你正在从你正在部署的同一台服务器上运行 capistrano。

    你使用什么用户来运行“cap”并不重要,真正重要的是如果你“ssh”到你的服务器,你是什么用户。

    如果您是“开发”用户并通过 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
    

    【讨论】:

      猜你喜欢
      • 2017-03-15
      • 2019-04-17
      • 2021-07-05
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 2015-12-03
      • 1970-01-01
      相关资源
      最近更新 更多