Ruby on rails 上帝不能启动redis服务器。获取此错误:`/var/run/redis/redis server.pid';:拒绝许可

Ruby on rails 上帝不能启动redis服务器。获取此错误:`/var/run/redis/redis server.pid';:拒绝许可,ruby-on-rails,redis,monitor,god,Ruby On Rails,Redis,Monitor,God,我正试图用god(rubygem)监控redis服务器。我将/etc/redis/redis.conf中的PID文件路径更改为部署我的应用程序的用户的rails app temp文件夹(使用capistrano),并在redis.god文件中添加了一行“w.PID_file=…”,该行指向与我在redis.conf文件中更改的PID路径相同的PID路径。因此redis.god文件目前看起来是这样的: rails_env = ENV['RAILS_ENV'] || 'production' r

我正试图用god(rubygem)监控redis服务器。我将/etc/redis/redis.conf中的PID文件路径更改为部署我的应用程序的用户的rails app temp文件夹(使用capistrano),并在redis.god文件中添加了一行“w.PID_file=…”,该行指向与我在redis.conf文件中更改的PID路径相同的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。我查看了god文件的日志,上面写着:

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路径的想法:

请确保您已禁用SElinux 您可以使用以下命令禁用selinux:
setEnforce0

看起来您有权限问题。如果您在sudo privileges下安装了redis,并在用户privileges下运行,那么它就不能接触属于root的文件,这也就不足为奇了。@daveTsunami您可以肯定这是真的。我的印象是,上帝会以sudo的力量运行,不会被剥夺对其PID文件的权限。我修复它的方法是将其w.start、w.stop和w.retart行更改为“usr/bin/redis server/etc/redis/redis.conf”