سؤال

أصدر الرجال GitHub مؤخرا تطبيق لمعالجة الخلفية الذي يستخدم Redis:http://github.com/defunkt/resque. http://github.com/blog/542-introducing-Resque.

لدي تعمل محليا، لكنني أكافح للحصول عليها في الإنتاج. هل حصل أي شخص على:

  1. وصفة Capistrano لنشر العمال (عدد العمال من العمال، وإعادة تشغيلها، إلخ)
  2. ينتشر العمال إلى منفصلة الآلة (الآلات) حيث يكون التطبيق الرئيسي قيد التشغيل، ما هي الإعدادات اللازمة هنا؟
  3. حصلت على Redis للبقاء على قيد الحياة لإعادة التشغيل على الخادم (حاولت وضعه في كرون ولكن لا حظ)
  4. كيف قمت بعمل Resque-Web (تطبيق مراقبة ممتازة) في نشرك؟

شكرًا!

سكرتير خاص نشرت مشكلة في جيثب حول هذا ولكن لا استجابة حتى الآن. على أمل أن يساعد بعض المعلمين حتى في هذا الأمر كما لم أكن من ذوي الخبرة في عمليات النشر. شكرًا لك!

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

المحلول 3

ساعد إجابة غاريت حقا، أردت فقط نشر المزيد من التفاصيل. استغرق الأمر الكثير من العبث للحصول عليه بشكل صحيح ...

أنا أستخدم الراكب أيضا، ولكن nginx بدلا من اباتشي.

أولا، لا تنس أن تحتاج إلى تثبيت سيناترا، هذا ألقيتني لفترة من الوقت.sudo gem install sinatra

ثم تحتاج إلى إنشاء دليل لتشغيل شيء ما، وعليه أن يكون لديك مجلد عام و TMP. يمكن أن تكون فارغة ولكن المشكلة هي أن git لن ينقذ دليل فارغ في الريبو. يجب أن يكون لدى الدليل ملف واحد على الأقل في ذلك، لذلك قمت ببعض الملفات غير المرغوب فيه كعناصر نائبة. هذه ميزة غريبة / علة في git.

أنا أستخدم البرنامج المساعد Resque، لذلك قمت بإجراء الدليل هناك (حيث يكون CONFIG.RU الافتراضي). يبدو أن Garrett جعل دليل "Rese 'جديد" في Rails_root له. إما أن يعمل واحد. لي...

cd MY_RAILS_APP/vendor/plugins/resque/
mkdir public 
mkdir tmp
touch public/placeholder.txt
touch tmp/placeholder.txt

ثم قمت بتحريرها MY_RAILS_APP/vendor/plugins/resque/config.ru لذلك يبدو هذا:

#!/usr/bin/env ruby
require 'logger'

$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/lib')
require 'resque/server'

use Rack::ShowExceptions

# Set the AUTH env variable to your basic auth password to protect Resque.
AUTH_PASSWORD = "ADD_SOME_PASSWORD_HERE"
if AUTH_PASSWORD
  Resque::Server.use Rack::Auth::Basic do |username, password|
    password == AUTH_PASSWORD
  end
end

run Resque::Server.new

لا تنس التغيير ADD_SOME_PASSWORD_HERE إلى كلمة المرور التي تريد استخدامها لحماية التطبيق.

أخيرا، أنا أستخدم nginx حتى هنا هو ما أضفته إلى بلدي nginx.conf

server {
  listen   80;
  server_name  resque.seoaholic.com;
  root /home/admin/public_html/seoaholic/current/vendor/plugins/resque/public;
  passenger_enabled on;
}

وبالتالي يتم إعادة تشغيله على النشر الخاص بك، ربما شيء مثل هذا في deploy.rb

run "touch #{current_path}/vendor/plugins/resque/tmp/restart.txt"

لست متأكدا حقا إذا كانت هذه هي أفضل طريقة، لم أقم بإعداد تطبيقات الرف / Sinatra من قبل. ولكنه يعمل.

هذا فقط للحصول على تطبيق المراقبة الذهاب. التالي أحتاج لمعرفة جزء الله.

نصائح أخرى

أنا متأخر قليلا إلى الحفلة، لكنني أعتقد أنني سأقوم بنشر ما كان يعمل بالنسبة لي. في الأساس، لدي إعداد الله لمراقبة Redis و Resque. إذا لم تعد جارية، فإن الله يبدأ منهم احتياطيا. بعد ذلك، لدي مهمة أشعل النار التي يتم تشغيلها بعد نشر CAPISTRANO الذي إنهاء عمالتي الإراني. بمجرد إنهاء العمال، سيبدأ الله عمال جدد حتى يقومون بتشغيل أحدث CodeBase.

فيما يلي كتابة بلدي الكامل لكيفية استخدام التردد في الإنتاج:

http://thomasmango.com/0/20/2/0/0/27/0/0/0/0/1/Resqu-in-Production.

أنا فقط أحسبت هذه الليلة الماضية، لكي كابيسترانو يجب عليك استخدامها san_juan., ، ثم أحب استخدام إله لإدارة نشر العمال. بالنسبة إلى إعادة تشغيل البقاء، لست متأكدا، لكنني أعيد تشغيل كل 6 أشهر لذلك أنا لست قلقا جدا.

على الرغم من أنه يقترح طرق مختلفة لبدء ذلك، إلا أن هذا هو ما عملت أسهل بالنسبة لي. (ضمن deploy.rb الخاص بك)

require 'san_juan'
after "deploy:symlink", "god:app:reload"
after "deploy:symlink", "god:app:start"

لإدارة المكان الذي يعمل فيه، على خادم آخر، إلخ، يغطي ذلك في قسم التكوين التابع README.

يمكنني استخدام الراكب على شريحة بلدي، لذلك كان من السهل نسبيا، كنت بحاجة فقط للحصول على config.ru ملف مثل ذلك:

require 'resque/server'

run Rack::URLMap.new \
  "/" => Resque::Server.new

للحصول على ملف VirtualHost لدي:

<VirtualHost *:80>
        ServerName resque.server.com
        DocumentRoot /var/www/server.com/current/resque/public

        <Location />
          AuthType Basic
          AuthName "Resque Workers"
          AuthUserFile /var/www/server.com/current/resque/.htpasswd
          Require valid-user
        </Location>
</VirtualHost>

أيضا، ملاحظة سريعة. تأكد من أنك تسبب resque:setup مهمة أشعل النار، وسوف يوفر لك الكثير من الوقت لتخفيف العمال الجدد مع الله.

ركضت في الكثير من المتاعب، لذلك إذا كنت بحاجة إلى المزيد من المساعدة، فما عليك سوى نشر تعليق.

استخدم هذه الخطوات بدلا من تكوين مستوى خادم الويب وتحرير البرنامج المساعد:

#The steps need to be performed to use resque-web with in your application

#In routes.rb

ApplicationName::Application.routes.draw do
  resources :some_controller_name
  mount Resque::Server, :at=> "/resque"
end

#That's it now you can access it from within your application i.e
#http://localhost:3000/resque

#To be insured that that Resque::Server is loaded add its requirement condition in Gemfile

gem 'resque', :require=>"resque/server"

#To add  basic http authentication add resque_auth.rb file in initializers folder and add these lines for the security

Resque::Server.use(Rack::Auth::Basic) do |user, password|
  password == "secret"
end

#That's It !!!!! :)

#Thanks to Ryan from RailsCasts for this valuable information.
#http://railscasts.com/episodes/271-resque?autoplay=true 

https://gist.github.com/1060167.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top