1

神(ruby gem)でredisサーバーを監視しようとしています。/etc/redis/redis.conf の PID ファイル パスを (capistrano を使用して) アプリをデプロイするユーザーの rails app temp フォルダーに変更し、redis.god ファイルに「w.pid_file= .. ." これは、redis.conf ファイルで変更したものと同じ PID パスを指しています。そのため、redis.god ファイルは現時点では次のようになっています。

rails_env   = ENV['RAILS_ENV'] || 'production'
raise "Please specify RAILS_ENV." unless rails_env
rails_root  = ENV['RAILS_ROOT'] || File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))

# Redis
%w{6379}.each do |port|
  God.watch do |w|
    w.dir           = "#{rails_root}"
    w.name          = "redis"
    w.interval      = 30.seconds
    w.start         = "/etc/init.d/redis-server start /etc/redis/redis.conf"
    w.stop          = "/etc/init.d/redis-server stop"
    w.restart       = "/etc/init.d/redis-server restart"
    w.start_grace   = 10.seconds
    w.restart_grace = 10.seconds
    w.log           = "#{rails_root}/log/redis.log"
    w.pid_file      = "/home/deployer/myapp/current/tmp/pids/redis-server.pid"

    w.behavior(:clean_pid_file)

    w.start_if do |start|
      start.condition(:process_running) do |c|
          c.interval = 5.seconds
          c.running = false
      end
    end
  end
end

私が抱えている問題は、神が redis を開始できることです。神ファイルのログを調べたところ、次のように書かれています。

Starting redis-server: touch: cannot touch `/var/run/redis/redis-server.pid': Permission denied

なぜまだ /var/run/redis/redis-server.pid を調べようとしているのですか? 許可が拒否されたため、redis.conf ファイルの PID パスを上に示した新しいパスに変更しましたが、依然として /var/run/redis/redis-server.pid を参照する必要があります。参考までに、これは PID パスを変更するというアイデアを得た場所です:既存のプロセスを監視するための神の構成ファイル?

4

1 に答える 1