تا کنون پشتههای مختلفی از جمله IIS ، Wamp ، Lamp ، Xampp ، Mamp و... برای اجرای سرور محلی طراحی شدهاند که توسعه دهندگان برای توسعه نرمافزارهای تحت وب خود از آنها استفاده میکردند. البته همگی تا این لحظه عملکرد خوبی را از خود نشان دادهاند و پیشرفت نرمافزارهای آنلاین را مدیون آنها هستیم. اما چه میشود اگر یک سرور شخصی داشته باشیم که وبسرور Nginx را درون خود اجرا کند و از بروزترین نسخههای PHP پشتیبانی کند ؟ ابزار Herd به تازگی از سوی توسعه دهندگان فریمورک لاراول (Laravel) منتشر شده که میتواند بهترین عملکرد را داشته باشد و کامپیوتر شما را به یک سرور محلی پر قدرت برای توسعه تبدیل کند.
خبر بد این است که این ابزار عالی تنها بر روی سیستمعامل مک قابل اجرا است و هنوز برای ویندوز و لینوکس در دسترس نیست. اگرچه میتوان به صورت دستی هم وبسرور Nginx را بر روی پشتههای مختلف نصب کرد، اما Herd پشتهای است که از ابتدا با Nginx سازگار است و از همان ابتدا همه چیز را برای اجرای عالی PHP و Laravel فراهم میکند. در ادامه به معرفی ویژگیهای آن خواهیم پرداخت.
Herd چیست؟
Herd یک پشتهی اجرا و هماهنگی وبسرور و PHP است که به کمک آن میتوان یک سرور محلی در سیستمعامل مک ایجاد کرد. این پشته توسط توسعه دهندگان فریمورک Laravel توسعه یافته و با برنامههای جانبی لاراول سازگاری کامل دارد. یکی از اهداف اصلی توسعه Herd ، سازگاری با Laravel Valet است که به سختی اجرا میشد و برای کمپایل کردن نیاز به پیکربندی و زمان بیشتری دارد. اما در Herd همه چیز از پیش کمپایل شده است و نیازی به پیکربندی و کمپایل اولیه ندارد. در واقع میتوانید پروژه خود را از Valet به Herd منتقل کنید و در آن با سرعت بیشتری به توسعه پروژههای خود بپردازید. البته توجه داشته باشید که در صورت نیاز میتوانید پروژه را به Valet بازگردانید و Herd در اصل پروژه تغییری ایجاد نمیکند. میتوانیم بگوییم پشتهی Herd یک نسخهی پیشرفتهتر از پشتهی Valet است.
ویژگیهای Herd نسبت به پشتههای دیگر
قطعاً Herd بدون دلیل توسعه نیافته و هر ابزاری که به تازگی وارد بازار میشود، قرار است با امکانات جدید خود، کار را برای توسعهدهندگان آسانتر کند. Herd هم از این قائده مستثنی نیست و آمده تا با ویژگیهای جدید خود، اجرای پروژهها را آسانتر کند. در ادامه ویژگیهای اصلی این پشته را بررسی خواهیم کرد:
-
اجرای سریعتر PHP : طبق چیزی که در صفحهی توضیحات Herd آمده، این پشته قادر است تا دقیقاً کدهای PHP را دو برابر سریعتر اجرا کند. در واقع کدهای باینری PHP از پیش درون Herd به صورت Static کمپیایل شده اند و همین امر سرعت پردازش کدهای پروژه را بیشتر میکند.
-
جلوگیری از نصب موارد اضافی : وقتی از پشتههای معمولی برای اجرای PHP استفاده میکنید، به همراه PHP دهها افزونه دیگر نیز نصب میشوند که در لاراول عملاً به وجود آنها نیاز نیست. بنابراین این افزونههای اضافی در حین اجرا، کدهای شما را بررسی میکنند و همیشه منتظر اجرای دستورات خود هستند. اجرای این افزونهها مقداری از پردازش را درگیر میکند و باعث کند شدن سرعت پاسخگویی PHP میشوند. از آنجا که Herd به صورت اختصاصی برای توسعهی Laravel طراحی شده، از نصب و اجرای افزونههای اضافی جلوگیری میکند و با این کار باعث افزایش سرعت اجرای پروژه میشود. با این حال در Herd هر افزونهای که نیاز است را همراه با خود PHP از پیش کمپایل کرده است. از آنجایی که PHP به همراه افزونههایش به صورت Static کمپایل شدهاند، در حالت عادی امکان افزودن افزونه جدید به آن وجود ندارد. اما شما میتوانید به صورت دستی افزونههای مد نظر خود را کمپایل کنید و با پسوند .so در فایل php.ini اضافه کنید.
-
نصب و کمپایل خودکار PHP : زمانی که Herd را نصب میکنید، آخرین نسخه از PHP Stable به همراه آن نصب شده است. اما گاهی پیش میآید که نیاز از برای پروژههای قدیمیتر از نسخههای پایینتر PHP استفاده کنیم. در پنل Herd این امکان فراهم شده است که تنها با یک کلیک، نسخه PHP مورد نظر خود را نصب کنیم. در حال حاظر Herd به همراه نسخهی 8.2 PHP ارائه میشود؛ اما شما میتوانید نسخههای پیشین PHP از 7.4 تا 8.3 Beta و Alpha را نیز نصب کنید و حتی از نسخههای آزمایشی نیز استفاده کنید. Herd به صورت خودکار نسخهی مدنظر شما را نصب و پیشکمپایل میکند. همچنین با هربار بروزرسانی، کمپایل PHP انجام میشود و نیازی به کمپایل دستی نیست. در کل Herd عمل کمپایل را همیشه انجام میدهد و کار را برای اجرای صحیح PHP آسان میکند.
-
Herd با هر دو روش GUI و CLI قابل استفاده است و کاربران بر اساس توانایی و عادت خود میتوانند با هر کدام از این روشها کانفیگ مدنظر خود را بر روی آن اعمال کنند.
-
استفاده از دامنه .test : یکی از ویژگیهای پشتهی Herd این است که شما میتوانید پروژههای خود را دقیقاً مشابه یک وبسایت با یک دامنه واقعی پیش ببرید و به جای استفاده از آدرس IP و یا آدرسهای localhost میتوانید از دامنه .test استفاده کنید. برای مثال اگر آدرس پروژه اصلی example.com باشد، شما میتوانید پروژه آزمایشگاهی خود را در آدرس example.test توسعه دهید. این آدرسدهی کمک میکند تا جای ممکن فضای هاست واقعی شبیه سازی شود و توسعه پروژه به نزدیکترین حالت ممکن به واقعیت پیش برود.
-
استفاده پیشفرض از وبسرور Nginx : بیشتر پشتهها از وبسرور Apache برای اجرای PHP استفاده میکنند. اما در Herd به صورت پیشفرض از وبسرور Nginx استفاده شده. این وبسرور قدرتمند تا 200 درصد پرسرعتتر از Apache عمل میکند و هماهنگی فوقالعادهای را بین PHP و MySQL برقرار میکند.
در حال حاضر Herd از Extensions افزونههای زیر پشتیبانی میکند:
intl, pdo_sqlite, sqlite3, curl, openssl, tokenizer, bcmath, bz2, calendar, dba, ftp, iconv, mysqli, mbstring, xml, simplexml, ctype, dom, pdo, filter, session, zlib, fileinfo, pdo_mysql, posix, sockets, shmop, sodium, sysvmsg, sysvsem, sysvshm, gd, zip, gmp, redis, xmlwriter, phar, exif, xmlreader, readline, pcntl, soap, imagick, ffi, opcache
چگونه میتوان از Herd استفاده کرد؟
نصب و استفاده از Herd بسیار آسان است. کافی است فایل پکیج آن را با فرمت DWG از وبسایت رسمی دانلود و اجرا کنید. سپس نماد Herd به لیست برنامهها افزوده میشود و میتوانید میانبر آن را به لیست اپلیکیشنهای پرکاربرد خود اضافه کنید. توجه داشته باشید که با نصب Herd ، همهی برنامههای مورد نیاز مانند PHP ، Laravel و Composer نیز نصب میشوند و شما نیازی انجام هیچ کار دیگری نخواهید داشت.
سخن پایانی
قطعاً افرادی هستند که دیوانهوار عاشق Laravel هستند و به صورت تخصصی پروژههای خود را بر روی آن پیادهسازی میکنند. توسعهدهندگان لاراول نیز نیاز آنها را درک کردهاند و با انتشار Herd نشان دادند که برای کاربران لاراول ارزش قائل میشوند. البته جای ناراحتی است که این پشته تنها برای سیستمعامل مک منتشر شده و هنوز هیچ خبری از توسعه آن برای ویندوز و لینوکس نیست. از آنجا که Herd به صورت کاملاً Native طراحی شده و چند سکویی نیست، طبیعی است که توسعه آن برای هرکدام از سیستمعاملها زمانبر باشد. Herd به دلیل قابلیت کمپایل کردن PHP باید Native باشد و احتمالاً با یکی از دو زبان C و یا Object-C نوشته شده است. نکته قابل توجه دیگر این است که Herd با فریمورک NativePHP نیز سازگاری دارد و خود لاراول هم استفاده از این دو را با هم توصیه کرده است.