2013-07-26 46 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

相關問題