كيفية إعداد بيئة لينكس المحلية مع متشرد

نُشرت في الأصل على DigitalShore.io في 12 مايو 2016

كمطورين ومهندسين ، فإننا نهدف غالبًا إلى الحد الأدنى والوحدة. هذا ينطبق على نفس الرمز الذي نكتبه ونستخدمه لإنشاء عملنا. ومع ذلك ، يمكن في كثير من الأحيان التغاضي عن التبسيط والوحدات النمطية عندما يتعلق الأمر بآلات التطوير المحلية الخاصة بنا. بمرور الوقت ، يمكن أن تنمو جميع البرامج والاعتمادات والأدوات المختلفة اللازمة لإنجاز مهمتنا بسرعة في الحجم والدوامة إلى حالة سيئة ؛ يمكن أن تصبح الإصدارات المتضاربة من نفس الأدوات أو البرامج وتحديثات نظام التشغيل التي لا تنتهي مهمة روتينية حقيقية للتحايل عليها عندما يحين الوقت لإكمال عملنا - بما يتعارض مع المبدأين الأساسيين اللذين يجب أن نسعى جاهدين من أجلهما في جميع الأوقات.

في هذا المنشور ، أقدم مقدمة من أعلى إلى أسفل في عالم الأجهزة الافتراضية وكيف يمكنها تحسين سير العمل في مجال التطوير إلى حد كبير مع تخفيف معظم المخاوف المذكورة أعلاه. من خلال استخدام الأجهزة الافتراضية ، ستفتح طرقًا لاستكشاف التقنيات والتقنيات الجديدة دون أي مخاطر تذكر على جهاز التطوير الخاص بك - كل ذلك أثناء الالتزام بمدرسة فكرية بسيطة ومحددة.

لماذا استخدام الأجهزة الافتراضية؟

هذا سؤال واجهته منذ عدة أشهر. إنه سؤال رائع حقًا. للبدء في صياغة إجابة ، قررت أنه يجب علي إجراء قائمة جرد لكل شيء مثبت على جهاز Mac:

  • Xcode (يصل وزنه إلى حوالي 10 جيجابايت بمجرد تثبيته)
  • أدوات سطر الأوامر Xcode
  • Git (إصدار OS X ؛ عادة ما يكون خلفه قديمًا)
  • روبي (إصدار OS X ؛ عادة ما يكون خلفه قديم)
  • عدة روبي الجواهر
  • Apache (إصدار OS X ، خلف ، قديم ، وتكوين مختلف)
  • PHP (إصدار OS X ؛ عادةً ما يكون قديمًا و قديمًا)
  • نود.جي إس
  • NPM وعدة وحدات مثبتة على مستوى العالم
  • هيروكو Toolbelt
  • MongoDB وربما أي قاعدة بيانات أخرى قد أحتاج إليها

بنظرة سريعة ، يمكنك أن ترى كيف يمكن لما سبق ذكره أن ينمو بمرور الوقت ، خاصة مع إيقاع إصدار OS X السنوي من Apple. دعونا أيضًا لا ننسى أن OS X في حد ذاته هو توزيع مثير للاهتمام لـ Unix والأشياء ليست دائمًا كما تبدو أثناء الحفر تحت الغطاء. تتصرف البرامج واللغات والأدوات هنا بشكل مختلف بعض الشيء عن نظيراتها التقليدية في Linux ، مما يعرضك لخطر الخراب المتعمد عبر النظام بأكمله.

من المؤكد أنه يجب أن يكون هناك حل أفضل لجعل كل هذا أكثر قابلية للإدارة ونمطيًا وأكثر أمانًا.

البيرة ... ربما؟

لكن البيرة يمكن أن تساعد في المعضلة المذكورة أعلاه - قد يقول لك. وبالنسبة للجزء الاكبر ، هذا صحيح. ومع ذلك ، إذا كنت تبحث حقًا عن طريقة نمطية لا تتداخل مع جهازك المحلي ويتم وضع إطار رمل عليه إلى حد ما ، فسيكون الجهاز الافتراضي هو أفضل رهان لك. بالإضافة إلى ذلك ، سيكون الجهاز الظاهري أكثر ملاءمة لمحاكاة بيئة الإنتاج بشكل كامل أكثر من الجهاز المضيف الخاص بك.

الشروع في العمل مع VirtualBox

أبدأ رحلتي باستخدام VirtualBox ، وأعمل في طريقي عبر عملية يدوية إلى حد ما تتضمن تنزيل صورة قرص Ubuntu Server 14.04 LTS والتنقل عبر مطالبات تثبيت Ubuntu المشفرة.

بعد حوالي 10 دقائق من التنزيلات ومطالبات التثبيت ، أقوم بتشغيل نسخة من Ubuntu Linux على جهاز Mac.

الآن ، إذا أردت إنشاء VM آخر ، فكل ما سأحتاج إليه هو تكرار هذه العملية. كل. غير مرتبطة. زمن.

الانتظار ، هذه العملية تمتص تماما!

انتظر ثانية ، مهلة. هذه العملية تمتص حقا! بالتأكيد ، إنه نوع من الوحدات. نوع من أضيق الحدود. ولكن إذا كنت أرغب في إنشاء جهاز افتراضي آخر ، فسأضطر فقط إلى متابعة هذه العملية بأكملها مرة أخرى. ومره اخرى. ومره اخرى.

لدي اثنين من السيطرة مع ما سبق. أولاً ، إنها ليست جافة جدًا. وثانياً ، في هذا اليوم الحالي وعصر الإشباع الفوري ، من يريد في العالم الجلوس عبر شاشة تثبيت Linux خفية ، عبر جهاز افتراضي ، في كل مرة نريد فيها إنشاء بيئة Linux جديدة؟ أين هو الحل التلقائي السحري الذي يقوم بإعداد أكبر عدد ممكن من أجهزة Linux الافتراضية لي كما أريد؟

حسنًا ، تمامًا مثل المتشرد المتجهم ، حيث يأتي المتشرد مخيفًا.

أدخل طاغية

Vagrant هي أداة لبناء بيئات تطوير كاملة. بفضل تدفق العمل سهل الاستخدام والتركيز على التشغيل الآلي ، يعمل Vagrant على تقليل وقت إعداد بيئة التطوير ، ويزيد من تكافؤ التطوير / الإنتاج ، ويجعل "الأعمال على الجهاز الخاص بي" عذرًا من بقايا الماضي.

الفكرة الأساسية حول Vagrant هي إنشاء دليل على جهازك المحلي يعمل بمثابة "منزل" لملف Vagrantfile خاص (لا يحتوي هذا الملف المحدد على ملحق). إن Vagrantfile هي جميعها Ruby وتقبل عددًا من المعلمات للمساعدة في تكوين وتوفير Vagrantbox الخاص بك لبعض الإرضاء السريع والسريع الذي اعتدنا عليه جميعًا هنا في القرن الحادي والعشرين.

تجدر الإشارة إلى أن Vagrant تتعامل مباشرة مع VirtualBox ولكنها تعمل مع برامج المحاكاة الافتراضية الأخرى أيضًا. بالنسبة لي ، سألتزم أكثر من المحتمل بـ VirtualBox لأنه مجاني. ومجاني جيد عموما في كتابي.

البدء من جديد باستخدام VirtualBox و Vagrant

بعد أن أدركت تمامًا كيف يمكن لنهج VirtualBox فقط أن يكون يدويًا ومملًا ومستغرقًا للوقت فقط ، فقد شرعت في قضاء بعض الوقت في تعلم تفاصيل Vagrant وكيف يمكن أن يساعد بشكل كبير في إنشاء الجهاز الظاهري بشكل عام وتوفيره وإدارته. معالجة.

قررت أن أول طعنة في إنشاء جهاز ظاهري مُدار من Vagrant هو إنشاء جهاز يعكس بيئة الإنتاج الحالية لأحد مدوناتي.

في ما يلي العملية العامة التي اعتمدتها بعد تعلم الأساسيات والعمل من خلال بعض التجارب والخطأ. اتبع هذه الخطوات ، وقم بتحرير أي معلومات ضرورية خاصة باحتياجاتك الفردية ، ويجب أن تكون جاهزًا للعمل مع Vagrant في حوالي 10 دقائق أو أقل!

  1. تثبيت VirtualBox
  2. تثبيت متشرد
  3. إنشاء دليل محلي لمتشرد
  4. قم بإنشاء Vagrantfile في الدليل الذي تم إنشاؤه حديثًا
  5. تشغيل متشرد وتوفير الجهاز الظاهري

ملاحظة: يتم تحديد الخطوات أدناه كما لو أن ملف Vagrant العينة المتضمن في هذا المنشور يُستخدم بالكامل - مما يعني أنه سيتم الرجوع أيضًا إلى جميع مسارات الملفات والثوابت المشار إليها في هذا الملف من خلال التعليمات. يرجى استبدال حسب الحاجة.

1. تثبيت VirtualBox

للاستيلاء على أحدث إصدار من VirtualBox ، انتقل إلى صفحة التنزيل واختر الإصدار المناسب لنظام التشغيل الخاص بك. قم بتنزيل وتثبيت ، باتباع المطالبات كما تفعل أي برنامج آخر. بينما تركز مقالتي بشكل أساسي على تجاربي مع سير العمل هذا على OS X ، يجب أن تنطبق نفس المبادئ والمفاهيم على Windows. بمجرد التثبيت ، دعنا ننقل انتباهنا إلى Vagrant.

ملاحظة: حتى كتابة هذا التقرير ، تم تثبيت VirtualBox 5.0.20.

2. تثبيت متشرد

الآن بعد تثبيت VirtualBox ، دعنا نركز على تثبيت Vagrant على جهازك. مرة أخرى ، توجه إلى صفحة التنزيل الخاصة بهم وانتزاع الإصدار المناسب لنظام التشغيل الخاص بك. مثل الكثير أعلاه ، قم بتنزيل وتثبيت ، باتباع المطالبات كما تفعل مع أي برنامج آخر.

ملاحظة: حتى كتابة هذا التقرير ، تم تثبيت Vagrant 1.8.1.

3. إنشاء دليل محلي لمتشرد

تنقسم هذه الخطوة إلى التفضيل الشخصي فيما يتعلق بالمكان الذي تريد الاحتفاظ فيه بإدارة Vagrantfile وإدارته ، بالإضافة إلى تقديم بعض الخيارات الإبداعية لكيفية ومكان تريد مزامنة الملفات والمجلدات بين أجهزة المضيف والضيف.

شخصيا ، أجد أن حفظ الدلائل لكل مثيل Vagrant ضمن الدليل الرئيسي المحلي الخاص بي هو وسيلة سهلة للتذكر وتجربة إدارة سهلة.

على سبيل المثال ، لقد قمت بإنشاء دليل بعنوان "new-vm" في دليلي الرئيسي. هذه هي نفس القيمة الدقيقة لثابت VM_NAME الموجود في العينة Vagrantfile في الخطوة 4. ثم أضفت Vagrantfile الخاصة بهذا VM ضمن هذا الدليل للتوفير.

باختصار ، لقد قمت بتنفيذ الأوامر التالية في Terminal:

cd ~ / && mkdir new-vm
cd new-vm && touch Vagrantfile

يتغير الأمر الأول إلى الدليل الرئيسي الخاص بي ، ثم يقوم بإنشاء دليل "جديد - vm" داخل الصفحة الرئيسية. يتغير الأمر الثاني إلى الدليل الذي تم إنشاؤه حديثًا ثم يقوم بإنشاء Vagrantfile داخل هذا الدليل الجديد.

4. تحديث Vagrantfile الخاص بك

باتباع الإرشادات الواردة في الخطوة 3 ، يجب أن يكون لديك الآن دليل فريد و Vagrantfile لجهازك الظاهري داخل الدليل الرئيسي على جهاز Mac. على سبيل المثال ، لدي الآن:

~ / جديدة-VM / Vagrantfile

حان الوقت الآن لمراجعة نموذج Vagrantfile أدناه ، وإجراء التعديلات المناسبة لاحتياجاتك الخاصة.

عينة متشرد

تتمثل الخطوة التالية في إضافة بعض الإرشادات داخل Vagrantfile ليتم تنفيذها Vagrant أثناء عملية توفير الجهاز الظاهري. للمساعدة في تسريع هذه العملية ، وتعيين عدد قليل من العناصر الافتراضية النموذجية ، فيما يلي نموذج Vagrantfile سيُمكنك من إعداده مع بيئة تطوير Ubuntu Linux مع Node.js و Git. يعمل هذا الملف من خلال:

  1. تحديد عدة ثوابت حول نظام التشغيل Linux ، والدلائل ، والمستخدمين ، والشبكات بين أجهزة المضيف / الضيوف
  2. توفير جهاز ظاهري من خلال VirtualBox ، مع وحدة المعالجة المركزية 1 ، 512 ميغابايت من الذاكرة ، و 40 جيجابايت من مساحة التخزين
  3. تثبيت أحدث إصدار من Git و Node 6.x وأحدث npm وتحديث أوبونتو

عينة:

# الترميز: utf-8
# - * - الوضع: روبي - * -
# vi: set ft = ruby:
# صندوق / OS
VAGRANT_BOX = 'ubuntu / trusty64'
# اسم لا تنسى ل
VM_NAME = 'new-vm'
# VM User - "متشرد" بشكل افتراضي
VM_USER = "متشرد"
# اسم المستخدم على جهاز Mac الخاص بك
MAC_USER = 'جون'
# مجلد المضيف للمزامنة
HOST_PATH = '/ Users /' + MAC_USER + '/' + VM_NAME
# مكان المزامنة على Guest - "متشرد" هو اسم المستخدم الافتراضي
GUEST_PATH = '/ home /' + VM_USER + '/' + VM_NAME
# # منفذ VM - uncomment هذا لاستخدام NAT بدلا من DHCP
# VM_PORT = 8080
Vagrant.configure (2) القيام | config |
  # مربع طاغية من Hashicorp
  config.vm.box = VAGRANT_BOX
  
  # اسم الجهاز الفعلي
  config.vm.hostname = VM_NAME
  # تعيين اسم VM في Virtualbox
  config.vm.provider "virtualbox" القيام | v |
    v.name = VM_NAME
    v.memory = 2048
  النهاية
  #DHCP - قم بالتعليق على هذا إذا كنت تخطط لاستخدام NAT بدلاً من ذلك
  config.vm.network "private_network" ، اكتب: "dhcp"
  # # ميناء الشحن - uncomment هذا لاستخدام NAT بدلا من DHCP
  # config.vm.network "forwarded_port" ، ضيف: 80 ، مضيف: VM_PORT
  # مجلد المزامنة
  config.vm.synced_folder HOST_PATH ، GUEST_PATH
  # تعطيل مجلد Vagrant الافتراضي ، استخدم مسارًا فريدًا لكل مشروع
  config.vm.synced_folder '.'، '/ home /' + VM_USER + ''، معطل: true
  # تثبيت Git ، Node.js 6.x.x ، أحدث npm
  config.vm.provision "shell" ، مضمّن: << - SHELL
    apt-get update
    apt-get install -y git
    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    apt-get install -y nodejs
    apt-get install -y build-basic
    تثبيت npm -g npm
    apt-get update
    apt-get الترقية -y
    apt-get autoremove -y
  الصدف
النهاية

الآن بعد أن قمت بمراجعة هذه العينة Vagrantfile ، هناك طريقان يمكنك اختيار المتابعة:

ألف غرامة لحن العينة أعلاه لاحتياجاتك

قم بإجراء أي تعديلات مناسبة قد تحتاجها (مثل تحرير مسارات الملفات ، واسم المستخدم ، واسم VM ، إلخ) ولصق المحتويات في Vagrantfile المحلي. بمجرد الانتهاء ، تابع إلى الخطوة 5.

استخدم الافتراضي Vagrantfile بدلاً من ذلك

إذا لم تعجبك العينة أعلاه وتريد اختيار Vagrantfile الافتراضي المقدم من Vagrant ، يمكنك ببساطة إزالة الملف الذي أنشأناه في الخطوة 3 وإنشاء ملف جديد يحتوي على الحد الأدنى العاري لتوفير جهاز ظاهري مع Vagrant:

مؤتمر نزع السلاح ~ / جديد - VM
rm-r Vagrantfile
الحرف الأول المتشرد

5. "متشرد" وتوفير الجهاز الظاهري الخاص بك

مع Vagrantfile الخاص بك في مكان ، حان الوقت لتوفير جهازك الظاهري!

افتح المحطة الطرفية وأدخل الأوامر التالية:

مؤتمر نزع السلاح ~ / جديد - VM
متشرد يصل

أثناء هذه العملية ، ستقوم Vagrant بتنزيل ubuntu / trusty64 مباشرةً من Atlas Hashicorp ومن ثم توفير الجهاز الظاهري كما هو محدد في Vagrantfile الخاص بك. بناءً على اتصالك بالإنترنت وسرعة الكمبيوتر ، يجب أن تستغرق العملية بأكملها حوالي 3 إلى 5 دقائق حتى تكتمل. بمجرد توفير الجهاز الظاهري ، يمكنك تسجيل الدخول إلى جهازك الظاهري باستخدام الأمر التالي:

ssh المتشرد

سيهتم هذا الأمر بتوصيلك مباشرةً بـ VM عبر SSH. إنه يعالج اسم المستخدم وكلمة المرور - والتي ، بشكل افتراضي ، كلاهما متشرد / متشرد.

ما ورد أعلاه ، "متشرد أعلى" و "متشرد ssh" سيكون على الأرجح الأمرين الواقعيين اللذين ستستخدمهما في تهيئة جهاز VM والوصول إليه. فيما يلي بعض الأوامر المفيدة التي ستكون مفيدة:

تشغيل الجهاز الظاهري وإيقاف تشغيله

في بعض الأحيان نحتاج إلى تشغيل أو إيقاف تشغيل أو إيقاف أو تدمير الأجهزة الافتراضية المدارة من Vagrant ، خاصة بعد إعادة التشغيل أو اختبار الميزات الجديدة ، إلخ.

لتشغيل جهاز VM ، انتقل إلى الدليل باستخدام Vagrantfile:

متشرد يصل

لإيقاف جهاز VM مؤقتًا ، انتقل إلى الدليل باستخدام Vagrantfile:

تعليق متشرد

لإيقاف تشغيل VM ، انتقل إلى الدليل باستخدام Vagrantfile:

توقف متشرد

لتدمير جهاز VM ، انتقل إلى الدليل باستخدام Vagrantfile الخاص بك:

تدمير متشرد

هذه مجرد أمثلة قليلة من الأوامر الأساسية العاجلة التي ترغب في تعلمها أثناء استخدام Vagrant. للحصول على دليل أكثر تعمقًا ، تحقق من مستندات Vagrant.

الخطوات التالية

لقد فعلتها! الآن بعد أن أصبحت قادرًا على إنشاء VMs دون جهد باستخدام Vagrant ويمكنك بسهولة SSH مباشرة في جهازك الافتراضي الخاص بك الذي يعمل على Ubuntu 14.04 ، أصبحت السماء هي الحد الأقصى! تابع واستخدام VM مثلما تفعل مع أي جهاز Linux آخر من خلال مزود مثل Digital Ocean أو غيره من الجهات التي تقدم خدمات VPS.

والأفضل من ذلك كله ، يمكنك الآن إنشاء أكبر عدد ممكن من أجهزة VM مثل نظامك الذي يمكن تشغيله - فتح بوابات الفيضان للنمو والاستكشاف من خلال نهج الحد الأدنى المعياري المعتمد حديثًا!

الحفاظ على الترميز!

استمتع بما قرأته؟

تأكد من إعجابك ومشاركته أدناه ، أو حتى اشتر لي قهوة ️!

جون فوديارو هو متعصب جافا سكريبت يقع في ولاية نيو جيرسي.