我正在尝试用god(ruby gem)监视redis服务器。我将/etc/redis/redis.conf中的PID文件路径更改为部署我的应用程序的用户的rails应用程序临时文件夹(使用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开始。我看了看它的日志,上面写着:
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:设置强制0