2010-06-17 15 views
13

के साथ तैनाती करते समय सर्वर पर माइग्रेशन चलाना मैं कैपिस्ट्रानो के साथ अपने रेल एप्लिकेशन को तैनात करने की कोशिश कर रहा हूं, लेकिन मुझे अपने माइग्रेशन चलाने में कुछ परेशानी हो रही है। मेरे विकास के माहौल में मैं अपने डेटाबेस के रूप में स्क्लाइट का उपयोग करता हूं, लेकिन मेरे उत्पादन सर्वर पर मैं MySQL का उपयोग करता हूं।कैपिस्ट्रानो

समस्या यह है कि मैं माइग्रेशन को अपने सर्वर से चलाने के लिए चाहता हूं, न कि मेरी स्थानीय मशीन, क्योंकि मैं किसी दूरस्थ स्थान से अपने डेटाबेस से कनेक्ट नहीं कर पा रहा हूं।

मेरा सर्वर सेटअप: एक डेबियन बॉक्स जिसमें नग्निक्स, यात्री, माइस्क्ल और एक गिट रिपोजिटरी चल रहा है।

ऐसा करने का सबसे आसान तरीका क्या है?

अद्यतन: (i example.com के साथ अपने वास्तविक डोमेन प्रतिस्थापित)

set :application, "example.com" 
set :domain, "example.com"   

set :scm, :git  
set :repository, "[email protected]:project.git" 

set :use_sudo, false 

set :deploy_to, "/var/www/example.com" 

role :web, domain 
role :app, domain 
role :db, "localhost", :primary => true 

after "deploy", "deploy:migrate" 

जब मैं टोपी तैनाती चलाने के लिए, सब कुछ ठीक काम कर रहा है जब तक यह कोशिश करता है:

यहाँ मेरी तैनाती स्क्रिप्ट है माइग्रेशन चलाने के लिए। यहाँ त्रुटि मैं हो रही है:

 
** [deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2)) 
connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2))) 

यही कारण है कि मैं सर्वर से पलायन को चलाने के लिए और अपने स्थानीय मशीन से नहीं की जरूरत है।

कोई विचार?

उत्तर

6

क्या आपने अपना तैनाती उपयोगकर्ता सर्वर पर एक MySQL उपयोगकर्ता के रूप में जोड़ा है? मुझे लगता है कि लोकलहोस्ट सर्वर है जो स्वयं को स्थानीय मशीन नहीं बताता है।

इसके अलावा, आप अपने तैनाती स्क्रिप्ट में अपना उपयोगकर्ता निर्धारित नहीं किया है:

set :user, "deploy_user_name" 

role :web, domain 
role :app, domain 
role :db, domain, :primary => true 
+0

ठीक है, तैनात उपयोगकर्ता नाम मेरे स्थानीय उपयोगकर्ता नाम के समान है। साथ ही, जब मैं लॉग इन करता हूं और एसएसएच के माध्यम से माइग्रेशन चलाता हूं तो यह ठीक काम करता है। – Pandafox

+0

हम्म। असल में आपके द्वारा पोस्ट की गई त्रुटि update_code पर है। क्या मैं बस जांच सकता हूं, आपका आवेदन वास्तव में example.com कहलाता है, आपने कैप तैनाती की है: सेटअप और कैप तैनाती: अपनी स्थानीय मशीन से जांचें? example.com सिर्फ कुछ है जो आपने गोपनीयता के लिए रखा है, मैं इसे लेता हूं? – mark

+0

हे, हाँ, मैंने गोपनीयता के लिए अपने example.com के साथ अपने असली डोमेन को बदल दिया। कोड मेरे सर्वर पर बस ठीक से तैनात हो जाता है, यह सिर्फ कैपिस्ट्रानो मेरी स्थानीय मशीन पर माइग्रेशन चलाने की कोशिश करता है, न कि सर्वर पर :) – Pandafox

41

कोशिश अपने config/deploy.rb फ़ाइल में

after "deploy", "deploy:migrate" 

जोड़ने के लिए। यह आपके प्रोजेक्ट की सफल तैनाती पर आपके सर्वर पर माइग्रेशन चलाएगा।

+0

मेरी deploy.rb में मैं bundle_install कार्य है, इसलिए मैं के बाद उपयोग 'हूँ: bundle_install," तैनात: विस्थापित "' –

+1

मेरे लिए काम किया सुनिश्चित करें कि आपकी प्रतिबद्धता को प्रभावित करने के लिए आपकी प्रतिबद्धता की सही शाखा में आपकी प्रतिबद्धता को धक्का दिया गया है। – scarver2

+1

@ denis.peplin कैपिस्ट्रानो आपके लिए बंडल नहीं करता है? मैंने एसएसएच के माध्यम से एक मणि अनइंस्टॉल किया और यह स्वचालित रूप से पुनः स्थापित हो गया। – Besi

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