ساخت وب سرور مجازی ویژه برنامه‌نویسی
آموزش گام به گام ساخت یک محیط توسعه مجازی
توسعه‌دهندگان حرفه‌ای وب به خوبی می‌دانند که باید از ظرفیت‌های موجود در سیستم‌عامل‌های ویندوز، لینوکس و البته مک (نه چندان فراگیر در ایران) به خوبی استفاده کنند. در چند سال گذشته هر سه سیستم‌عامل ویندوز، لینوکس و مک پیشرفت‌های قابل ملاحظه‌ای داشتند و قابلیت‌های کاربردی متعددی در اختیار توسعه‌دهندگان قرار داده‌اند، اما هر توسعه‌‌دهنده حرفه‌ای وب به خوبی می‌داند کار کردن در یک محیط بومی توسعه وب یعنی لینوکس انتخاب خرمندانه‌ای است. اما چگونه می‌توانیم یک محیط توسعه وب مجازی ایجاد کرده و از آن استفاده کنیم؟ ما به شما نحوه ساخت این محیط توسعه را نشان خواهیم داد.

وب‌سایت‌های امروزی روی بستری اجرا می‌شوند که توسعه‌دهندگان آن‌را پشته LAML می‌نامند. LAMP سرنام واژه‌های Linux ,Apache ,MySQL ,PHP است که ترکیب این چهار مولفه با یکدیگر پکیجی را به وجود می‌آورد که ما به آن وب‌سرور می‌گوییم. ‌البته پشته دیگری به نام LEMP نیز وجود دارد که کاراکتر E در این واژه برگرفته از Nginx است که توسعه‌دهندگان به آن engine x می‌گویند. در این پشته به جای آپاچی از Nginx استفاده می‌شود. همان‌گونه که مشاهده می‌کنید هر دو پشته به واژه لینوکس اشاره دارند، اما لینوکس تنها دلیلی نیست که توسعه‌دهندگان این پشته را به شما پیشنهاد می‌کنند. فناوری دیگری همچون آپاچی یا Nginx، MySQL و PHP همگی ابزارها و پیاده‌سازی مختلفی دارند که روی بسترهای مختلف قابل استفاده است. اما به لحاظ تاریخی و فنی پیکربندی‌های بر پایه لینوکس حرف اول را در دنیای وب می‌زنند.

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

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

ماشین مجازی

ماشینهای مجازی، ابزارهایی هستند که روی سیستم‌عامل پایه شما اجرا می‌شوند. ابزارهایی که اجازه می‌دهند سیستم‌عامل‌هایی فارغ از سکوی پایه را در قالب یک پنجره کاربردی در اختیار داشته باشید. سیستم‌عامل‌هایی که هیچ‌گونه تاثیر مستقیمی روی تغییر رفتار سیستم‌عامل نخواهند داشت و تنها در زمینه مصرف منابع سیستمی ممکن است به مدیریت خاصی نیاز داشته باشنداز مهم‌ترین ویژگی‌‌های یک ماشین مجازی به موارد زیر می‌توان اشاره کرد:

هرگونه اشتباه در نصب، پیکربندی یا حذف نرم‌افزارها روی ماشین ‌مجازی پیامدی به همراه نداشته و به راحتی با راه‌اندازی مجدد ماشین مجازی از روی ایمیج امکان برطرف کردن مشکل وجود دارد.

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

اگر مجبور هستید با اعمال تغییرات عملکرد برنامه را به شکل مجازی و به شکل همزمان مشاهده کنید، این امکان وجود دارد تا از ابزارها و نرم‌افزارهای متفاوت همچون آپاچی به جای Nginx روی ماشین مجازی یا (جعبه‌های مجازی) virtual boxes دیگر استفاده کرد.

Vagrant

ابزاری که Vagrant (واگرانت) نام دارد، به شما اجازه می‌دهد تا باکس‌های پایه (base boxes) که شامل سیستم‌عامل‌های لینوکسی از پیش پیکربندی شده‌اند را مستقر کنید. (عملکرد واگرانت را نباید یکسان با داکر تصور کنید، زیرا داکر از کانتینرها و بر مبنای کرنل لینوکس که روی سیستم نصب شده استفاده می‌کند اما ابزارهایی شبیه به واگرانت ماشین مجازی را روی سیستم‌عامل دیگری راه‌اندازی و مدیریت می‌کند.) ما در این مقاله فرض را بر این موضوع گذاشته‌ایم که شما به عنوان یک توسعه‌دهنده وب در زمینه کار کردن با سیستم‌عامل‌های مبتنی بر خط فرمان تسلط دارید.

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

  • ابتدا اطمینان حاصل کنید که یک ماشین مجازی روی سیستم‌عامل خود نصب کرده‌اید. برای هر دو سیستم‌عامل ویندوز و مک دو گزینه Virtual Box و VMware در اختیارتان قرار دارد. البته اگر از ویندوز 10 استفاده می‌کنید ماشین مجازی Hyper V مایکروسافت نیز وجود دارد.
  • در مرحله بعد باید به سایت  Vagrantup.com رفته و نصب کننده مناسب را انتخاب کنید.
  • روی هارددیسک یک پوشه محلی ایجاد کنید. این پوشه محلی به منظور میزبانی باکس استفاده شده و همچنین زیرمجموعه پروفایل کاربری نیز به شمار می‌رود.

پیکربندی محیط توسعه وب

این نقطه همان مکانی است که قرار است یک اتفاق جادویی در آن رخ دهد. PuPHPet یک ابزار کاربردی است که به منظور انتخاب و پیکربندی نرم‌افزارهایی که قرار است در پشته LAML استفاده شوند فایل‌های GUI لازم را ارائه می‌کند.

البته کاربرد ابزار PuPHPet محدود به موردی که اشاره شد نیست و PuPHPet قادر است از زبان‌های سمت سرور همچون Ruby و Node.js و جایگزین‌هایی برای اجزای پشته LAML پشتیبانی خوبی به عمل آورد. (به لحاظ تخصصی جاوااسکریپت را نباید یک زبان سمت سرور در نظر گرفت، اما در گروه‌ زبان‌های برنامه‌نویسی قرار می‌گیرد.)

PuPHet این پتانسیل را دارد یک پیکربندی اولیه برای فایل‌های واگرانت ارائه کند. این ویزاد مشتمل بر بیش از بیست پیکربندی مختلف است که هر یک زوایای مختلفی را پوشش می‌دهند. در این مقاله با چند مورد از این موارد آشنا خواهید شد.

هدف استقرار (Deploy Target): این بخش به شما اجازه می‌دهد تا مشخص کنید یک ایمیج قرار است برای Virtual Box ، VMware یا سایر نرم‌افزارهای مشابه ایجاد شده یا این‌که ایمیجی برای یک زیرساخت ابرمحور همچون Digital Ocean، AWS یا موارد مشابه ایجاد شود.

System> Packages : این بخش به شما اجازه می‌دهد نرم‌افزارهایی که در فرآیند یک نصب عادی به آن‌ها نیاز دارید را مشخص کنید. به‌طور مثال، ممکن است به دنبال پکیج‌های ویژه‌ای برای توسعه باشید که باید در توزیع پایه سیستم‌عامل قرار گیرند. اگر در نظر دارید وابستگی‌های خاصی در ارتباط با فرآیند توسعه برای اوبونتو را مشخص کنید باید از عبارت Build-essentials استفاده کنید. برای توزیع CentOS7 نیز باید گزینه Development Tools را انتخاب کنید.

Web Servers:  برای انتخاب آپاچی یا Nginx به عنوان هسته مرکزی پشته L(A|E)MP استفاده می‌شود.

Languages: برای انتخاب زبان‌های PHP، Ruby، Node.JS یا پایتون استفاده می‌شود.

Databases: یکی از جذاب‌ترین ویژگی‌های این ابزار است که اجازه می‌دهد که برای برقرار ارتباط میان ماشین مجازی با بانک‌های اطلاعاتی مختلف استفاده می‌شود. در حالی که MySQL گزینه پیش‌فرض است، اما برخی از توسعه‌دهندگان ترجیح می‌دهند از MariaDB استفاده کنند.

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

PuPHPet در آخرین مرحله یک آرشیو از پیکربندی‌ها ایجاد می‌کند. شما باید پیش از آن‌که سرور جدید خود را پیکربندی کرده و پارامترها را مشخص کنید در پوشه مربوطه فایل آرشیو شده را از حالت فشرده خارج کنید.

اکنون باید فرمان زیر را اجرا کنید:

$ vagrant up

خروجی فرمان فوق به شرح زیر خواهد بود:

به دلیل این‌که Base box در پوشه محلی کامپیوتر شما قرار دارد، واگرانت ایمیج را از مخزن Atlas به عنوان باکس از پیش‌پیکربندی خودش استفاده می‌کند. به لحاظ فنی، هر یک از جعبه‌ها را می‌توان از طریق اجرای فرمان $ vagrant box add USER/BOX به ماشین محلی اضافه کرد

اکنون ماشین مجازی اجرا شده و شما آنلاین خواهید شد. تنها کاری که باید انجام دهید اجرای فرمانی است تا یک جلسه SSH  در ماشین مجازی (فاقد رابط کاربری) که نقش یک سرور LAMP را بازی می‌کند ایجاد کنید.

برای اطلاعات بیشتر در این ارتباط به آدرس How to Create a Virtual Web Development Environment and Server مراجعه کنید.


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

آخرین نسخه ماهنامه شبکه را دریافت کنید
برای دانلود ماهنامه شبکه 221 با پرونده ویژه «ترفندهای سیستم‌عامل‌ها» اینجا کلیک کنید.

اشتراک ماهنامه شبکه
اشتراک ماهنامه شبکه یکی دیگر از راه‌های دسترسی به مطالب مجله است؛ به ویژه اشتراک آنلاین که با قیمتی مناسب محتوای کامل مجله، شامل مطالب و آگهی‌ها را در ختیار شما قرار می‌دهد.

برچسب: 

مطالب پربازدید روز

پشتیبانی توسط ایران دروپال