نصب و راه اندازی Vagrant

نصب و راه اندازی Vagrant

معرفی

Vagrant یکی از داغترین موضوعات در وب است که به نظر می رسد هر توسعه دهنده ای باید از آن استفاده کند.

اگر شما در سیستم اصلی خود از یک وب سرور، دیتابیس و از چندین زبان اسکریپت نویسی استفاده می کنید و هنوز از مجازی ساز برای ایجاد یک محیط توسعه برای برنامه خود استفاده نمی کنید، این مقاله ممکن است دانش شما را افزایش دهد و شما را به یک توسعه دهنده ماهر تبدیل کند.

دلیل منطقی برای استفاده از Vagrant

تصور کنید که شما همراه با چند تن از دولوپرها در حال توسعه یک برنامه هستید. در حالت عادی می خواهید تیم شما محیط توسعه یکسانی برای توسعه برنامه داشته باشید. همچنین این را می دانیم که هر دولوپر با سیستم عامل دلخواه خود کار می کند. راه اندازی چنین محیط توسعه یکسانی برای همه کاری بسیار دشوار و خسته کننده می باشد. (برخی با Mac کار می کنند و برخی با Linux یا Windows). واگرانت تمام اینها را برای شمایی که می خواهید همه بر روی کدنویسی تمرکز کنند، مدیریت می کند. حال فرض کنید برنامه در حال توسعه شما به مرحله ای رسید که نیاز به یک برنامه خاص در سرور دارید. در حالت عادی تمام توسعه دهندگان می بایست خود اقدام به نصب آن برنامه خاص کنند. اما با Vagrant شما تنها کافیست یک به روز رسانی در فایل تنظیمات انجام دهید تا هر دولوپر دیگری تنها با بارگذاری مجدد بسته (Box) واگرانت، آن برنامه را بطور خودکار در سیستم خود داشته باشد. (مهم نیست که بر روی ویندوز، لینوکس یا مک کار می کنید، محیط توسعه همه یکسان خواهد بود) این برنامه (Vagrant) فوق العاده محبوب است! برای استفاده از Redis و Memcached، Imagemagick و ماژول GD PHP، curl، MySQL، PostgreSQL و حتی Node.js و MongoDB کاربرد دارد.

دلایل منطقی مختلفی وجود دارد که چرا در حال حاظر به این نوع ابزارهاسوئیچ نکرده اید:

  • نداشتن وقت کافی
  • بی اعتمادی نسبت به یک تکنولوژی جدید

بسیاری از ما روزانه با چندین فن آوری جدید روبرو می شویم که فورا به خاطر تصور اشتباه از اضافه بار بودن، به آن بی اعتنایی می کنیم و به راحتی از کنار آن رد می شویم، با اینکه این ابزارها ساخته می شوند تا به ما در توسعه وب کمک کنند نه اینکه باعث اضافه بار شوند.

آموزش Vagrant

امیدوارم این معرفی کوتاه از Vagrant به اندازه کافی قانع کننده باشد که باعث شود به این نوع از محیط های توسعه مهاجرات کنید. 🙂

در این مقاله یاد خواهیم گرفت که چطور برنامه های مورد نظری که همیشه از آن ها استفاده می کنیم را نصب و آنها را در کنار هم استفاده کنیم.

چرا از Vagrant استفاده کنیم؟

Vagrant با استفاده از معیارهای تکنولوژی جدید توانسته است که یک محیط توسعه قابل حمل، ثابت با انجام پیکربندی های آسان را فراهم کند و با استفاده از یک کنترل کننده واحد توانسته است حداکثر بهره وری و انعطاف پذیری را در تیم شما به وجود آورد.

تمام این سحر و جادوی ها به خاطر این است که Vagrant بر روی شانه‌ی غول ها ایستاده است. به این معنی است که Vagrant بر پایه برنامه های مجازی سازی مثل VirtualBox و VMware و غیره ساخته شده است.

ماشین مجازی virtual box

مزایای Vagrant

اگر شما یک توسعه دهنده هستید، واگرانت وابستگی ها (dependency) و تنظیمات خود را ایزوله می کند تا ابزارهایی که با آنها کار می کنید (ویرایشگر، مرورگر، اشکال زداهاو غیره) دچار مشکل نشوند. هرگاه شما یا شخصی یک فایل Vagrantfile ایجاد می کند، شما تنها کاری که باید انجام دهید آن است که این فایل را دایرکتوری پروژه خود ذخیره کنید و دستور vagrant up را اجرا کنید و آنگاه خواهید دید که همه چیز نصب، و تنظیمات برای کار شما صورت می گیرد. دیگر اعضای تیم نیز می توانند محیط توسعه خود را با استفاده از همان تنظیماتی که در Vagrantfile تعریف شده است نصب و راه اندازی کنند.

اگر با Node.js کار کرده باشید شاید این مفهوم آشنا به نظر برسد، فایل Vagranfile دقیقا همانند فایل هایی مثل package.json عمل می کند. تنها کاری که لازم است وابستگی های مورد نظر برنامه خود را نصب کنیم این است که دستور npm install را در خط فرمان خود اجرا کنیم.

بنابراین هرگاه با Linux، Mac OS X یا Windows کارمی کنید، تمام اعضای تیم کدها و تمام وابستگی ها و تنظیمات را در همان محیط توسعه اجرا می کنند. این کار باعث می شود دیگر هیچ اعضایی از تیم دچار مشکل و باگ نشود.

نصب و راه اندازی Vagrant

نصب و راه اندازی Vagrant بسیار ساده است. ابتدا برای شروع برنامه های VirtualBox و Vagrant و دیگر برنامه ها را از لینک های زیر دانلود و نصب کنید:

در این پست بدلیل رایگان بودن برنامه مجازی ساز VirtualBox فرض شده است که کاربر از آن استفاده می کند.

پس از نصب واگرانت، آدرس نصب Vagrant در path سیستم شما اضافه می شود. اگر اینطور نیست، سیستم را ریستارت کنید.

برای اینکه مطمئن شویم Vagrant به درستی نصب شده است، دستور زیر را در کنسول خود اجرا کنید تا نسخه برنامه نصب شده چاپ شود:

ایجاد و آماده سازی پروژه ها

تا اینجا برنامه ها را نصب کردیم، حال می توانیم اولین پروژه واگرانت خود را با ساخت یک پوشه پروژه آغاز کنیم.

هر پروژه، تنظیمات ماشین مجازی مجزایی دارد. تمام تنظیمات در فایلی به نام Vagrantfile در ریشه پروژه ذخیره می شود.

اولین گام برای پیکربندی هر پروژه واگرانت، ایجاد فایل Vagrantfile است. واگرانت شامل دستوری با نام vagrant init است که دایرکتوری خاصی را برای استفاده واگرانت مقدار دهی اولیه می کند. برای درک بهتر این منظور، لطفا دستورات ساده زیر را در کنسول خود وارد کنید:

همانطور که مشاهده می کنید ما در ابتدا یک پوشه با نام دلخواه ایجاد کردیم و در داخل آن دایرکتوری Vagrantfile را ایجاد کردیم.

vagrant init

می توانید این فایل را با ویرایشگر خود باز کرده تا مشاهده کنید چطور تنظیمات واگرانت با توضیح نوشته شده اند. البته بیشتر آنها غیر فعال هستند و در شرایط خاص آنها را فعال می کنید.

بسته ها BOXES

از اینجایی که فرآیند ساخت یک ماشین مجازی از ابتدا، کند و خسته کننده است، واگرانت بسته های آماده ای که با اسم Box شناخته می شوند فراهم می کند. این بسته ها باعث می شوند کلون یک ماشین مجازی به سرعت انجام شود.

به سایت Vagrant Cloud مراجعه کنید تا لیست بسته های محبوب که توسط توسعه دهنده های دیگر ساخته شده است را مشاهده کنید. در این پست ما از بسته “ubuntu/trusty64” استفاده می کنیم.

یکی از این بسته های محبوب، laravel/homestead است که یک محیط توسعه PHP را برای توسعه دهندگان ایجاد می کند

فایل Vagrantfile که در مرحله قبل ایجاد کرده بودید را با ویرایشگر باز کرده و متغیر config.vm.box را بصورت زیر ویرایش کنید:

همانطور که مشاهده می کنید ما نام Box مورد نظر را وارد کردیم. حال می توانیم ماشین مجازی (VM) را با دستور زیر اجرا کنیم:

توجه داشته باشید، بار اولی که این دستور  را اجرا می کنید، باعث می شود بسته مورد نظر دانلود شود و در دیسک ذخیره شود این بسته ها تقریبا حجم بالایی دارند. پس این مرحله به سرعت اینترنت شما بستگی دارد که چه زمان بسته دانلود شود

نصب و راه اندازی vagrant

اتفاقی که در اینجا می افتد این است که واگرانت در ابتدا box را import می کند و بررسی می کند که آیا box به روز رسانی شده است یا نه. شما همچنین می توانید پورت SSH را که بر روی 2200 تنظیم شده است را مشاهده کنید (از فایل Vagrantfile قابل ویرایش است). این پورت شاید در سیستم شما متفاوت باشد.

در آخر مشاهده می کنید که چطور پوشه vagrant را بین host و guest به اشتراک گذاشته است.

این بسته ها پس از دانلود در آدرس C:\Users\<USER_PROFILE>\.vagrant.d\boxes ذخیره می شوند تا بعدها به هر تعداد که بخواهیم از آن بسته کپی داشته باشیم. ما می توانیم با تایپ دستور vagrant box list لیست بسته های نصب شده را مشاهده کنیم و همچنین با دستور vagrant box remove box/name بسته مورد نظر را پاک کنیم.

دسترسی به سرور

همانطور که مشاهده کردید Vagrant توانایی وارد شدن به سرور جدید و انجام عملیاتی مثل تنظیم IP، پورت، پوشه های به اشتراک گذاشته شده (shared folder)، کاربران و غیره را دارد. به منظور انجام این کار، تمام بسته ها، نیاز به یک کلید عمومی (public key) برای واگرانت با کاربری به نام vagrant نیاز دارند.

وقتی VM ایجاد شد، واگرانت در کنسول ما تعدادی خروجی چاپ می کند که می توانید از طریق آن خطاهای رخ داده را مشاهده کنید. نگران نباشید اکثر بسته ها به خوبی نصب می شوند، اما گاهی برخی از بسته های پیشرفته به سختی اجرا می شوند و صدها خط خروجی در کنسول چاپ می کنند.

اما حال مشکلی که برای کاربران ویندوز می تواند پیش آید این است که ویندوز با یک خط فرمان SSH برای کلاینت عرضه نمی شود. اما این به آن معنا نیست که کاربران ویندوز نمی توانند از ویژگی های SSH در واگرانت بهره ببرند. اینجاست که می توانیم از PuTTY استفاده کنیم. ابتدا دستور زیر را اجرا کنید تا اطلاعاتی در مورد SSH شما در کنسول چاپ شود:

این دستور IP و پورت SSH و برخی دیگر از اطلاعات دیگر را به شما نشان می دهد.

برنامه PuTTY که قبلا دانلود کرده بودید را باز کنید و IP و PORT را در آن وارد کنید و نامی را برای اتصال خود مشخص کنید و آنگاه آن را ذخیره کنید. حال زمان این فرا رسیده است که به سرور جدید خود با PuTTY متصل شویم.

برای ورود به سرور نام کاربری “vagrant” و کلمه عبور “vagrant” را وارد کنید.

 

توجه داشته باشید که اگر کاربر ویندوز هستید می توانید به جای putty از برنامه هایی مثل Cygwin یا MinGW و حتی Git استفاده کنید. vagrant ssh را تایپ کنید تا ببینید چه اتفاقی رخ می دهد.

استفاده از کلید ها Private و Public

حتما توجه کردید که برای وارد شدن به سرور نیاز به رمز عبور داریم، شاید بهتر باشد کاری کنیم هنگام ورود نیاز به رمز عبور نباشد. ما می توانیم از همان کلید عمومی (public) که Vagrant در اختیار ما گذاشته است استفاده کنیم و آن را در کانکشنی که ایجاد کرده ایم ذخیره کنیم. برنامه PuTTYGen را که قبلا دانلود کرده بودید را اجرا کنید.

بر روی دکمه Load کلیک کنید و به آدرس C:\Users\<USER_PROFILE>\.vagrant.d مراجعه کنید تا فایل insecure_public_key را پیدا کنید.

حال بر روی دکمه Save private key کلیک کنید. این کار باعث می شود یک فایل با پسوند .PPK ایجاد شود. آن را با نام دلخواه “insecure_public_key.ppk” ذخیره کنید. حال می توانید برنامه PuTTYGen را ببندید و به PuTTY برگردید.

putty

در برنامه PuTTY کانکشن خود را بارگذاری کنید یا اگر ذخیره نکرده بودید یکی دیگر را ایجاد کنید. آنگاه از نوار کناری به Connection->SSH->Auth پیمایش کنید و بر روی Browse کلیلک کنید و کلیدی را که ایجاد کرده بودید را انتخاب کنید.

طراحی سایت

حال اگر می خواهید این اطلاعات ذخیره شوند، از نوار کناری، روی Session کلیلک کنید و مطمئن شوید نام Host یا آدرس IP و Port را وارد کرد باشید، آنگاه نامی را برای کانکشن خود وارد کنید و در آخر دکمه Save و برای متصل شدن به سرور دکمه Open را کلیک کنید.

مشاهده می کنید که در کنسول باز شده از شما فقط نام کاربری را درخواست می کند و رمز عبور بطور خودکار با کلیدی که ایجاد کرده ایم شناسایی می شود.

شما همچنین می توانید کلیدهای private/public خود را با PuTTYGen ایجاد کنید و به جای کلید واگرانت جایگزین کنید. اما این عمل خارج از محدوده این پست است.

راه اندازی محیط توسعه LAMP برای دولوپرهای PHP

حال ما به عنوان یک توسعه دهنده می توانیم هر کاری که دوست داریم با سرور خود انجام دهیم. به عنوان مثال اگر توسعه دهنده PHP هستید بهتر است که هر چه زودتر بسته LAMP را نصب کنید یا همچنین می توانید Node.js را از طریق یک NVM نصب کنید. اگر تجربه کار با هر کدام از توزیع های لینوکس مثل Ubuntu یا Debian را دارید، پیشنهاد می کنم از خواندن این بخش صرف نظر کنید چون ما قرار است برنامه های مورد نیاز برای PHP را نصب کنیم.

راه اندازی محیط توسعه برای طراحی سایت

با دستور vagrant ssh وارد Ubuntu خود شوید و دستورات آشنا زیر را برای نصب پکیج ها، دستورات زیر را به ترتیب در ترمینال خود وارد کنید تا پکیج ها دانلود و نصب شوند:

با دستورات ساده فوق توانستیم برنامه های Apache، MySQL و PHP را نصب کنیم. اما ما می توانیم دستورات فوق راه به صورت شل اسکریپت بنویسیم که هنگام نصب ماشین، برنامه های مورد نیاز هم بطور خودکار نصب شوند. در این پست قرار نیست روش انجام این کار را توضیح دهم، اگر کنجکاو هستید می توانید به مستندات واگرانت برای ان کار مراجعه کنید و همچنین بسیاری shell script در وب وجود دارد که می توانید از آنها استفاده کنید.

اگر می خواهید یک محیط توسعه PHP راه اندازی کنید، پیشنهاد می کنم از بسته Laravel/Homestead به جای بسته Ubuntu/trusty64 استفاده کنید. تمام برنامه های مورد نیاز بطور خودکار نصب می شوند و لازم نیست خود بطور دستی آنها را پیکربندی کنید

نگران این نباشید که شاید محیط توسعه خود را خراب کنید، چون به راحتی می توانیم یک کپی تازه از Box که در جایی از سیستم ذخیره شده است ایجاد کنیم.

دستورات مهم Vagrant

صدها دستور مختلف برای برقراری ارتباط با Vagrant وجود دارد که می توانید از آنها استفاده کنید. برای مشاهده لیست کامل این دستورات به مستندات آن مراجعه کنید، با این حال در زیر رایج ترین آنها را خواهید دید.

vagrant up

این دستور برای بوت شدن box و ارائه سرور بر اساس فایل Vagrantfile است. من از این دستور برای از سرگیری محیط توسعه استفاده می کنم.

vagrant suspend

از این دستور برای متوقف کردن ماشین مجازی استفاده می شود. برای اطمینان از اینکه مشکلی برای محیط توسعه پیش نیاید قبل از اینکه سیستم خود را خاموش کنید از این دستور استفاده کنید.

vagrant destroy

همانطور که از نام پارامتر پیداست، برای پاک کردن و از بین بردن ماشین مجازی استفاده می شود.

vagrant reload

دستورات vagrant reload و vagrant reload –provision اگر محیط توسعه شما بطور ناگهانی از کار افتاد، راه حل سودمند این است که از این دستور برای ریستارت کردن ماشین استفاده کنید. اگر پارامتر –provision را اضافه کنید باعث می شود Box دوباره راه اندازی شود. این دستور وقتی کاربرد دارد که بخواهید در همان Box فعلی، تغییراتی اعمال کنید.

vagrant ssh

هر چیزی را که در سیستم خود ویرایش کنید بطور خودکار در پوشه عمومی (public) نیز به اشتراک گذاشته می شود. با این حال، به هر دلیلی که نیاز به اتصال به سرور مجازی خود دارد، تنها کافیست این دستور را اجرا کنید.

vagrant ssh-config

این دستور به شما اجازه می دهد که جزئیاتی که برای اتصال به محیط مجازی لازم داریدرا به شما نشان دهد.

توجه داشته باشید مطالب فوق تنها نکات مهم و کاربردی در Vagrant را پوشش داده است. پس بهترین جا برای یادگیری مستندات سایت Vagrant است.

من واقعا از کسانی که زمان صرف می کنند تا این مقاله ها را مطالعه کنند قدردانی می کنم. امیدوارم همانطور که من کار با Vagrant را دوست دارم شما نیز از آن لذت ببرید. موفق باشید! 😉

خلاصه

این یک آموزش برای راه اندازی سرور مجازی با Vagrant است. مطالعه این پست باعث می شود نکات مهم برای کار با واگرانت را یاد بگیرید. Vagrant بسیاری از مشکلاتی که هنگام توسعه یک برنامه در تیم به وجود می آید را حل کرده است. در نوشتن این پست فرض شده است که کاربر حداقل تجربه کار با یکی از توزیع های لینوکس مثل Ubuntu را داشته باشد و با نصب پکیج ها با apt-get آشنا باشد. مستندات رسمی Vagrant بهترین جا برای راه اندازی واگرانت می باشد. اما این مقاله بیشتر، کاربران مبتدی را هدف گرفته است. در این پست یاد خواهیم گرفت که چطور یک سرور مجازی را راه اندازی کنیم و همچنین یک محیط توسعه LAMP ساده برای توسعه دهندگان PHP راه اندازی می کنیم. در آخر نیز با دستورات رایج Vagrant آشنا می شویم.


 

  • siavash

    سلام مرسی از این همه پست خوب ;
    من طبق همین آموزش پیش میرم اما با این ارور روبه رو میشم:

    SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3 Protocol mismatch.

    علتش چی میتونه باشه…؟

    • siavash

      البته من از قبل xampp رو روی سیستمم نصب کرده بودم و استفاده میکردم ممکنه با پاک کردن اون مشکل حل بشه!!