2013-07-26 399 views
1

我试图监测与上帝(红宝石宝石)的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?

+1

它看起来像你有一个权限问题。如果你在sudo privilleges下安装了redis,并且在你的用户权限下运行,那么难怪它不能触及属于root的文件。 – DaveTsunami

+0

@daveTsunami果然,你是真的。我的印象是上帝会以sudo权力运行,并且不会被拒绝其PID文件的权限。我修正它的方法是将它的w.start,w.stop和w.retart行更改为“usr/bin/redis-server /etc/redis/redis.conf”< - 用于启动它。确保你在你的redis.conf中设置你的pid和日志文件到一个可写的文件夹中。 – user1370897

回答

0

请确保您有禁用SELinux的 您可以使用此命令禁用SELinux: setenforce 0

相关问题