我试图监测与上帝(红宝石宝石)的Redis服务器。我将/etc/redis/redis.conf中的PID文件路径更改为部署我的应用(使用capistrano)的用户的rails应用临时文件夹,并在redis.god文件中添加了“w.pid_file = .. 。“,它指向与我在redis.conf文件中更改的路径相同的PID路径。所以redis.god文件目前看起来像这样:上帝无法启动redis服务器。得到这个错误:`/var/run/redis/redis-server.pid':权限被拒绝
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路径更改为上面显示的新路径,因为我获得了Permission拒绝,但它仍然坚持查看/var/run/redis/redis-server.pid。仅供参考,这在那里我得到了主意,改变PID路径:God configuration file to monitor existing processes?
它看起来像你有一个权限问题。如果你在sudo privilleges下安装了redis,并且在你的用户权限下运行,那么难怪它不能触及属于root的文件。 – DaveTsunami
@daveTsunami果然,你是真的。我的印象是上帝会以sudo权力运行,并且不会被拒绝其PID文件的权限。我修正它的方法是将它的w.start,w.stop和w.retart行更改为“usr/bin/redis-server /etc/redis/redis.conf”< - 用于启动它。确保你在你的redis.conf中设置你的pid和日志文件到一个可写的文件夹中。 – user1370897