2012-01-16 16 views
5

मेरे पास रूबी ऑनरेल प्रोजेक्ट है, और इसे उबंटू सर्वर पर यूनिगर्न पर यूनिकॉर्न के साथ तैनात किया गया है।मास्टर प्रक्रिया को मारने के बिना यूनिकॉर्न को मैं फिर से कैसे लोड करूं?

अगर मैं कॉन्फ़िगरेशन फ़ाइलों में से किसी एक को बदलता हूं, तो मुझे यूनिकॉर्न को पुनरारंभ करने की आवश्यकता है, लेकिन जब मैं यूनिकॉर्न की मास्टर प्रक्रिया को मारता हूं और bundle exec के साथ इसे फिर से शुरू करता हूं तो यह मेरी साइट बंद हो जाता है।

क्या प्रक्रिया को मारने और नीचे जाने के बिना यूनिकॉर्न की नई फाइलों के साथ काम करने का कोई तरीका है?

उत्तर

8

मेरी Capistrano deploy.rb में मेरे पास है:

desc "Zero-downtime restart of Unicorn" 
task :restart, :except => { :no_release => true } do 
    run "kill -s USR2 unicorn_pid" 
end 

यह अच्छी तरह से "Lighting fast, zero-downtime deployments with git, capistrano, nginx and Unicorn" में प्रलेखित है।

+0

मैंने आपकी सलाह के साथ कुछ प्रगति की है, धन्यवाद लेकिन अब मुझे नई त्रुटियां मिली हैं। जब मैं "टोपी पुनरारंभ" दर्ज करता हूं और अपना पासवर्ड दर्ज करता हूं, तो मुझे निम्न मिला है: '** [out :: app_name] $ rvm_path (/root/.rvm/) मौजूद नहीं है। *** [err :: app_name]/usr/local/rvm/bin/rvm-shell: line 57: rvm: कमांड नहीं मिला *** [err :: app_name] त्रुटि: RVM 'रूबी' का उपयोग करने में असमर्थ था -1.9.2-पी 2 9 0'' अगर मैं Google से परिणाम समझ सकता हूं, तो मुझे अपने आरवीएम_पैथ var को "/ usr/local/rvm/bin" में बदलना होगा (यह वास्तव में मौजूदा डीआईआर है), लेकिन मुझे यह नहीं मिल रहा है कहीं भी। – leitasat

+0

आपके द्वारा कोडित एक स्क्रिप्ट को पुनरारंभ करें? यदि ऐसा है तो आप इसे उपयोग करने के लिए आवश्यक आरवीएम संस्करण के बारे में जागरूक करने के लिए अपनी स्क्रिप्ट में 'आरवीएम उपयोग 1.9.2' जोड़ सकते हैं। अन्यथा कृपया उत्तर को सही के रूप में चिह्नित करें और आरवीएम मुद्दे के लिए एक नया खोलें। मुझे मदद करने में खुशी होगी। – tommasop

+0

ठीक है, मैंने अपना आरवीएम तय किया है (आवश्यक मणि नहीं था) और अब ऐसा लगता है कि कैपिस्ट्रानो निश्चित रूप से मेरा आदेश करता है, लेकिन यूनिकॉर्न कॉन्फ़िगरेशन फ़ाइलों में मेरे बदलावों पर विचार नहीं करता है। (उदाहरण के लिए, कार्यकर्ता प्रक्रियाओं या डेटाबेस सेटिंग्स की संख्या) – leitasat

0

स्वीकार किए गए दोनों सहित दोनों उत्तर खराब हैं।

http://unicorn.bogomips.org/SIGNALS.html मास्टर प्रक्रिया में HUP भेजें।

desc "Zero-downtime restart of Unicorn" 
task :restart, :except => { :no_release => true } do 
    run "kill -s HUP `cat tmp/pids/unicorn.pid`" 
end 
+0

सवाल यह नहीं पूछ रहा था कि कैसे रिलाओड (जो एचयूपी है) लेकिन कैसे शानदार ढंग से पुनर्स्थापित करना है जो पहले से ही यूएसआर 2 है – tommasop

संबंधित मुद्दे