Я пытаюсь контролировать сервер 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 на отслеживать существующие процессы?