Бог не может запустить сервер Redis. Получение этой ошибки: `/var/run/redis/redis-server.pid': Отказано в доступе

Я пытаюсь контролировать сервер Redis с помощью бога (ruby gem). Я изменил путь к файлу PID в /etc/redis/redis.conf на временную папку приложения rails пользователя, развертывающего мое приложение (используя capistrano), а в файле redis.god я добавил строку «w.pid_file= .. .», который указывает на тот же путь PID, который я изменил в файле redis.conf. Итак, файл 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? Я изменил путь PID в файле redis.conf на новый, показанный выше, потому что мне было отказано в доступе, но он все еще настаивал на поиске в /var/run/redis/redis-server.pid. К вашему сведению, здесь мне пришла в голову идея изменить путь PID: файл конфигурации God на отслеживать существующие процессы?


person user1370897    schedule 26.07.2013    source источник
comment
Похоже, у вас проблема с разрешением. Если у вас установлен redis с привилегиями sudo и он работает под вашими привилегиями пользователя, то неудивительно, что он не может коснуться файла, принадлежащего root.   -  person david89    schedule 26.07.2013
comment
@daveTsunami Конечно, ты прав. У меня сложилось впечатление, что бог будет работать с полномочиями sudo и ему не будет отказано в разрешениях на его файл PID. Я исправил это, изменив строки w.start, w.stop и w.retart на usr/bin/redis-server /etc/redis/redis.conf ‹- для его запуска. Убедитесь, что вы установили в своем redis.conf свой pid и файл журнала в доступную для записи папку.   -  person user1370897    schedule 26.07.2013


Ответы (1)


Пожалуйста, убедитесь, что вы отключили SElinux, вы можете отключить selinux с помощью этой команды: setenforce 0

person Jaber Zare    schedule 24.01.2018