سیر تا پیاز توسعه وردپرس با VVV روی ویندوز

لوگوی Vagrant

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

یکی از راه حل های جایگزین برای رفع این مشکل نصب Vagrant و استفاده از Box هاشه که بحث امروزه. راه دیگه هم که شاید سختی بیشتری داره استفاده از Container های ابزاری به نام Docker هست که نه تنها توی زمینه توسعه وردپرس بلکه توی توسعه خیلی چیزای دیگه سنگ تموم گذاشته.

چرا VVV رو انتخاب کردم؟

انتخاب های زیادی برای پیکربندی محیط توسعه وردپرس با Vagrant وجود داره و کاملترین اونها که حتی برای توسعه هسته وردپرس هم کاربرد داره Varying Vagrant Vagrants هست که به اختصار VVV نام گرفته.

پکیج های دیگه هم هست مثل:

درواقع همه‌ی باکس‌های Vagrant حکم ساندویچ داره. یکی کلم دوست داره یکی خیارشور نمیخواد یکی با نون باگت درست میکنه یکی با نون تست …. و خلاصه اینکه سلیقه‌ای شده. اما هدف همه اونها نزدیک کردن محیط توسعه به محیط production هست.

دلیل من هم برای انتخاب VVV این بود که به PHPUnit – xdebug و imagick نیاز داشتم و اینکه این پکیج اول trusty64 رو به صورت خام نصب میکنه و بعد از اولین اجرا یک اسکریپت حدود ۲۰۰ مگابایت ابزار موردنیاز برای توسعه وردپرس رو دانلود میکنه. (که یعنی من درواقع یه لینوکس خام هم دارم که بعدا میتونم ساندویچ خودم رو باهاش درست کنم). بعلاوه اینها با VVV میشه تمامی نسخه های وردپرس رو با یک دستور ساده نصب کرد که این ویژگی برای طراحی پوسته و افزونه خیلی مناسبه چون طبق استاندارد های وردپرس، محصول نهایی باید “حداقل” روی دو نسخه قبل تر از نسخه جاری کار کنه. چیزهای زیادی توی این پکیج وجود داره که لیستش رو اینجا نوشته.

چطوری نصب میشه ؟

این آموزش روی ویندوز ۸.۱ (Pro – Enterprise) و بالاتر کار میکنه و من خودم این مراحل رو روی ویندوز ۱۰ انجام دادم. متاسفانه Vagrant روی ویندوز ۷ اصلا کارایی جالبی نداره و خیلی دردسر سازه پس پیشنهادم اینه که سیستم عامل رو ارتقا بدید.

درضمن در تمام مراحل نصب خط فرمان رو به صورت run as administrator اجرا کنید (پیشنهاد من git-bash یا powershell هست)

پیش نیاز ها

  • Vagrant 1.6.x و بالاتر (نسخه پیشنهادی: ۱.۸)
  • Virtualbox 4.0.x (نسخه پیشنهادی: ۵.۰.۲۰ – خطاها با توضیحات بیشتری نمایش داده میشه)
  • پلاگین vagrant-hostsupdater (پیشنهادی – برای خودکار کردن فرایند راهندازی دامنه)
  • پلاگین vagrant-triggers

من به خاطر تداخل مجبور شدم پلاگین vagrant-triggers رو غیرفعال کنم اما توصیه VVV این هست که نصب کنید. پس به خاطر داشته باشید که اگر به مشکلی برخوردید غیرفعال کردن این پلاگین ممکنه تاثیر گذار باشه.

بعد از نصب پیش نیاز ها فقط کافیه repo مربوط به VVV رو هرکجای سیستم کلون کنید. البته پیشنهاد من اینه که در مسیر root کلون بشه (در ویندوز مسیر root یعنی پوشه ای که با نام کاربر ساخته میشه مثلا c:\Users\ali)

git clone https://github.com/Varying-Vagrant-Vagrants/VVV.git

بعد از طریق خط فرمان وارد پوشه کلون شده بشید و دستور vagrant up رو اجرا کنید. توی این مرحله اگر trusty64 خام رو نداشته باشید Vagrant اون رو دانلود میکنه (حدود ۴۸۰ مگابایت) بعد از اون یک اسکریپت اجرا میشه و حدود ۲۰۰ مگابایت فایل رو از مخزن لینوکس دانلود میکنه که شامل تمام بسته هایی میشه که توی توضیحات VVV ذکر شده.

این مرحله ممکنه ۴۰ دقیقه طول بکشه و من پیشنهاد میکنم با پروکسی فرایند دانلود رو انجام بدید که Composer و بعضی از پکیج هایی که روی مخزن لینوکس نیستن بدون خطا دانلود بشه. ممکنه بعضی از دستورات به رنگ قرمز در بیاد که علتش وجود خطا نیست بلکه توسعه دهنده اسکریپت رنگ قرمز رو برای مشخص کردن دستوراتی که درون trusty64 اجرا میشن انتخاب کرده.

در پایان این مرحله گزینه های زیر براتون نصب میشه (لینکها فقط بعد از نصب قابل دیدن هستن):

خطاهای معمول

وجود فاصله در نام پوشه یا محل ذخیره Vagrant

روی ویندوز یک باگ وجود داره که اگر توی اسم پوشه (vagrant_home) فاصله وجود داشته باشه Vagrant نمیتونه آدرس دهی رو انجام بده. برای حل این مشکل دستور زیر رو توی خط فرمان اجرا کنید.

setx VAGRANT_HOME "X:/your/path" /M
#E.g: setx VAGRANT_HOME "D:/dev/test" /M

نمایش پیغام … ssh connection timeout بیشتر از ۳ بار

اگر نسخه virtualbox پایینتر از ۵.۰.۲۰ باشه پیغام فوق نمایش داده نمیشه و بجاش بعد از اجرای دستور vagrant up در مرحله authorization مکث طولانی رخ میده.
علت این خطا غیرفعال بودن گزینه VT-x هست که با مراجعه به تب Advanced توی تنظیمات اکثر مادربوردها میشه اون رو فعال کرد.

نمایش خطای unknown encoding name – CP720 پس از اجرای هرکدام از دستورات Vagrant

هر خط فرمان چندین صفحه داره که هر کدام مربوط به یک یونیکد مخصوص هست و چون زبان system locale روی فارسی تنظیم شده صفحه مربوط به خط فرمان روی UTF-8 تنظیم میشه و این خطا اتفاق میوفته. برای حل “دائمی” این مشکل system locale رو روی انگلیسی تنظیم کنید.

درغیر اینصورت توی هربار اجرای خط فرمان باید دستور زیر رو تایپ کنید:

#for cmd:
chcp 1257
#for git-bash,powershell: 
chcp.com 1257

نحوه استفاده از VVV

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

محتوای پوشه wwwاما هنوز یه مشکل کوچیک وجود داره. هربار که پروژه جدیدی رو کلید میزنیم باید یکی از نسخه های وردپرس رو دوباره کپی کنیم و فایل hosts رو دوباره کانفیگ کنیم (که یه آدرس جدید به اون پروژه اختصاص بدیم).

برای حل این مشکل Brad Parbs کار جذابی انجام داده و یه ابزار خط فرمان به اسم VV برای خودکار کردن این فرایند ساخته. کار با این ابزار به قدری ساده و راحته که اصلا نیازی به توضیح دستورات اون نیست.

برای نصب این ابزار روی ویندوز باید پوشه اون رو جایی روی سیستمتون کلون کنید (بازهم پیشنهاد میکنم در مسیر root کلون بشه)

git clone https://github.com/bradp/vv.git

بعد از این مرحله آدرس پوشه کلون شده رو به لیست متغیر های سیستم عامل اضافه و بعد سیستم رو restart کنید.

مستندات VV توضیحات کاملی داره که خوندنش خالی از لطف نیست ولی خلاصه اون دستورات زیر هستن که کارتون رو راه میندازه.

دستور vv list

این دستور لیست تمام سایت های ساخته شده رو نشون میده.

دستور vv create

این دستور به صورت یک فرایند Q&A (پرسش و پاسخ) از شما سوالاتی مثل مشخص کردن نام دامنه، اضافه کردن محتوای آزمایشی به پروژه و یا اضافه کردن یک پایگاه داده آماده و … رو میپرسه. همچنین اگر این ابزار رو در کنار پوشه VVV نصب کرده باشید این دستور محل پوشه رو تشخیص میده. درغیر این صورت از شما درخواست میکنه که آدرس نصب VVV رو وارد کنید. (پوشه test در تصویر بالا توسط همین دستور ساخته شده).

دستور vv delete

این دستور برعکس فرایند بالا عمل میکنه و برای حذف سایت های ساخته شده استفاده میشه.

کلام پایانی

امیدوارم از این ابزار به راحتی استفاده کنید و از توسعه وردپرس با اون لذت ببرید. مثل همیشه اگر سوالی هست میتونید به من ایمیل بزنید و یا در بخش نظرات اعلام کنید.
به خاطر داشته باشید که خط فرمان رو به صورت run as administrator اجرا کنید تا پلاگین vagrant-hostsupdater دسترسی لازم برای ساخت خودکار دامنه رو داشته باشه. اگر از این مطلب استقبال بشه و فرصتی پیدا کنم یک مطلب هم درمورد Docker مینویسم و نقاط ضعف و قوتش رو با Vagrant مقایسه میکنم.

نظری در این مورد دارید؟ خوشحال می‌شم اون رو برام ارسال کنید