لاراول والت
- معرفی
- نصب و راه اندازی
- سایت های سرویس دهی
- اشتراک گذاری سایت ها
- متغیرهای محیط خاص سایت
- خدمات پروکسی
- درایورهای نوکر سفارشی
- سایر دستورات نوکر
- فهرست ها و فایل های نوکر
معرفی
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
_
این
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 که برای ساخت گواهیهای سایت استفاده میشود. |