- چهارشنبه 30 خرداد 1397 ساعت 10:06
- 5.6.29
- در حال تکمیل
- منقضی شده
نصب
الزامات سرور
فریمورک لاراول الزامات خیلی کمی دارد. البته، تمام این الزامات توسط ماشین مجازی Homestead لاراول برآورده میشوند، بنابراین، استفاده از Homestead به عنوان محیط توسعه لاراول به صورت لوکال به شدت توصیه میشود.
با این حال؛ اگر از Homestead استفاده نمیکنید، اطمینان حاصل کنید که سرور شما الزامات زیر را برآورده میکند:
- حداقل ورژن PHP 7.1.3
- اکستنشن OpenSSL PHP
- اکستنشن PDO PHP
- اکستنشن Mbstring PHP
- اکستنشن Tokenizer PHP
- اکستنشن XML PHP
- اکستنشن Ctype PHP
- اکستنشن JSON PHP
نصب لاراول
لاراول برای مدیریت وابستگیها از کامپوزر استفاده میکند. بنابراین، قبل از استفاده از لاراول، اطمینان حاصل کنید که کامپوزر روی ماشین شما نصب شده است.
به وسیله نصب کننده لاراول
ابتدا، با استفاده از کامپوزر، لاراول را نصب کنید:
composer global require "laravel/installer"
دایرکتوری composer/vendor/bin را در متغییر $PATH قرار دهید، در نتیجه سیستم، محل قرار گرفتن فایل اجرایی لاراول را میداند. بسته به سیستم عامل شما، این دایرکتوری در مکانهای مختلفی قرار میگیرد؛ با این حال، برخی از محلهای متداول شامل موارد زیر هستند:
- مکاواس: در
$HOME/.composer/vendor/bin
- توزیعهای گنو/لینوکس: در
$HOME/.config/composer/vendor/bin
هنگامی که نصب انجام شد، کامند laravel new
آخرین نسخه لاراول را در دایرکتوری مشخص شده نصب میکند. برای نمونه، کامند laravel new blog
یک دایرکتوری با نام blog
میسازد و آخرین نسخه لاراول را به همراه تمام وابستگیهای آن نصب میکند:
laravel new blog
به وسیله دستور Create-Project کامپوزر
روش دیگر نصب لاراول، اجرای کامند create-project
کامپوزر در ترمینال است.
composer create-project --prefer-dist laravel/laravel blog
سرور توسعه لوکال
اگر PHP را به صورت لوکال نصب کردهاید و میخواهید از سرور توسعه داخلی PHP برای سِرو (serve) کردن اپلیکیشن خود استفاده کنید، میتوانید از دستور serve آرتیسان استفاده کنید. این دستور یک سرور توسعه در http://localhost:8000
را ارائه میدهد:
php artisan serve
البته، گزینههای توسعه لوکال قدرتمندتری به وسیله Homestead و Valet در دسترس هستند.
پیکربندی
دایرکتوری پابلیک
بعد از نصب لاراول، باید روت وب / داکیومنت سرور را به عنوان دایرکتوری public قرار دهید. فایل index.php در این دایرکتوری به عنوان فرانت کنترلر وظیفه هندل کردن تمامی ریکوئستهای وارده به اپلیکیشن را به عهده دارد.
اصطلاحات فنی
فرانت کنترلر یک الگوی طراحی نرمافزار (Software Design Pattern) است. در ابن دیزاین پترن، یک فایل (معمولا index.php) به عنوان یک کنترلر مسئول هندل کردن کلیه ریکوئستها است و این فایل، کلیه فایلهای بوتاسترپ و فایلهای مورد نیاز برای لود اولیه فریمورک یا اپلیکیشن را آمادهسازی و فراخوانی میکند. این ساختار برای دولوپرهای وباپلیکیشن، برای دستیابی به انعطافپذیری (flexibility) و استفاده مجدد بدون افزونگی (تکرار غیرضروری یا code redundancy)، بسیار سودمند و مفید است.
در مقابل این دیزاین پترن استفاده متناظر از هر فایل برای یک یا چند درخواست است. مثلا برای صفحه اصلی یک فایل، برای وبلاگ یک فایل و برای هندل کردن ریکوئستهای مربوط به پستهای وبلاگ نیز یک فایل وجود دارد که این روش به هیچ وجه توصیه نمیشود.
این فایل کنترلر با فایل کنترلر در الگوی معماری MVC تفاوت دارد. در واقع به زبان ساده، این فایل ریکوئستها را به مسیریابها هدایت میکنند تا طبق دستورات مسیریابی، کنترلر (در مدل MVC) مشخصی، ریسپانس (پاسخ) به ریکوئست را آماده سازد.
اصطلاحات فنی
افزونگی (تکرار غیرضروری یا Redundant code) به تکرار اطلاعات بین یک یا چند فایل میگویند. افزونگی تکرار ذخیرهسازی مقادیر یک یا بیش از یک صفت است. مثلا اگر حاصل یک معادله چندین بار محاسبه شود یا یک آرایه چندین بار مرتب (sort) شود و یا حتی دستوری را برای محاسباتی اجرا کنیم اما هیچگاه از این نتیجه از محاسبه استفاده نشود.
افزونگی طبیعی از ماهیت دادهها است، مثلا اشیا از یک جنس صفتی مشترک دارند، مثلا وضعیت انتشار مطالب، یک صفت مشترک دارند یا کارمندان یک شرکت اکثرا کارمند هستند (در مقایسه با مدیران و سایر ردهها).
البته گاهی این افزونگی به صورت عمدی و برای رسیدن به هدف دیگری مثلا افزایش سرعت (با index کردن) یا دسترسی راحتتر به محتوا (تکرار عنوانها در فهرست مطالب) است که به این نوع افزونگی، افزونگی تکنیکی میگویند.
نوع دیگری از افزونگی نیز وجود دارد که نه طبیعی است و نه تکنیکی و ناشی از رهیافت انتخاب شده برای طراحی و تولید سیستمهای کاربردی است. مثلا در دو مجموعه مجزا یا سلسله مراتبی قرار است به دادههای کاربر دسترسی داشته باشند ولی هر کدام با هدف کاربردی مجزا. به عنوان مثال فرض کنید دپارتمان مالی برای امور مالی و دپارتمان نیروی انسانی برای اهداف تشویق و تنبیه به اطلاعات شخصی و کاری کاربر نیاز دارند و میخواهند در دو مجموعه مجزا نگهداری شوند، این تکرار دادهها نیز نوعی افزونگی است.
فایلهای کانفیگ
تمام فایلهای کانفیگ فریمورک لاراول در دایرکتوری config نگهداری میشوند. همه آپشنها مستند شده است، در صورت تمایل نگاهی به فایلها بیاندازید و با آپشنهای در دسترس آشنا شوید.
پرمیشنهای دایرکتوری
پس از نصب لاراول، احتمالا نیاز به سِت کردن برخی پرمیشنها است. دایرکتوریهای داخل دایرکتوریهای storage
و bootstrap/cache
باید مجوز نوشتن (writable) توسط سرور را داشته باشند وگرنه لاراول اجرا نخواهد شد. اگر از ماشین مجازی Hoemstead استفاده میکنید، این پرمیشنها پیش از این سِت شدهاند.
کلید اپلیکیشن
کار بعدی که پس از نصب لاراول باید انجام دهید، تنظیم کلید اپلیکیشن با مقداردهی یک استرینگ رندوم است. اگر لاراول را با کامپوزر یا نصب کننده لاراول نصب کردهاید، این کلید قبلا به وسیله کامند php artisan key:generate
سِت شده است.
در حالت عادی، این استرینگ باید 32 کاراکتر طول داشته باشد. کلید در فایل محیط .env
میتواند سِت شود. اگر هنوز نام فایل .env.example
را به تغییر .env
ندادهاید، باید همین حالا انجامش دهید. اگر کلید اپلیکیشن سِت نشده باشد، سشنهای کاربران و سایر دادههای انکریپت شده امن نخواهند بود.
کانفیگهای اضافی
لاراول تقریبا به هیچ کانفیگ دیگری نیاز ندارد و آماده به کار است. مختار هستید که توسعه را شروع کنید! گرچه، ممکن است بخواهید فایل config/app.php
و داکیومنت آن را بازبینی کنید. آپشنهای مختلفی مانند زمان محلی (timezone
) و محلیسازی (locale
) جزو آپشنهای این فایل هستند که شاید بسته به اپلیکیشن خود بخواهید آنها را تغییر دهید.
همچنین ممکن است بخواهید چند کامپوننتهای دیگر لاراول را نیز کانفیگ کنید، از جمله:
- کش
- دیتابیس
- سشن
کانفیگ وب سرور
URLهای کاربرپسند
آپاچی
لاراول دارای فایل public /.htaccess
است که برای ساخت URLها بدون وجود index.php
در مسیر استفاده میشود. قبل از سِرو لاراول با آپاچی، مطمئن شوید که ماژول mod_rewrite
فعال باشد، در این صورت فایل .htaccess
توسط سرور پذیرفته میشود.
اگر فایل .htaccess
ارائه شده همراه لاراول با آپاچی شما کار نمیکند، جایگزین زیر را امتحان کنید:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Nginx
اگر از Nginx استفاده میکنید، دستور زیر در کانفیگهای سایت، تمام درخواستها را به index.php
هدایت میکند:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
البته، اگر از Homestead یا Valet استفاده میکنید، URLهای کاربرپسند به صورت خودکار کانفیگ شدهاند.
سایر پستهای داکیومنت
- پیشگفتار
- Release Notes ترجمه در ورژنهای بعدی
- راهنمای آپگرید ترجمه در ورژنهای بعدی
- Contribution Guide ترجمه در ورژنهای بعدی
- شروع
- نصب
- پیکربندی
- ساختار دایرکتوری ترجمه در ورژنهای بعدی
- Laravel Homestead ترجمه در ورژنهای بعدی
- Laravel Valet ترجمه در ورژنهای بعدی
- دپلویمنت ترجمه در ورژنهای بعدی
- مفاهیم معماری
- چرخه کار ریکوئستها
- Service Container ترجمه در ورژنهای بعدی
- سرویس پرووایدرها
- فسادها ترجمه در ورژنهای بعدی
- Contracts ترجمه در ورژنهای بعدی
- اصول اولیه
- مسیریابی
- میدلور
- حفاظت در مقابل حملات CSRF
- کنترلرها
- HTTP Requests ترجمه در ورژنهای بعدی
- HTTP Responses ترجمه در ورژنهای بعدی
- ویوها
- تولید URL
- HTTP Session ترجمه در ورژنهای بعدی
- Validation ترجمه در ورژنهای بعدی
- Error Handling ترجمه در ورژنهای بعدی
- Logging ترجمه در ورژنهای بعدی
- فرانتاند
- تمپلتهای Blade
- محلیسازی
- JavaScript & CSS Scaffolding ترجمه در ورژنهای بعدی
- Compiling Assets (Laravel Mix) ترجمه در ورژنهای بعدی
- امنیت
- Authentication ترجمه در ورژنهای بعدی
- API Authentication (Passport) ترجمه در ورژنهای بعدی
- Authorization ترجمه در ورژنهای بعدی
- Encryption ترجمه در ورژنهای بعدی
- Hashing ترجمه در ورژنهای بعدی
- Resetting Passwords ترجمه در ورژنهای بعدی
- مباحث عمیقتر
- Artisan Console ترجمه در ورژنهای بعدی
- Broadcasting ترجمه در ورژنهای بعدی
- Cache ترجمه در ورژنهای بعدی
- Collections ترجمه در ورژنهای بعدی
- Events ترجمه در ورژنهای بعدی
- File Storage ترجمه در ورژنهای بعدی
- Helpers ترجمه در ورژنهای بعدی
- Mail ترجمه در ورژنهای بعدی
- Notifications ترجمه در ورژنهای بعدی
- Package Development ترجمه در ورژنهای بعدی
- Queues ترجمه در ورژنهای بعدی
- Task Scheduling ترجمه در ورژنهای بعدی
- دیتابیس
- دیتابیس: شروع ترجمه در ورژنهای بعدی
- Database: Query Builder ترجمه در ورژنهای بعدی
- دیتابیس: صفحهبندی
- دیتابیس: مایگریشن
- دیتابیس: سیدینگ
- Redis ترجمه در ورژنهای بعدی
- Eloquent ORM
- Eloquent: Getting Started ترجمه در ورژنهای بعدی
- Eloquent: Relationships ترجمه در ورژنهای بعدی
- Eloquent: Collections ترجمه در ورژنهای بعدی
- Eloquent: Mutators ترجمه در ورژنهای بعدی
- Eloquent: API Resources ترجمه در ورژنهای بعدی
- Eloquent: Serialization ترجمه در ورژنهای بعدی
- Testing
- Testing: Getting Started ترجمه در ورژنهای بعدی
- HTTP Tests ترجمه در ورژنهای بعدی
- Browser Tests (Laravel Dusk) ترجمه در ورژنهای بعدی
- Database Testing ترجمه در ورژنهای بعدی
- Mocking ترجمه در ورژنهای بعدی
- Official Packages
- Laravel Cashier ترجمه در ورژنهای بعدی
- Envoy Task Runner ترجمه در ورژنهای بعدی
- Laravel Horizon ترجمه در ورژنهای بعدی
- API Authentication (Passport) ترجمه در ورژنهای بعدی
- Laravel Scout ترجمه در ورژنهای بعدی
- Laravel Socialite ترجمه در ورژنهای بعدی