كيفية نشر عمال التراكم في الإنتاج؟
-
20-09-2019 - |
سؤال
أصدر الرجال GitHub مؤخرا تطبيق لمعالجة الخلفية الذي يستخدم Redis:http://github.com/defunkt/resque. http://github.com/blog/542-introducing-Resque.
لدي تعمل محليا، لكنني أكافح للحصول عليها في الإنتاج. هل حصل أي شخص على:
- وصفة Capistrano لنشر العمال (عدد العمال من العمال، وإعادة تشغيلها، إلخ)
- ينتشر العمال إلى منفصلة الآلة (الآلات) حيث يكون التطبيق الرئيسي قيد التشغيل، ما هي الإعدادات اللازمة هنا؟
- حصلت على Redis للبقاء على قيد الحياة لإعادة التشغيل على الخادم (حاولت وضعه في كرون ولكن لا حظ)
- كيف قمت بعمل 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