چگونه میتوانیم یک محیط توسعه و سرور مجازی برای برنامه نویسی وب بسازیم؟


سیستمهای عامل ویندوز و Mac OXS در طی چند سال اخیر به صورت سیستمهای عامل کاربرپسندی تکامل یافتهاند؛ اما هر توسعهدهنده وبی واقعاً نیاز دارد که در محیط بومی برنامه نویسی وب یا همان توسعه وب یعنی لینوکس فعالیت کند. در این مقاله به شما روش بهرهبرداری از مزیتهای هر دو پلتفرم را آموزش خواهیم داد: بدین ترتیب میتوانید هم از یک سیستمعامل پایدار و کاربرپسند مانند ویندوز یا OSX برای نیازهای روزمره استفاده کنید و همچنین از مزیتهای محیط توسعه در همان اکوسیستمی که کد در مرحله اجرا استفاده میکند نیز بهرهمند شوید.
مقدمه
اغلب وبسایتها بر روی پلتفرمی اجرا میشوند که استک LAMP نامیده میشود. این کلمه اختصار واژههای Linux، Apache، MySQL، PHP است که با همدیگر بستهبندی شده و آن چیزی که ما به نام وبسرور مینامیم را تشکیل میدهند. یک استک مشابه به نام «LEMP» نیز وجود دارد که حرف E آن از تلفظ Nginx به صورت engine x ناشی میشود. در این ترکیب به جای وبسرور آپاچی از انجین ایکس استفاده میشود.
ممکن است متوجه شده باشید که نام لینوکس در این بسته آمده است؛ اما این تنها دلیل توصیه لینوکس از سوی توسعهدهندگان مختلف نیست. فناوریهای دیگر مانند آپاچی یا انجین ایکس، مایاسکیوال و پیاچپی همگی ابزارها و پیادهسازیهای مختلفی برای پلتفرمهای متفاوت دارند؛ اما به دلایل فنی و تاریخی پیکربندیهای مبتنی بر لینوکس در فضای سرور غلبه دارند و قابل پیشبینی تر هستند.
قابلیت پیشبینی و پایداری چنان دلایل بزرگی هستند که بخواهید بر روی یک سیستمعاملی کار کنید که صرفاً به این منظور طراحی شده است. این سیستمعامل اختصاصی به سیستمی که به عنوان یک توسعهدهنده وب روزانه برای انجام کارهای بسیار متفاوت مورد استفاده قرار میدهید، ترجیح دارد. به بیان دیگر شما مسلماً دوست ندارید یک سرور را بر روی همان سیستمعاملی اجرا کنید که لازم است هنگام نصب کارت گرافیک ریاستارت شود و یا سیستمی باشد که آن را داخل کولهپشتی قرار داده و به خیابان قدم بگذارید. گنجاندن پردازشها و نرمافزارهایی که برای اجرای یک سرور مورد نیاز هستند بر روی یک دستگاه با کارکردهای مختلف کاری است که موجب ایجاد بینظمی و شلوغی در امور میشود.
بنابراین سؤال این است که چگونه میتوان قابلیتهای چندوظیفگی را با نیاز به توسعه اپلیکیشنها در محیطی بومی مطابقت داد؟ پاسخ این سؤال، ماشین مجازی است.
ماشینهای مجازی و واگرانت (Vagrant)
ماشینهای مجازی برنامههایی هستند که در سیستمعامل اصلی اجرا میشوند. این نرمافزارها امکان اجرای سیستمعاملی کاملاً مجزا را درون یک پنجره فراهم میسازند و به طور کامل از آنچه بر روی دستگاه وجود دارد مستقل هستند؛ اما این امکان با یک هزینه سربار به دست میآید. با این وجود، مزیتهای این روش بسیار هستند:
- اشتباه در نصب، پیکربندی یا حذف نرمافزار در این ماشینها مشکل عمدهای محسوب نمیشود، چون کافی است ماشین مجازی را مجدداً راهاندازی کنید تا دوباره از روی تصویر تازهای بارگذاری شود.
- در مواردی که در فرایند توسعه برنامه با خطاهای بزرگ مواجه شوید و یا کل سیستم هنگ کند، اگر بر روی ماشینهای مجازی کارمی کنید، جای هیچ نگرانی نخواهد بود، زیرا این تنها ماشین مجازی است که از این وضعیت تأثیر میپذیرد.
- اگر نیاز داشته باشید که برنامهای را با شرایط اندکی متفاوت اجرا کنید، هر مجموعه شرایط مانند نسخههای مختلف برنامهها یا نرمافزارهای متفاوت (برای مثال استفاده از آپاچی در برابر انجینایکس) میتوان ماشین نرمافزاری یا ویرچوالباکس دیگری برای آن ایجاد نمود.
واگرانت
ابزاری که واگرانت (Vagrant) نام دارد به «باکسهای پایه» کمک میکند که به سیستمهای عامل لینوکس با پیکربندیهای مختلف تبدیل شوند. در این مقاله فرض میکنیم که در استفاده از سیستمعاملهایی که رابط کاربری گرافیکی (GUI) ندارند و تنها از یک رابط خط فرمان (CLI) استفاده میکنند تبحر دارید. پیش از آن که یک باکس پایه را پیکربندی کنیم یک ماشین مجازی و واگرانت تهیه میکنیم.
- ابتدا مطمئن شوید که برای سیستمعامل شما ارائه دهنده ماشین مجازی وجود داشته باشد. هم ویندوز و هم OSX میتوانند از VirtualBox استفاده کنند. VMWare نیز بر روی هر دو پلتفرم اجرا میشود. ویندوز 10 نسخه pro و بالاترمی توانند از HyperV استفاده کنند که برای استفاده بهتر از سختافزار در این نسخههای ویندوز طراحی شدهاند.
- به سایت vagrantup.com سر بزنید و یک برنامه نصب کننده مناسب را انتخاب کنید.
- در روی هارد دیسک خود یک پوشه جدید برای میزبانی باکس ایجاد کنید. مکانهایی که زیرمجموعه پروفایل کاربری شما هستند، مناسب محسوب می شوند؛ اما مکانهایی که به فایلهای سیستمی تعلق دارند، عموماً مناسب نیستند.
پیکربندی محیط توسعه وب
این بخش همان جایی است که همه چیز به طور خودکار رخ میدهد. ابزاری به نام PuPHet فایلهای GUI مناسب در فرایند انتخاب و پیکربندی نرمافزارهای مورد استفاده در استک LAMP را ارائه میدهد و حتی با پشتیبانی از زبانهای سمت سرور مانند روبی و Node.js و نسخههای جایگزین اجزای استک LAMP از این هم فراتر میرود. از نظر فنی جاوا اسکریپت کاملاً سمت سرور نیست؛ اما آن را نیز میتوان نوعی از این زبانها دانست.
PuPHet پیکربندی اولیه فایلها برای واگرانت را انجام میدهد. این ویزارد شامل بیست جنبه مختلف از پیکربندی است، از این رو تنها برخی از آنها را بررسی میکنیم.
پیکربندی وبسرور
- هدف توزیع: در این بخش میتوانید انتخاب کنید که تصویری مورد نظر برای ویرچوال باکس ایجاد شود یا برای VMWare و نرمافزارهای مشابه و یا این که میخواهید تصویری مناسب زیرساختهای محاسبات ابری مانند AWS یا DigitalOcean و ... ایجاد نمایید.
- System>Packages در این بخش میتوانید نرمافزارهایی که در یک نصب نرمال میخواهید را ذکر کنید. به طور خاص میتوانید بستههایی را که برای توسعه لازم هستند در پایه توزیع سیستمعامل بگنجانید.
- برای گنجاندن وابستگیهای توسعه برای اوبونتو عبارت Build-essentials را وارد نمایید.
- برای گنجاندن برخی از موارد برای CentOS7 گزینه «Development Tools» را وارد نمایید.
- WebServers: یکی از موارد آپاچی یا انجین ایکس را به عنوان ستون فقرات استک L(A|E)MP خود انتخاب کنید.
- زبانها: پیاچپی، روبی، Node.js و پایتون.
- پایگاههای داده: شاید یکی از جذابترین ویژگیهای این رویکرد توانایی ساخت ماشینهای مجازی برای کار با پایگاههای داده مختلف موجود است. با این که مایاسکیوال یک گزینه پیشفرض محسوب میشود، ممکن است بخواهید با پایگاههای داده جدیدتر مانند MariaDB کار کنید.
- باقی گزینهها تا حدی فرعی محسوب میشوند و در صورتی که دقیقاً ندانید کدام یک را باید انتخاب کنید، میتوانید آنها را بعداً نیز نصب کنید. در نهایت آن چه دارید یک سیستمعامل با امکانات کامل است که تحت فرمان شما است.
PuPHPet در انتهای این مسیر پیکربندی یک آرشیو ایجاد میکند. این آرشیو را در پوشهای که پیش از پیکربندی پارامترهای سرور جدید ایجاد کردید، از حالت فشرده خارج کنید.
اینک میتوانید دستور زیر را اجرا کنید:
$ vagrant up
نتیجه به صورت زیر خواهد بود:
از آنجا که کادر پایه در پوشهای محلی (روی سیستم) قرار دارد، واگرانت تصویری را از Atlas بازیابی میکند که ریپازیتری از پیش پیکربندیشده باکسهای واگرانت است. از نظر فنی هر یک از این باکسها میتوانند از طریق اجرای دستور زیر به ماشین محلی اضافه شوند:
$ vagrant box add USER/BOX
جمعبندی
در این مرحله ماشین مجازی اجرا میشود و شما آنلاین میشوید. تنها یک نکته باقی مانده است. با اجرای دستور زیر میتوانید وارد یک جلسه SSH در ماشین مجازی بدون رابط گرافیکی شوید که به عنوان یک سرور LAMP عمل میکند.
$ Vagrant ssh
اگر این نوشته مورد توجه شما قرار گرفته است، پیشنهاد میکنیم موارد زیر را نیز ملاحظه نمایید:
- آموزش نرم افزار مجازی سازی VMware Workstation
- آموزش مهارتهای اساسی کامپیوتر
- ماشین مجازی چیست؟ — هر آنچه باید در این مورد بدانید
- آموزش مدیریت هاست با دایرکت ادمین (DirectAdmin)
- درس مهندسی اینترنت — مفاهیم پایه به زبان ساده | منابع، کتاب و فیلم آموزشی
- دامنه (دامین) و تفاوت آن با میزبانی وب (هاست)
- طراحی و برنامه نویسی وب
==
سلام ، میخواهم بر نامه نویس تحت سرور را انجام دهم ، به نظر شما از کدام سیستم عامل ویندوز استفاده کنم ، درباره ویندوز سرور ۲۰۱۹ ، مشکلی بر نمیخورم ، برای نصب نرم افزارها در این رابطه ، آیا در دسترس هستند، در کل شما چه سیستم عاملی را پیشنهاد میکنید ، البته از خانواده ویندوز ماکروسافت
سلام و وقت بخیر دوست عزیز؛
پاسخ سوال شما به هدفتان از بهکارگیری آن سرور و مجموعه نرمافزارهای دیگری که برای برنامهنویسی استفاده خواهید کرد، وابسته است، اما به طور کلی در حال حاضر نسخه 2019 گزینه مناسبی برای استفاده محسوب میشود.
از توجه شما سپاسگزاریم.