2010-10-01 10 views
0

Impossible d'obtenir un travail retardé pour fonctionner avec monit. voici mon fichier delayed_job.monitrc ..travail retardé et le monit

check process delayed_job with pidfile /var/www/app/shared/pids/delayed_job.pid 
    start program = "cd /var/www/myapp/current && script/delayed_job start RAILS_ENV=production" 
       as uid deploy and gid www-data 
    stop program = "cd /var/www/myapp/current && script/delayed_job stop RAILS_ENV=production" 
      as uid deploy and gid www-data 
    if mem usage > 20% for 5 cycles then alert 
    if mem usage > 30% for 5 cycles then restart 

J'ai essayé de faire une commande droite aussi bien et cela ne fonctionnera pas même sans Monit. Je dois être dans le répertoire courant pour le script/delayed_job commencer à fonctionner, ou il jette une erreur comme ..

/var/www/myapp/current/script/delayed_job start RAILS_ENV=production 

/usr/local/lib/ruby/1.8/fileutils.rb:243:in `mkdir': Permission denied - log (Errno::EACCES) 
    from /usr/local/lib/ruby/1.8/fileutils.rb:243:in `fu_mkdir' 
    from /usr/local/lib/ruby/1.8/fileutils.rb:217:in `mkdir_p' 
    from /usr/local/lib/ruby/1.8/fileutils.rb:215:in `reverse_each' 
    from /usr/local/lib/ruby/1.8/fileutils.rb:215:in `mkdir_p' 
    from /usr/local/lib/ruby/1.8/fileutils.rb:201:in `each' 
    from /usr/local/lib/ruby/1.8/fileutils.rb:201:in `mkdir_p' 
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/buffered_logger.rb:51:in `initialize' 
    from /var/www/myapp/releases/20101001032406/config/initializers/dj.rb:4:in `new' 
    from /var/www/myapp/releases/20101001032406/config/initializers/dj.rb:4 
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:147:in `load_without_new_constant_marking' 
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:147:in `load' 
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:622:in `load_application_initializers' 
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:621:in `each' 
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:621:in `load_application_initializers' 
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:176:in `process' 
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `send' 
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `run' 
    from /var/www/myapp/current/config/environment.rb:10 
    from /var/www/myapp/current/script/delayed_job:3:in `require' 
    from /var/www/myapp/current/script/delayed_job:3 

état Monit dit que l'exécution a échoué.

+0

Votre répertoire se connecte-t-il à votre Rails.root? – shingara

+0

Je suis désolé, je n'ai pas compris cela. Les journaux sont dans/var/www/myapp/shared/logs – badnaam

Répondre

0

Je suppose que ce répertoire de journal devrait être dans/var/www/myapp/current/et DJ essaie de mkdir avant d'y écrire. Et très probablement, l'utilisateur 'deploy' n'a pas l'autorisation d'écrire dans/var/www/myapp/current.

+0

Hmm..non, déployer propre répertoire de currents – badnaam

+0

J'ai accepté la réponse si ce n'était pas exactement le cas, il m'a conduit à la bonne direction. merci – badnaam

+0

@badnaam quel est votre cas? pouvez-vous partager afin d'aider les disciples? –

-1

Le problème était que j'ai eu ce qui suit dans l'initialiseur DJ, pour avoir un journal DJ à des journaux de rails réguliers (ce qui n'arrive pas btw). Il a été résolu une fois que je l'ai commenté.

Delayed::Worker.logger = ActiveSupport::BufferedLogger.new("log/{Rails.env}_delayed_jobs.log##", Rails.logger.level) 
Delayed::Worker.logger.auto_flushing = 1 
Questions connexes