2011-04-05 11 views
19

मैं इस बारे में उलझन में हूं कि, सर्वर पर, आपको नियमित उपयोगकर्ता के रूप में RVM इंस्टॉल करना है या सिस्टम-व्यापी स्थापना करना है, और यदि बाद वाला, आपको bundle install जैसी चीज़ों का उपयोग किए बिना कैसे करना है sudoक्या आरवीएम का सिस्टम-वाइड इंस्टॉलेशन एक बुरा विचार है?

क्या आपको ऐसा करने के लिए दिशानिर्देशों का कोई निश्चित सेट है जहां तक ​​आरवीएम रेल के चलते सर्वर पर चिंतित है। यात्री और Nginx? इस प्रकार के पर्यावरण में, सभी रूबी प्रक्रियाएं उसी उपयोगकर्ता के तहत नहीं चलती हैं, इसलिए मुझे लगता है कि जहां आरवीएम और बंडलर के संबंध में चीजें अस्पष्ट होती हैं।

सर्वर पर सभी एक साथ आरवीएम से बचने और बस रूबी स्थापित करने और पुराने तरीके से रत्न स्थापित करने के बारे में कैसे? क्या यह बेहतर है अगर आप इससे दूर हो सकते हैं?

+0

विशेषज्ञ राय मूल्यवान हैं –

उत्तर

6

आप नियमित उपयोगकर्ता के रूप में आरवीएम स्थापित कर सकते हैं, हालांकि मुझे बिंदु नहीं दिख रहा है। बंडलर प्रति-अनुप्रयोग है और sudo विशेषाधिकारों की जरूरत नहीं है, क्योंकि यह एक बंडल निर्देशिका कि बंडल उपयोगकर्ता स्थापित उदाहरण के लिए, के साथ उपयोग कर सकते हैं में अपने जवाहरात स्थापित कर सकते हैं:

bundle install --deployment 

जो डिफ़ॉल्ट रूप से vendor/bundle में डाल देगा।

मुझे कई रूबी संस्करणों के प्रबंधन के लिए विकास उपकरण के रूप में आरवीएम के बारे में लगता है। तैनाती मशीनों पर मैं या तो सिस्टम रूबी का उपयोग करता हूं या स्रोत से स्थापित करता हूं।

+0

"तैनाती मशीनों पर मैं या तो सिस्टम रूबी का उपयोग करता हूं या स्रोत से स्थापित करता हूं।" माना। मैं भी ऐसा ही करता हूं। –

+0

तो शायद यह बेहतर है कि आप आरवीएम का उपयोग न करें अगर आप इसे सर्वर से बचा सकते हैं। – dan

3

आरवीएम सुपर उपयोगकर्ता के रूप में स्थापित किया जा सकता है। हालांकि इसे होने की आवश्यकता नहीं है, ऐसा करने के लिए बहुत सारे फायदे हैं (विशेष रूप से बहु-उपयोगकर्ता प्रणाली पर)। रूबी (और संबंधित रूबी रत्न) के साथ आने वाले किसी भी आदेश में उनकी अनुमतियों को उचित रूप से चलाने के लिए सही ढंग से सेट किया जाना चाहिए। बंडल को उपयोग करने के लिए सुपर उपयोगकर्ता पहुंच की आवश्यकता नहीं है। यह एक विशेष उपयोगकर्ता के तहत चलाया जा सकता है, जैसे कि मणि इंस्टॉल एक पूर्ण सूडो के साथ किए गए उपयोगकर्ता या सिस्टम के लिए स्थानीय हो सकता है।

आरवीएम केवल रूबी के अपने विशेष इंस्टॉलेशन का प्रबंधन करता है, ताकि आप रुबी के कई स्तरों पर विकसित हो सकें- आरएमआई 1.8 और 1.9 से जेआरबी 1.6, एट कैटेरा। आपके पास अलग-अलग परियोजनाएं हो सकती हैं जिन पर आप काम कर रहे हैं, और इसलिए प्रति परियोजना की अलग-अलग ज़रूरतों की आवश्यकता है।

जहां तक ​​सर्वर पर ही जाता है (माना जाता है कि यह किसी बाहरी प्रकार का सामग्री है जिस पर कुछ प्रकार की सामग्री है), यह वास्तव में सिस्टम प्रशासकों पर निर्भर करता है। उपयोग मामला कुछ हद तक बदलता है। यदि आपको सर्वर पर रूबी 1.9 की आवश्यकता है, तो वास्तव में आरवीएम की कोई आवश्यकता नहीं है। क्योंकि रूबी के कई संस्करणों को प्रबंधित करने की आवश्यकता नहीं है। इसलिए जब आप यह तय करते हैं कि सर्वर पर सिस्टम को व्यापक रूप से जाना है या नहीं, तो मैं इसे ध्यान में रखूंगा।

आशा है कि मदद करता है!

+3

वास्तव में अधिकांश उद्देश्यों के लिए रूट के रूप में स्थापित करने की अनुशंसा नहीं की जाती है। मैं विकास मशीनों के लिए रूट इंस्टॉल कभी नहीं करता हूं। यह एक उपयोगकर्ता प्रणाली के लिए स्वयं निहित '~/.rvm' होने वाला बहुत अच्छा है। –

+0

यह एक आवश्यकता से अधिक वरीयता है। यह अन्य उपयोगकर्ताओं के लिए सभी उपयोगकर्ताओं के लिए उपलब्ध कराने के लिए बेहद उपयोगी है। उदाहरण के लिए, यदि मैं अपने उत्पादन माहौल को किसी अन्य उपयोगकर्ता के साथ अधिक बारीकी से नकल करना चाहता हूं, तो मुझे अभी तक किसी अन्य उपयोगकर्ता के तहत आरवीएम को पुनर्स्थापित करने के दर्द से गुजरना पड़ेगा। इस पर निर्भर करता है कि आप कैसे काम करने के लिए उपयोग किया जाता है। –

+1

"आरवीएम सुपर उपयोगकर्ता के रूप में स्थापित करने के लिए है।" गलत। इसका प्रारंभिक लक्ष्य विकास के लिए एक उपयोगकर्ता सैंडबॉक्स था। इसने सिस्टम को व्यापक रूप से उपयोग करने की क्षमता विकसित की है, लेकिन इसकी प्राथमिक शक्ति अभी भी उपयोगकर्ता के सैंडबॉक्स के रूप में है। 1.5+ के साथ यह और बदल गया है; वेन की टिप्पणी के अनुसार दस्तावेज़ एक हफ्ते पहले संक्रमण में हैं। –

4

मैं उत्पादन वातावरण के लिए सिस्टम-व्यापी इंस्टॉल करने की अत्यधिक अनुशंसा करता हूं। उपयोगकर्ता-विशिष्ट RVMs चलाना बस एक बड़ी परेशानी की तरह लगता है। मैं उत्पादन में यात्री/Nginx का उपयोग करता हूं और प्रत्येक परियोजना के अपने उपयोगकर्ता हैं। मुझे बस इतना करना है कि उन्हें आरवीएम समूह में जोड़ें और मुझे जाना अच्छा लगेगा।

+0

कहीं भी एक गाइड मिला? मैंने उत्पादन के लिए सिस्टम-व्यापी इंस्टॉलेशन का उपयोग करने की कोशिश की और प्रत्येक प्रोजेक्ट के लिए अलग रूबी और रत्न शामिल थे। हालांकि, सही रूबी/रत्न का उपयोग करने के लिए Nginx/यात्री को कॉन्फ़िगर करना एक दर्द था। मैंने यह भी पाया कि डिफ़ॉल्ट रूबी/जेमसेट 'आरवीएम उपयोग रीई @ जेम्ससेट - डीफॉल्ट' को सेट करने जैसे आदेश पूरे सिस्टम को प्रभावित करते हैं, भले ही उपयोगकर्ता को लॉग इन किया गया हो। एक और सवाल: क्या आप प्रत्येक प्रोजेक्ट के लिए .rvmrc फ़ाइलों का भी उपयोग करते हैं? – John

+1

मैं हमेशा https://rvm.beginrescueend.com/integration/passenger/ –

+0

प्रतिक्रिया के लिए धन्यवाद, jcm के रूप में एक 'setup_load_paths.rb' बना देता हूं। क्या उस विधि को प्रत्येक परियोजना/उपयोगकर्ता के लिए पर्यावरण चर के रूप में स्थापित करने के लिए 'MY_RUBY_HOME' की आवश्यकता है? – John

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