2009-05-08 28 views
72

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

सेटअप मेरी पर्यावरण के लिए उदाहरण के लिए, पहले मैं ग्रहण, तो SVN, अपाचे, बिलाव, MySQL, PHP स्थापित करने के लिए किया था। इसके बाद मैंने डीबी को पॉप्युलेट किया और मुझे विभिन्न विन्यास फाइलों आदि में मामूली बदलाव करना पड़ा ... क्या इस श्रम को एक-क्लिक में कम करने का कोई तरीका है?

उत्तर

62

वहाँ कई विकल्प हैं, और कभी कभी इन दोनों को मिलाकर उपयोगी है विभिन्न विकल्प:

  1. स्वचालित स्थापना स्थापना और एक कार्य केंद्र के विभिन्न सेवाओं, उपकरण और config फाइल के विन्यास को स्वचालित के लिए उपकरण:

    • Puppet एक सीखने की अवस्था है, लेकिन शक्तिशाली है। आप मशीनों (विकास बॉक्स, वेब सर्वर इत्यादि) की कक्षाओं को परिभाषित करते हैं और फिर यह उचित स्थिति में बॉक्स को स्थापित करने, कॉन्फ़िगर करने और रखने के लिए आवश्यक है। आपने एक-क्लिक के लिए कहा है, लेकिन डिफ़ॉल्ट रूप से कठपुतली शून्य-क्लिक है, क्योंकि यह सुनिश्चित करने के लिए कि यह अभी भी वांछित के रूप में कॉन्फ़िगर किया गया है, यह आपकी मशीन को समय-समय पर जांचता है। यह पता लगाएगा कि फ़ाइल या मोड कब बदला गया है, और समस्या को ठीक करें। मैं वर्तमान में इसका उपयोग कुछ हद तक रेडहाट लिनक्स बक्से को बनाए रखने के लिए करता हूं, हालांकि यह हजारों को संभालने में सक्षम है। (2009-05-08 के रूप में विंडोज का समर्थन नहीं करता है)।
    • Cfengine एक और है। मैंने इसे रेडहैट लिनक्स का उपयोग करके 70 इंजीनियरों के साथ एक दुकान में सफलतापूर्वक इस्तेमाल किया है। इसकी सीमाएं कठपुतली के कारण का हिस्सा थीं।
    • SmartFrog होस्ट कॉन्फ़िगर करने के लिए एक और टूल है। यह विंडोज का समर्थन करता है।
    • शैल स्क्रिप्ट्स। RightScale में शैल स्क्रिप्ट का उपयोग करके अमेज़ॅन ईसी 2 छवि को कॉन्फ़िगर करने के उदाहरण हैं।
    • पैकेज इंस्टॉल करें। यूनिक्स बॉक्स पर इसे पूरी तरह से पैकेज के साथ करना संभव है, और विंडोज़ एमएसआई एक विकल्प हो सकता है। उदाहरण के लिए, RubyWorks आपको रेल स्टैक पर एक पूर्ण रूबी प्रदान करता है, सब एक पैकेज स्थापित करके जो बदले में निर्भरता के माध्यम से अन्य पैकेज स्थापित करता है।
  2. डिस्क छवियाँ तो निश्चित रूप से वहाँ एक के लिए कॉन्फ़िगर मेजबान की एक छवि ऐसी है कि वह एक और की मेजबानी के लिए बहाल किया जा सकता संग्रहीत करने के लिए भी disk imaging tools हैं। वर्चुअलाइजेशन के साथ, यह टेस्ट बॉक्स के लिए विशेष रूप से अच्छा है, क्योंकि चीजों को एक साफ स्लेट में बहाल करना आसान है। चीजों को लगातार अद्यतित रखना अभी भी एक मुद्दा है - क्या यह कॉन्फ़िगरेशन फ़ाइल परिवर्तन को प्रसारित करने के लिए नई छवियों को बनाने लायक है?

  3. Virtualization उसे एक्सईएन, VirtualPC, या VMWare छवि के उदाहरण बनाने प्रतियां नए मेजबान बनाने के लिए, एक और विकल्प है। यह विशेष रूप से परीक्षण बक्से के साथ उपयोगी होता है, भले ही कोई परीक्षण गड़बड़ कर देता है, आप आसानी से एक स्वच्छ, ज्ञात राज्य में बहाल कर सकते हैं। डिस्क इमेजिंग टूल्स के साथ, होस्ट को अद्यतित रखने के लिए एक स्वचालित इंस्टॉल/कॉन्फ़िगरेशन टूल का उपयोग करने के बजाय अधिक मैन्युअल चरणों और सतर्कता की आवश्यकता होती है।

  4. स्रोत कोड नियंत्रण बार जब आप आवश्यक उपकरण स्थापित/कॉन्फ़िगर किया गया है, तो कर रही है बनाता है बाहर की जाँच क्या एक स्रोत कोड रिपोजिटरी से आवश्यक है और यह निर्माण की बात होनी चाहिए। एक barebones ओएस के साथ

    • प्रारंभ एक VMWare अतिथि
    • पर स्थापित कठपुतली को स्थापित करने और प्राप्त करने के लिए खोल स्क्रिप्ट चलाएँ:

वर्तमान में मैं ऊपर का एक संयोजन प्रक्रिया को स्वचालित करने के रूप में इस का उपयोग स्रोत कोड नियंत्रण से इसकी कॉन्फ़िगरेशन

  • टूल/घटक/कॉन्फ़िगरेशन
  • हमारे वेब एप्लिकेशन को बनाने और तैनात करने के लिए स्रोत कोड नियंत्रण से फ़ाइलों को देखें
  • +0

    हमारे कार्यालय में खिड़कियां, लिनक्स और मैक ओएस हैं। इसलिए मैं वर्चुअलाइजेशन विकल्प चुनूंगा। – nimcap

    +0

    हम वर्चुअलाइजेशन के साथ उड़ते हैं और यह एक अच्छा समाधान है। जब मैंने इसे स्थापित करने के लिए 3-4 दिनों की शुरुआत की, तो अब वीवीसी छवि की प्रतिलिपि बनाने के लिए नए देवताओं को स्थापित किया गया। – Burt

    +3

    क्या आपने http://agile.dzone.com/articles/4-methods-automate- विकास लिखा था क्योंकि यह बहुत समान लगता है? –

    0

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

    1

    वहाँ हमेशा आभासी मशीनों का उपयोग करने का विकल्प नहीं है (उदाहरण के लिए VMWare Player देखें)। एक पर्यावरण बनाएं और न्यूनतम कॉन्फ़िगरेशन के साथ प्रत्येक नए कर्मचारी के लिए इसे कॉपी करें।

    7

    मुझे विकास वातावरण को वर्चुअलाइज करने के लिए वर्चुअल पीसी या वीएमवेयर का उपयोग करना पसंद है। यह एक मानक "देव पर्यावरण" प्रदान करता है जिसे डेवलपर्स के बीच साझा किया जा सकता है। आपको सॉफ़्टवेयर के बारे में चिंता करने की ज़रूरत नहीं है कि उपयोगकर्ता अपने सिस्टम में जोड़ सकता है जो आपके विकास पर्यावरण से संघर्ष कर सकता है। यह मुझे दो परियोजनाओं में काम करने का एक तरीका भी प्रदान करता है जहां विकास वातावरण दोनों एक प्रणाली पर नहीं हो सकते हैं (कोर प्रौद्योगिकी के दो अलग-अलग संस्करणों का उपयोग करके)।

    +0

    क्या वर्चुअलपीसी/वीएमवेयर पर्यावरण में चल रहा है प्रदर्शन को प्रभावित करता है? क्या आप विजुअल स्टूडियो 2008 का उपयोग करते हैं? –

    +0

    मुझे कम से कम एक बड़ी सॉफ्टवेयर देव दुकान पता है जो उनके सभी विकास विशेष रूप से वीएम (वीएमवेयर) में करते हैं। चीजें अब बेहतर हैं कि CPUs में हार्डवेयर वर्चुअलाइजेशन समर्थन है ... – tomfanning

    +0

    आपको कंप्यूटर नाम के संघर्षों से सावधान रहना होगा। विंडोज़ बहुत खुश नहीं है जब एक ही नाम वाली दो मशीनें एक ही नेटवर्क पर दिखाई देती हैं। मैं भी एक वीएम में अपने देव पर्यावरण नहीं रखना पसंद करते हैं। ओवरहेड वास्तव में मेरे प्रदर्शन को खींच सकता है। – Kieveli

    13

    एक महत्वपूर्ण बिंदु स्रोत नियंत्रण ऐसी है कि आप तुरंत, निर्माण की तैनाती और चेकआउट के बाद चला सकते हैं में अपनी परियोजनाओं को स्थापित करने के लिए है।

    इसका मतलब है कि आप भी इस तरह के आईडीई परियोजना फ़ाइलों के रूप में उपकरण, के लिए इस तरह के Makefiles, चींटी buildfiles आदि के रूप में सहायक बुनियादी ढांचे, और सेटिंग चेक इन करना चाहिए।

    यह व्यक्तिगत परियोजनाओं के लिए सेटअप परेशानी का ख्याल रखना चाहिए।

    मूल मशीन सेटअप के लिए, आप एक मानक छवि का उपयोग कर सकते हैं। एक और विकल्प इंस्टॉलेशन को स्वचालित करने के लिए अपने प्लेटफ़ॉर्म के टूल का उपयोग करना है। लिनक्स के तहत, आप एक मेटा-पैकेज बना सकते हैं जो आपको आवश्यक सभी संकुलों पर निर्भर करता है। विंडोज के तहत, एमएसआई या इसी तरह की एक समान चीज संभव होनी चाहिए।

    संपादित करें:

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

    हालांकि

    , यह भी एक अधिक जटिल दृष्टिकोण, इसलिए यदि आप यह काम करने के लिए नहीं मिल सकता है, मैं सामान में जाँच विश्वास आईडीई फ़ाइलों को सीधे स्वीकार्य है की तरह।

    3

    अपने विकास और उत्पादन दोनों वातावरण को कॉन्फ़िगर करने के लिए puppet का उपयोग करें। एक शीर्ष-स्तरीय स्वचालन प्रणाली का उपयोग करना आपके ऑप्स को स्केल करने का एकमात्र तरीका है।

    0

    यदि आप लिनक्स स्वाद का उपयोग कर रहे हैं, तो आपको शायद पैकेज प्रबंधन प्रणाली मिल गई है: लगता है। फेडोरा/रेडहाट के लिए आरपीएम, या उबंटू/डेबियन के लिए .deb। आपके द्वारा वर्णित कई चीजों में पहले से ही संकुल उपलब्ध हैं: svn, ग्रहण, आदि। आप कंपनी के विशिष्ट सॉफ़्टवेयर के लिए अपने स्वयं के पैकेज रोल कर सकते हैं, एक भंडार बना सकते हैं (शायद केवल स्थानीय नेटवर्क पर उपलब्ध) और फिर आपका सेटअप एकल में घटाया जा सकता है बैश स्क्रिप्ट जो कंपनी रेपो जोड़ना होगा /etc/apt/sources.list को (Debian/Ubuntu) और फिर एक आदेश की तरह कहते हैं,

    
    /home/newhire$ apt-get update && apt-get install some complete package list 
    

    आप buildbot इस्तेमाल कर सकते हैं तो नियमित रूप से स्वचालित करने के लिए कंपनी संकुल कि बदलाव के लिए बनाता है अक्सर।

  • डिस्क इमेजिंग
  • वर्चुअलाइजेशन
  • स्रोत कोड नियंत्रण
  • पर विवरण

    • स्वचालित स्थापना:

    1

    पहले स्थान पर हमारे पास एससीएम (स्पष्ट रूप से एसवीएन) में सब कुछ था (और मेरा मतलब है)। जब एक नया डेवलपर क्लीयरकेस | एसवीएन स्थापित कर सकता है और भंडार को चूस लेता है। यह उस मामले को भी संभालता है जब आपको किसी विशेष lib/टूल को अपडेट करने की आवश्यकता होती है क्योंकि आप देव टीमों को अपने पर्यावरण को अपडेट कर सकते हैं।

    हमने इस के लिए दो रेपो का उपयोग किया ताकि कोड और टूल/कॉन्फ़िगर अलग-अलग स्थानों पर रहे।

    1

    मैं अत्यधिक देव संरचना से ब्लूप्रिंट की अनुशंसा करता हूं। यह ओपन-सोर्स है और आपका उपयोग केस वास्तव में सटीक कारण है जिसे हमने मूल रूप से सॉफ़्टवेयर लिखा था। हमारे लक्ष्यों में कुछ हद तक बदलाव आया है, लेकिन यह अभी भी आप जो वर्णन कर रहे हैं उसके लिए यह एक आदर्श उपकरण है। संक्षेप में, आप पुन: प्रयोज्य सर्वर कॉन्फ़िगरेशन बना सकते हैं - मृत सरल विन्यास प्रबंधन। आशा है कि ये आपकी मदद करेगा!

    https://github.com/devstructure/blueprint (खाका @ Github)

    +1

    क्या यह विकास पर्यावरण या सर्वर के बारे में है? – nimcap

    1

    मैं अपने आप को इस के बारे में सोच रहा हूँ। कुछ अन्य तकनीकें हैं जिन्हें आप मिश्रण में फेंक सकते हैं। यहां मैं वर्तमान में स्थापित कर रहा हूं:

    • पीएक्सई आधारित पूर्व-बीजित स्थापना छवियां (डेबियन निचोड़)। आप एक नंगे धातु मशीन (या नया आभासी उपकरण) शुरू कर सकते हैं और PXE बूट मेनू से छवि का चयन कर सकते हैं। भौतिक मशीनों (वर्चुअल उपकरणों के अतिरिक्त) पर अपने पर्यावरण को स्थापित करने में सक्षम होने का इसका मुख्य लाभ है।
    • किसी ने पहले से ही कठपुतली का उल्लेख किया है। मैं CFEngine का उपयोग करता हूं लेकिन यह एक समान सौदा है। अनिवार्य रूप से आपकी कॉन्फ़िगरेशन नीति फ़ाइलों में दस्तावेज़ीकृत और केंद्रीकृत है जो क्लाइंट पर एजेंट द्वारा निरंतर लागू होती है।
    • यदि आप कठोर वातावरण नहीं चाहते हैं (यानी डेवलपर्स टूल-सेट का संयोजन चुन सकते हैं) तो आप अपने स्वयं के डेब पैकेज रोल कर सकते हैं ताकि नए देव sudo apt-get install acmecorp-eclipse-env या sudo apt-get install acmecorp-intellij-env टाइप कर सकें।
    • थोड़ा ऑफ-विषय, लेकिन यदि आप डेबियन आधारित वातावरण (यानी उबंटू) चलाते हैं, तो apt-cacher (पैकेज प्रॉक्सी) स्थापित करने पर विचार करें।बैंडविड्थ को सहेजने के अलावा, यह आपके इंस्टॉलेशन को बहुत तेज़ कर देगा (क्योंकि पैकेज आपके स्थानीय नेटवर्क पर कैश किए जाते हैं)।
    17

    मैंने इस प्रश्न पर ठोकर खाई और बहुत आश्चर्यचकित किया कि किसी ने अभी तक Vagrant का उल्लेख नहीं किया है।

    Vagrant

    के रूप में पीट TerMaat और दूसरों का उल्लेख किया है, वर्चुअलाइजेशन का प्रबंधन और विकास के वातावरण को स्वचालित करने के लिए एक शानदार तरीका है। Vagrant मूल रूप से दर्द को इन आभासी बक्से को स्थापित करने से दूर ले जाता है।

    मिनटों के भीतर आप अपने पसंदीदा लिनक्स डिस्ट्रो और चलने की पूरी ताजा प्रतिलिपि बना सकते हैं, और provisioned ठीक उसी तरह आपका उत्पादन सर्वर है।

    PHP, MySQL, आदि प्राप्त करने के लिए ओएसएक्स या विंडोज के साथ और अधिक लड़ाई नहीं। सभी सॉफ्टवेयर वर्चुअल मशीन के अंदर रहता है और चलता है। आप vagrant ssh के साथ भी एसएसएच कर सकते हैं। यदि आप कोई गलती करते हैं या कुछ तोड़ते हैं, तो vagrant destroy इसे और ताज़ा शुरू करने के लिए vagrant up

    वग्रेंट स्वचालित रूप से synced folder आपके स्थानीय फ़ाइल सिस्टम में बनाता है, जिसका अर्थ है कि आपको वर्चुअल मशीन (यानी वीम का उपयोग करके) विकसित करने की आवश्यकता नहीं है। जो कुछ भी आपका पसंदीदा संपादक है उसका प्रयोग करें।

    अब मैं लगभग हर परियोजना के लिए एक नया "वाग्रेंट बॉक्स" बनाता हूं। मेरी सभी सेटिंग्स प्रोजेक्ट रिपॉजिटरी में सहेजी गई हैं, इसलिए किसी अन्य टीम के सदस्य को लाने में आसान है। उन्हें बस रेपो खींचना है, और vagrant up चलाएं, और वे सचमुच जाने के लिए तैयार हैं।

    यह विभिन्न सॉफ़्टवेयर आवश्यकताओं वाली परियोजनाओं को संभालने में भी आसान बनाता है। हो सकता है कि आपके पास कुछ प्रोजेक्ट हैं जो PHP 5.3 पर भरोसा करते हैं, लेकिन कुछ नए जो PHP 5.4 चलाते हैं। बस उस प्रोजेक्ट के लिए इच्छित संस्करण स्थापित करें।

    Check it out!

    0

    http://nsnihalsahu.github.io/devscript पर DevScript बाहर की कोशिश करो। इसकी एक कमांड, devscript lamp या devscript laravel या devscript django जैसी कोई कमांड। कुछ मिनटों में, आपके इंटरनेट सह

    0

    आप Oracle के जावा साइट से जावा JDK के नवीनतम संस्करण को डाउनलोड कर सकते हैं - जावा SE डाउनलोड। आपको डाउनलोड की गई फ़ाइलों में जेडीके इंस्टॉल करने के निर्देश मिलेगा, सेटअप को स्थापित और कॉन्फ़िगर करने के लिए दिए गए निर्देशों का पालन करें। आखिरकार जावा और जावैक वाली निर्देशिका को संदर्भित करने के लिए पाथ और जावा-एचओएमई पर्यावरण चर सेट करें, आमतौर पर java_install_dir/bin और java_install_dir

    यदि आप विंडोज चला रहे हैं और C:\jdk1.8.0_102 में जेडीके स्थापित किया है, तो आपको निम्न C:\autoexec.bat फ़ाइल में निम्न पंक्ति डालना होगा।

    set PATH=C:\jdk1.8.0_102\bin;%PATH% 
    set JAVA_HOME=C:\jdk1.8.0_102 
    

    या फिर, आप अपने कंप्यूटर का चयन करें, गुण, फिर उन्नत, तो वातावरण चरों पर राइट क्लिक कर सकते हैं। फिर, आप पैथ मान अपडेट करेंगे और ओके बटन दबाएंगे।

    लिनक्स पर, यदि एसडीके /usr/local/jdk1.8.0_102 में स्थापित है और आप सी खोल का उपयोग करते हैं, तो आप निम्न कोड को अपनी .cshrc फ़ाइल में डाल देंगे।

    setenv PATH /usr/local/jdk1.8.0_102/bin:$PATH 
    setenv JAVA_HOME /usr/local/jdk1.8.0_102 
    

    वैकल्पिक रूप से, यदि आप एंड्रॉइड स्टूडियो का उपयोग करते हैं, तो यह स्वचालित रूप से पता चलेगा कि आपने अपना जावा इंस्टॉल किया है। एंड्रॉयड IDEs

    इतने सारे परिष्कृत टेक्नोलॉजीज रहे हैं एंड्रॉयड अनुप्रयोगों को विकसित करने के लिए उपलब्ध हैं, परिचित प्रौद्योगिकियों, जो मुख्य रूप से उपकरणों का उपयोग कर रहे हैं के रूप में इस प्रकार है

    Android Studio 
    
    Eclipse IDE(Deprecated) 
    

    Elysium Academy एंड्रॉयड, माइक्रोसॉफ्ट, REDHAT, CEH को प्रशिक्षण देना, और बहुत अच्छे अनुभव और कौशल वाले प्रमाणित पेशेवरों के साथ वीएमवेयर