استخدام الله لمراقبة يونيكورن - ابدأ الخروج برمز غير صفري = 1

StackOverflow https://stackoverflow.com/questions/3877178

سؤال

أنا أعمل على نص الله لمراقبة وحيدات بلدي. لقد بدأت مع البرنامج النصي لأمثلة Github وقمت بتعديله لمطابقة تكوين الخادم الخاص بي. بمجرد تشغيل الله ، أوامر مثل god stop unicorn و god restart unicorn العمل على ما يرام.

لكن، god start unicorn النتائج في WARN: unicorn start command exited with non-zero code = 1. الجزء الغريب هو أنه إذا قمت بنسخ البرنامج النصي Start مباشرة من ملف التكوين ، فإنه يبدأ مباشرة مثل موستانج جديدة.

هذا هو أمر البدء الخاص بي:

/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D

لقد أعلنت جميع المسارات على أنها مطلقة في ملف التكوين. أي أفكار ما الذي قد يمنع هذا البرنامج النصي من العمل؟

هل كانت مفيدة؟

المحلول

لم أستخدم Unicorn كخادم تطبيق ، لكنني استخدمت الله للمراقبة من قبل.

إذا كنت أتذكر بحق عندما تبدأ الله وتعطي ملف التكوين الخاص بك ، فإنه يبدأ تلقائيًا كل ما أخبرته بمشاهدته. من المحتمل أن يونيكورن قيد التشغيل بالفعل ، وهذا هو السبب في أنه يرمي الخطأ.

تحقق من هذا عن طريق التشغيل god status بمجرد أن تبدأ الله. إذا لم يكن هذا هو الحال ، فيمكنك التحقق من سطر الأوامر ما هي حالة خروج Comand:

/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D; echo $?;

سوف يطبع هذا الصدى حالة الخروج من الأمر الأخير. إذا كان الصفر ، فإن الأمر الأخير لم يبلغ عن أي أخطاء. حاول بدء Unicorn مرتين على التوالي ، أتوقع المرة الثانية التي ستعود فيها 1 ، لأنها تعمل بالفعل.

تعديل:

بما في ذلك الحل الفعلي من التعليقات ، حيث يبدو أن هذا استجابة شائعة:

يمكنك تعيين مستخدم ومجموعة صريحة إذا كانت العملية تتطلب تشغيلها كمستخدم معين.

God.watch do |w|
  w.uid = 'root'
  w.gid = 'root'

  # remainder of config
end

نصائح أخرى

كانت مشكلتي أنني لم أتجمع أبداً كجذر. هذا ما فعلته:

sudo bash
cd RAILS_ROOT
bundle

تحصل على تحذير يخبرك ألا تفعل هذا أبدًا:

لا تقم بتشغيل Bundler كجذر. يمكن أن يطلب Bundler Sudo إذا كان هناك حاجة إليه ، وتثبيت حزمةك كجذر سيؤدي إلى كسر هذا التطبيق لجميع المستخدمين من غير الجذر على هذا الجهاز.

لكنها كانت الطريقة الوحيدة التي يمكنني الحصول عليها من Resque أو Unicorn للركض مع الله. كان هذا على مثيل EC2 إذا كان ذلك يساعد أي شخص.

ساعدني إضافة خيار السجل بشكل كبير في تصحيح الأخطاء.

God.watch do |w|
  w.log = "#{RAILS_ROOT}/log/god.log"

  # remainder of config
end

في النهاية ، تبين أن الخلل الخاص بي هو start_script في الله تم إعدامه في development بيئة. لقد أصلحت هذا عن طريق إلحاق RAILS_ENV إلى START SCRIPT.

start_script = "RAILS_ENV=#{ENV['RACK_ENV']} bundle exec sidekiq -P #{pid_file} -C #{config_file} -L #{log_file} -d"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top