ruby-on-rails - 上帝无法启动redis服务器。收到此错误 : `/var/run/redis/redis-server.pid' : Permission denied

标签 ruby-on-rails redis monitor god

我正在尝试使用 god (ruby gem) 监控 redis 服务器。我将/etc/redis/redis.conf 中的 PID 文件路径更改为部署我的应用程序的用户的 Rails 应用程序临时文件夹(使用 capistrano),并在 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。我查看了它的 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 路径的地方:God configuration file to monitor existing processes?

最佳答案

请确保您已禁用 SElinux 您可以使用以下命令禁用 selinux: 设置强制 0

关于ruby-on-rails - 上帝无法启动redis服务器。收到此错误 : `/var/run/redis/redis-server.pid' : Permission denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17872937/

相关文章:

ruby-on-rails - 立即保存相互指向的 ActiveRecord 关联

ruby-on-rails - 如何让 Bootstrap 类似按钮的复选框最初被选中?

kubernetes - Redis 集群客户端不适用于 GKE 上的 Redis 集群

ruby-on-rails - Windows 上的 Hiredis 0.5.2

java - Monitor USB IO "traffic"(任何语言)

c# - .NET 中的锁定(监视)内部实现

sql - 如何在 Rails 中的连接表上指定条件

ruby-on-rails - 使用 Ruby on Rails 将类动态添加到 .erb 中的 div

Redis 分片性能和获取 key 的 o(1) 时间复杂度

multithreading - 有没有办法使用cherrypy的监视器来执行单个任务然后停止?