نسخه:

لاراول والت

معرفی

Valet یک محیط توسعه لاراول برای مینیمالیست های مک است. بدون ولگرد، بدون /etc/hosts فایل. حتی می توانید با استفاده از تونل های محلی سایت های خود را به صورت عمومی به اشتراک بگذارید. آره ما هم دوست داریم

Laravel Valet مک شما را طوری پیکربندی می‌کند که همیشه Nginx را در پس‌زمینه اجرا کند. سپس، با استفاده از DnsMasq ، Valet تمام درخواست‌های موجود در *.test دامنه را پراکسی می‌کند تا به سایت‌های نصب شده در دستگاه محلی شما اشاره کند.

به عبارت دیگر، یک محیط توسعه سریع لاراول که تقریباً از 7 مگابایت رم استفاده می کند. Valet جایگزین کاملی برای Vagrant یا Homestead نیست، اما اگر می‌خواهید اصول اولیه انعطاف‌پذیری داشته باشید، سرعت فوق‌العاده را ترجیح می‌دهید، یا روی دستگاهی با مقدار RAM محدود کار می‌کنید، یک جایگزین عالی ارائه می‌دهد.

خارج از جعبه، پشتیبانی Valet شامل، اما محدود به موارد زیر نیست:

با این حال، می توانید Valet را با درایورهای سفارشی خود گسترش دهید .

خدمتکار یا خانه

همانطور که ممکن است بدانید، لاراول Homestead ، یکی دیگر از محیط های توسعه محلی لاراول را ارائه می دهد. Homestead و Valet از نظر مخاطبان مورد نظر و رویکردشان به توسعه محلی متفاوت هستند. Homestead یک ماشین مجازی کامل اوبونتو را با پیکربندی خودکار Nginx ارائه می دهد. اگر می خواهید یک محیط توسعه لینوکس کاملا مجازی شده یا در ویندوز / لینوکس هستید، Homestead یک انتخاب فوق العاده است.

Valet فقط از Mac پشتیبانی می کند و از شما می خواهد PHP و یک سرور پایگاه داده را مستقیماً روی دستگاه محلی خود نصب کنید. این به راحتی با استفاده از Homebrew با دستوراتی مانند brew install php و به دست می آید brew install mysql . Valet یک محیط توسعه محلی فوق العاده سریع با حداقل مصرف منابع را فراهم می کند، بنابراین برای توسعه دهندگانی که فقط به PHP/MySQL نیاز دارند و به یک محیط توسعه کاملا مجازی نیاز ندارند، عالی است.

هر دو Valet و Homestead گزینه های عالی برای پیکربندی محیط توسعه Laravel شما هستند. کدام یک را انتخاب می کنید به سلیقه شخصی شما و نیازهای تیم شما بستگی دارد.

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

Valet به macOS و Homebrew نیاز دارد . قبل از نصب، باید مطمئن شوید که هیچ برنامه دیگری مانند Apache یا Nginx به پورت 80 دستگاه محلی شما متصل نیست.

  • Homebrew را به آخرین نسخه نصب یا به روز رسانی کنید brew update .
  • PHP 7.4 را با استفاده از Homebrew از طریق نصب کنید brew install php .
  • Composer را نصب کنید .
  • Valet را با Composer از طریق نصب کنید composer global require laravel/valet . مطمئن شوید که ~/.composer/vendor/bin دایرکتوری در "PATH" سیستم شما باشد.
  • دستور را اجرا کنید valet install . این کار Valet و DnsMasq را پیکربندی و نصب می کند و شبح Valet را برای راه اندازی هنگام راه اندازی سیستم شما ثبت می کند.

پس از نصب Valet، *.test با استفاده از دستوری مانند ping هر دامنه را در ترمینال خود پینگ کنید ping foobar.test . اگر Valet به درستی نصب شده باشد، باید ببینید که این دامنه در پاسخ می‌دهد 127.0.0.1 .

هر بار که دستگاه شما بوت می شود، Valet به طور خودکار دیمون خود را شروع می کند. valet start پس از اتمام نصب اولیه Valet، دیگر نیازی به اجرا یا اجرای valet install مجدد وجود ندارد .

استفاده از یک دامنه دیگر

به طور پیش فرض، Valet پروژه های شما را با استفاده از .test TLD ارائه می دهد. اگر می خواهید از دامنه دیگری استفاده کنید، می توانید با استفاده از valet tld tld-name دستور این کار را انجام دهید.

برای مثال، اگر می‌خواهید به .app جای استفاده از .test ، اجرا کنید valet tld app و Valet پروژه‌های شما را به صورت خودکار شروع به سرویس دهی می‌کند *.app .

پایگاه داده

اگر به پایگاه داده نیاز دارید، MySQL را با اجرای brew install mysql@5.7 در خط فرمان خود امتحان کنید. پس از نصب MySQL، می توانید آن را با استفاده از brew services start mysql@5.7 دستور شروع کنید. 127.0.0.1 سپس می توانید با استفاده از root نام کاربری و یک رشته خالی برای رمز عبور به پایگاه داده متصل شوید .

نسخه های پی اچ پی

Valet به شما امکان می دهد نسخه های PHP را با استفاده از valet use php@version دستور تغییر دهید. Valet نسخه PHP مشخص شده را از طریق Brew نصب می کند اگر قبلاً نصب نشده باشد:

valet use php@7.2
 
valet use php

Valet فقط یک نسخه PHP را در یک زمان ارائه می دهد، حتی اگر چندین نسخه PHP را نصب کرده باشید.

تنظیم مجدد نصب

اگر در اجرای صحیح نصب Valet خود با مشکل مواجه هستید، اجرای composer global update دستور به دنبال آن valet install نصب شما را بازنشانی می کند و می تواند مشکلات مختلفی را حل کند. در موارد نادر ممکن است لازم باشد که Valet را با اجرای valet uninstall --force و به دنبال آن "بازنشانی سخت" انجام دهید valet install .

ارتقاء

می توانید نصب Valet خود را با استفاده از composer global update دستور موجود در ترمینال خود به روز کنید. پس از ارتقاء، اجرای این دستور خوب است valet install تا Valet بتواند در صورت لزوم، فایل های پیکربندی شما را ارتقا دهد.

سایت های سرویس دهی

پس از نصب Valet، آماده شروع سرویس دهی به سایت ها هستید. Valet دو دستور را برای کمک به شما در ارائه خدمات به سایت های لاراول ارائه می دهد: park و link .

دستور park _

  • با اجرای چیزی شبیه به یک دایرکتوری جدید در مک خود ایجاد کنید mkdir ~/Sites . بعد، cd ~/Sites و اجرا کنید valet park . این دستور فهرست کاری فعلی شما را به عنوان مسیری که Valet باید برای سایت‌ها جستجو کند، ثبت می‌کند.
  • بعد، یک سایت لاراول جدید در این دایرکتوری ایجاد کنید: laravel new blog .
  • http://blog.test در مرورگر خود باز کنید

این تمام چیزی است که در آن وجود دارد. اکنون، هر پروژه لاراول که در فهرست "پارک شده" خود ایجاد می کنید، به طور خودکار با استفاده از کنوانسیون ارائه می شود http://folder-name.test .

این link دستور همچنین ممکن است برای سرویس دادن به سایت های لاراول شما استفاده شود. این دستور در صورتی مفید است که بخواهید یک سایت را در یک دایرکتوری ارائه دهید و نه کل دایرکتوری را.

  • برای استفاده از دستور، به یکی از پروژه های خود بروید و valet link app-name در ترمینال خود اجرا کنید. Valet یک پیوند نمادین ایجاد می کند که در ~/.config/valet/Sites آن به فهرست کاری فعلی شما اشاره می کند.
  • پس از اجرای link دستور، می توانید به سایت در مرورگر خود در آدرس دسترسی پیدا کنید http://app-name.test .

برای مشاهده لیستی از همه دایرکتوری های پیوند شده خود، valet links دستور را اجرا کنید. شما می توانید valet unlink app-name برای از بین بردن پیوند نمادین استفاده کنید.

می توانید valet link برای سرویس دهی به یک پروژه از چندین (زیر) دامنه استفاده کنید. برای افزودن یک زیر دامنه یا دامنه دیگری به پروژه خود valet link subdomain.app-name از پوشه پروژه اجرا کنید.

ایمن سازی سایت ها با TLS

به طور پیش فرض، Valet سایت ها را از طریق HTTP ساده ارائه می دهد. با این حال، اگر می خواهید یک سایت را با استفاده از HTTP/2 از طریق TLS رمزگذاری شده ارائه کنید، از secure دستور استفاده کنید. به عنوان مثال، اگر سایت شما توسط Valet در دامنه ارائه می شود laravel.test ، باید دستور زیر را برای ایمن سازی آن اجرا کنید:

valet secure laravel

برای "ناامن" کردن یک سایت و بازگشت به سرویس دادن به ترافیک آن از طریق HTTP ساده، از unsecure دستور استفاده کنید. مانند secure دستور، این دستور نام میزبانی را می‌پذیرد که می‌خواهید ایمن نکنید:

valet unsecure laravel

ارائه یک سایت پیش فرض

گاهی اوقات، ممکن است بخواهید 404 هنگام بازدید از یک test دامنه ناشناخته، Valet را برای سرویس دادن به یک سایت "پیش‌فرض" به جای a پیکربندی کنید. برای انجام این کار، می‌توانید default گزینه‌ای را به فایل پیکربندی خود اضافه کنید ~/.config/valet/config.json که حاوی مسیری به سایت است که باید به عنوان سایت پیش‌فرض شما عمل کند:

"default": "/Users/Sally/Sites/foo",

اشتراک گذاری سایت ها

Valet حتی شامل دستوری برای به اشتراک گذاشتن سایت های محلی شما با جهان است، که راهی آسان برای آزمایش سایت شما در دستگاه های تلفن همراه یا به اشتراک گذاری آن با اعضای تیم و مشتریان ارائه می دهد. پس از نصب Valet نیازی به نصب نرم افزار اضافی نیست.

اشتراک گذاری سایت ها از طریق Ngrok

برای اشتراک گذاری یک سایت، به دایرکتوری سایت در ترمینال خود بروید و valet share دستور را اجرا کنید. یک URL در دسترس عموم در کلیپ بورد شما درج می شود و آماده است که مستقیماً در مرورگر شما جایگذاری شود یا با تیم شما به اشتراک گذاشته شود.

برای توقف اشتراک‌گذاری سایت خود، Control + C برای لغو فرآیند، ضربه بزنید.

می توانید پارامترهای اضافی را به دستور share ارسال کنید، مانند valet share --region=eu . برای اطلاعات بیشتر، به مستندات ngrok مراجعه کنید .

اشتراک گذاری سایت ها از طریق Expose

اگر Expose را نصب کرده‌اید، می‌توانید با رفتن به فهرست سایت در ترمینال خود و اجرای expose دستور، سایت خود را به اشتراک بگذارید. برای پارامترهای اضافی خط فرمان که از آن پشتیبانی می‌کند، با اسناد آشکارسازی مشورت کنید. پس از اشتراک‌گذاری سایت، Expose نشانی اینترنتی قابل اشتراک‌گذاری را نشان می‌دهد که ممکن است در دستگاه‌های دیگر خود یا در بین اعضای تیم استفاده کنید.

برای توقف اشتراک‌گذاری سایت خود، Control + C برای لغو فرآیند، ضربه بزنید.

اشتراک گذاری سایت ها در شبکه محلی شما

Valet به طور پیش فرض ترافیک ورودی را به 127.0.0.1 رابط داخلی محدود می کند. به این ترتیب دستگاه توسعه شما در معرض خطرات امنیتی اینترنت قرار نمی گیرد.

اگر می خواهید به دستگاه های دیگر در شبکه محلی خود اجازه دهید از طریق آدرس IP دستگاه شما به سایت های Valet در دستگاه شما دسترسی داشته باشند (به عنوان مثال: 192.168.1.10/app-name.test )، باید به صورت دستی فایل پیکربندی Nginx مناسب برای آن سایت را ویرایش کنید تا محدودیت دستورالعمل را حذف کنید listen . با حذف 127.0.0.1: پیشوند در دایرکتیو برای پورت های 80 و 443.

valet secure اگر روی پروژه اجرا نکرده‌اید ، می‌توانید با ویرایش /usr/local/etc/nginx/valet/valet.conf فایل، دسترسی به شبکه را برای همه سایت‌های غیر HTTPS باز کنید. با این حال، اگر به سایت پروژه از طریق HTTPS سرویس می دهید (شما valet secure برای سایت اجرا کرده اید) باید ~/.config/valet/Nginx/app-name.test فایل را ویرایش کنید.

هنگامی که پیکربندی Nginx خود را به روز کردید، valet restart دستور اعمال تغییرات پیکربندی را اجرا کنید.

متغیرهای محیط خاص سایت

برخی از برنامه‌هایی که از چارچوب‌های دیگر استفاده می‌کنند ممکن است به متغیرهای محیط سرور بستگی داشته باشند، اما راهی برای پیکربندی آن متغیرها در پروژه شما ارائه نمی‌دهند. .valet-env.php Valet به شما اجازه می دهد تا با افزودن یک فایل در ریشه پروژه خود، متغیرهای محیطی خاص سایت را پیکربندی کنید . این متغیرها به آرایه جهانی اضافه خواهند شد $_SERVER :

<?php
 
// Set $_SERVER['key'] to "value" for the foo.test site...
return [
'foo' => [
'key' => 'value',
],
];
 
// Set $_SERVER['key'] to "value" for all sites...
return [
'*' => [
'key' => 'value',
],
];

خدمات پروکسی

گاهی اوقات ممکن است بخواهید دامنه Valet را به سرویس دیگری در دستگاه محلی خود پراکسی کنید. به عنوان مثال، ممکن است گاهی اوقات نیاز به اجرای Valet داشته باشید در حالی که یک سایت جداگانه در Docker نیز اجرا می کنید. با این حال، Valet و Docker هر دو نمی توانند همزمان به پورت 80 متصل شوند.

برای حل این مشکل، می توانید از proxy دستور ایجاد یک پروکسی استفاده کنید. برای مثال، می‌توانید تمام ترافیک را از http://elasticsearch.test به http://127.0.0.1:9200 :

valet proxy elasticsearch http://127.0.0.1:9200

می توانید با استفاده از unproxy دستور زیر یک پروکسی را حذف کنید:

valet unproxy elasticsearch

می‌توانید از proxies دستور برای فهرست کردن تمام پیکربندی‌های سایتی که پروکسی شده‌اند استفاده کنید:

valet proxies

درایورهای نوکر سفارشی

می‌توانید «درایور» Valet خود را بنویسید تا به برنامه‌های PHP در حال اجرا بر روی چارچوب یا CMS دیگری که توسط Valet پشتیبانی نمی‌شود، ارائه شود. هنگامی که Valet را نصب می کنید، یک ~/.config/valet/Drivers دایرکتوری ایجاد می شود که حاوی یک SampleValetDriver.php فایل است. این فایل شامل یک اجرای درایور نمونه برای نشان دادن نحوه نوشتن یک درایور سفارشی است. برای نوشتن درایور فقط باید سه روش را اجرا کنید: serves , isStaticFile و frontControllerPath .

هر سه متد مقادیر، و و را به عنوان آرگومان های خود دریافت $sitePath می $siteName کنند $uri . $sitePath مسیر کاملاً واجد شرایط به سایتی است که در دستگاه شما ارائه می شود، مانند /Users/Lisa/Sites/my-project . $siteName بخش "میزبان" / "نام سایت" دامنه ( ) است my-project . $uri URI درخواست ورودی ( /foo/bar ) است .

هنگامی که درایور Valet سفارشی خود را تکمیل کردید، آن را ~/.config/valet/Drivers با استفاده از FrameworkValetDriver.php قرارداد نامگذاری در دایرکتوری قرار دهید. به عنوان مثال، اگر در حال نوشتن یک درایور سفارشی برای وردپرس هستید، نام فایل شما باید باشد WordPressValetDriver.php .

بیایید به یک نمونه پیاده‌سازی از هر روشی که درایور Valet سفارشی شما باید اجرا کند نگاهی بیاندازیم.

روش serves _

اگر راننده شما باید درخواست ورودی را رسیدگی کند، روش serves باید برگردد . true در غیر این صورت، روش باید برگردد false . بنابراین، در این روش باید سعی کنید تعیین کنید که آیا پروژه داده شده $sitePath حاوی پروژه ای از نوع مورد نظر شما است یا خیر.

به عنوان مثال، بیایید وانمود کنیم که داریم یک WordPressValetDriver . روش ما serves ممکن است چیزی شبیه به این باشد:

/**
* Determine if the driver serves the request.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return bool
*/
public function serves($sitePath, $siteName, $uri)
{
return is_dir($sitePath.'/wp-admin');
}

روش isStaticFile _

باید isStaticFile تعیین کند که آیا درخواست ورودی برای فایلی است که "ایستا" است، مانند یک تصویر یا یک شیوه نامه. اگر فایل ثابت است، روش باید مسیر کاملا واجد شرایط را به فایل استاتیک روی دیسک برگرداند. اگر درخواست دریافتی مربوط به یک فایل ثابت نیست، متد باید به صورت زیر برگردد false :

/**
* Determine if the incoming request is for a static file.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string|false
*/
public function isStaticFile($sitePath, $siteName, $uri)
{
if (file_exists($staticFilePath = $sitePath.'/public/'.$uri)) {
return $staticFilePath;
}
 
return false;
}

متد isStaticFile فقط در صورتی فراخوانی می شود که serves متد برای درخواست ورودی برگردد true و URI درخواست نباشد / .

روش frontControllerPath _

این frontControllerPath روش باید مسیر کاملا واجد شرایط را به "کنترل کننده جلو" برنامه شما برگرداند، که معمولاً فایل "index.php" یا معادل آن است:

/**
* Get the fully resolved path to the application's front controller.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public/index.php';
}

رانندگان محلی

اگر می خواهید برای یک برنامه یک درایور سفارشی Valet تعریف کنید، یک LocalValetDriver.php در دایرکتوری اصلی برنامه ایجاد کنید. درایور سفارشی شما ممکن است ValetDriver کلاس پایه را گسترش دهد یا یک درایور خاص برنامه موجود را گسترش دهد مانند LaravelValetDriver :

class LocalValetDriver extends LaravelValetDriver
{
/**
* Determine if the driver serves the request.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return bool
*/
public function serves($sitePath, $siteName, $uri)
{
return true;
}
 
/**
* Get the fully resolved path to the application's front controller.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public_html/index.php';
}
}

سایر دستورات نوکر

فرمان شرح
valet forget این دستور را از یک پوشه "parked" اجرا کنید تا آن را از لیست پوشه پارک شده حذف کنید.
valet log فهرستی از گزارش‌های نوشته شده توسط سرویس‌های Valet را مشاهده کنید.
valet paths تمام مسیرهای "پارک شده" خود را مشاهده کنید.
valet restart دیمون Valet را مجددا راه اندازی کنید.
valet start دیمون Valet را راه اندازی کنید.
valet stop دیمون Valet را متوقف کنید.
valet trust فایل‌های sudoers را برای Brew و Valet اضافه کنید تا اجازه دهید دستورات Valet بدون درخواست رمز عبور اجرا شوند.
valet uninstall Uninstall Valet: دستورالعمل های حذف دستی را نشان می دهد. یا --force پارامتر را برای حذف تهاجمی تمام Valet ارسال کنید.

فهرست ها و فایل های نوکر

ممکن است هنگام عیب‌یابی مشکلات محیط Valet، اطلاعات فهرست و فایل زیر برای شما مفید باشد:

مسیر فایل شرح
~/.config/valet/ شامل تمام تنظیمات Valet است. ممکن است بخواهید از این پوشه یک نسخه پشتیبان تهیه کنید.
~/.config/valet/dnsmasq.d/ شامل پیکربندی DNSMasq است.
~/.config/valet/Drivers/ شامل درایورهای سفارشی Valet.
~/.config/valet/Extensions/ شامل برنامه‌های افزودنی / دستورات Valet است.
~/.config/valet/Nginx/ شامل تمام تنظیمات سایت Nginx ایجاد شده توسط Valet است. این فایل ها هنگام اجرای دستورات، و دوباره ساخته install می secure شوند tld .
~/.config/valet/Sites/ شامل تمام پیوندهای نمادین برای پروژه های مرتبط است.
~/.config/valet/config.json فایل پیکربندی اصلی Valet
~/.config/valet/valet.sock سوکت PHP-FPM که توسط پیکربندی Nginx Valet استفاده می شود. این تنها در صورتی وجود خواهد داشت که PHP به درستی اجرا شود.
~/.config/valet/Log/fpm-php.www.log ورود کاربر برای خطاهای PHP.
~/.config/valet/Log/nginx-error.log ورود کاربر برای خطاهای Nginx.
/usr/local/var/log/php-fpm.log گزارش سیستم برای خطاهای PHP-FPM.
/usr/local/var/log/nginx شامل گزارش های دسترسی و خطا به Nginx است.
/usr/local/etc/php/X.X/conf.d حاوی *.ini فایل هایی برای تنظیمات مختلف پیکربندی PHP.
/usr/local/etc/php/X.X/php-fpm.d/valet-fpm.conf فایل پیکربندی استخر PHP-FPM.
~/.composer/vendor/laravel/valet/cli/stubs/secure.valet.conf پیکربندی پیش‌فرض Nginx که برای ساخت گواهی‌های سایت استفاده می‌شود.