لاراول مقدمات و آشنایی با لاراول آموزش نصب لاراول ۱۳ از طریق Composer

آموزش کامل نصب و راه‌اندازی Laravel 13 با استفاده از Composer

فهرست مطالب


مقدمه و پیش‌نیازهای حیاتی

Laravel 13 یک جهش معماری قابل توجه در تاریخ این فریم‌ورک محبوب PHP محسوب می‌شود. این نسخه که در اوایل سال ۲۰۲۶ منتشر شده، اولین نسخه از لاراول است که به طور کامل وابستگی خود را به Symfony HttpFoundation قطع کرده و از موتور HTTP کاملاً بازنویسی‌شده داخلی به نام Laravel Nucleus استفاده می‌کند. این تغییر بنیادین باعث افزایش ۴۰ درصدی سرعت در پردازش درخواست‌های RESTful و کاهش ۳۰ درصدی مصرف حافظه نسبت به نسخه ۱۲ شده است.

⚠️ هشدار حیاتی - تغییرات بنیادین در نیازمندی‌ها: لاراول ۱۳ حداقل نیازمند PHP 8.4 است و دیگر از PHP 8.2 و 8.3 پشتیبانی نمی‌کند. اگر سرور شما هنوز روی این نسخه‌ها قرار دارد، ابتدا باید فرآیند ارتقاء PHP را انجام دهید. همچنین Composer نسخه ۲.۸ یا بالاتر برای مدیریت صحیح وابستگی‌های جدید الزامی است.

در این راهنما، فرآیند نصب لاراول ۱۳ را از سطح صفر (Zero-Day) تا رسیدن به یک پروژه کاملاً عملیاتی پوشش خواهیم داد. تمام مراحل با در نظر گرفتن بهترین شیوه‌های DevOps و اصول Twelve-Factor App نوشته شده‌اند.


آشنایی با Composer و نقش آن در اکوسیستم لاراول

Composer یک Dependency Manager برای PHP است که فراتر از یک نصب‌کننده ساده عمل می‌کند. این ابزار با الهام از npm در Node.js و bundler در Ruby طراحی شده اما فلسفه منحصربه‌فردی را برای مدیریت بسته‌های PHP ارائه می‌دهد.

چرا Composer برای لاراول ۱۳ حیاتی است؟

لاراول ۱۳ از ۴۷ بسته (Package) مستقل تشکیل شده که هر کدام از طریق Composer مدیریت می‌شوند. بدون Composer، شما باید:

Composer تمام این وظایف را از طریق فایل composer.json خودکارسازی می‌کند.

تفاوت Composer با PEAR و PECL

برخلاف PEAR که بسته‌ها را به صورت سراسری (Global) نصب می‌کرد، Composer رویکرد پروژه‌محور (Project-Based) دارد. یعنی هر پروژه لاراول ۱۳ وابستگی‌های مخصوص خود را در دایرکتوری vendor/ نگهداری می‌کند. این رویکرد مزایای زیر را دارد:


پیش‌نیازهای سیستمی برای Laravel 13

📋 جدول نیازمندی‌های اجباری (Mandatory Requirements): موارد زیر حداقل نیازمندی‌هایی هستند که بدون آنها Laravel 13 حتی اجرا نخواهد شد. موارد پیشنهادی (Recommended) برای عملکرد بهینه در ادامه ذکر شده‌اند.

مؤلفه حداقل نسخه نسخه پیشنهادی توضیحات فنی
PHP 8.4.0 8.4.5+ پشتیبانی از Just-In-Time Compilation جدید PHP 8.4
Composer 2.8.0 2.8.7+ پشتیبانی از Parallel Downloads و Pool Optimizer جدید
OpenSSL 3.2.0 3.3.0 برای رمزنگاری Session و Encryption کلیدها
PDO 8.4 8.4 برای ارتباط با دیتابیس‌های مختلف
Mbstring 8.4 8.4 پردازش رشته‌های UTF-8
Tokenizer 8.4 8.4 مورد نیاز برای تحلیل کد و Autoloading Optimized
XML 8.4 8.4 برای پردازش فایل‌های کانفیگ XML
Ctype 8.4 8.4 بررسی نوع کاراکترها
JSON 8.4 8.4 پردازش JSON در API Responseها
BCMath 8.4 8.4 محاسبات دقیق ریاضی برای پرداخت‌ها
Fileinfo 8.4 8.4 تشخیص MIME Type فایل‌های آپلودی

افزونه‌های اختیاری اما توصیه شده

# برای بهبود عملکرد در Production
opcache.enable=1
opcache.jit=tracing
opcache.jit_buffer_size=100M

# برای ارتباط با دیتابیس‌های خاص
pdo_mysql  # برای MySQL/MariaDB
pdo_pgsql  # برای PostgreSQL
pdo_sqlsrv # برای SQL Server
redis      # برای Cache Driver و Queue
imagick    # برای پردازش پیشرفته تصاویر

نصب و پیکربندی PHP 8.4

نصب روی اوبونتو ۲۴.۰۴ LTS

# اضافه کردن مخزن Ondřej Surý (معتبرترین مخزن PHP)
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

# نصب PHP 8.4 به همراه افزونه‌های ضروری
sudo apt install -y php8.4 php8.4-cli php8.4-common \
php8.4-mbstring php8.4-xml php8.4-curl php8.4-zip \
php8.4-bcmath php8.4-gd php8.4-intl php8.4-opcache \
php8.4-readline php8.4-sqlite3 php8.4-mysql php8.4-pgsql

# تأیید نصب
php -v
# باید خروجی مشابه زیر دریافت کنید:
# PHP 8.4.5 (cli) (built: Mar 14 2026 10:45:22) ( NTS )
# Copyright (c) The PHP Group
# Zend Engine v4.4.5, Copyright (c) Zend Technologies
#     with Zend OPcache v8.4.5, Copyright (c), by Zend Technologies

نصب روی macOS با Homebrew

# به‌روزرسانی Homebrew
brew update
brew upgrade

# اضافه کردن tap رسمی PHP
brew tap shivammathur/php

# نصب PHP 8.4
brew install shivammathur/php/php@8.4

# لینک کردن PHP 8.4 به عنوان نسخه پیش‌فرض
brew link --overwrite --force php@8.4

# نصب Composer (در ادامه جزئیات بیشتر)
brew install composer

# تأیید نصب
php -v

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

برای ویندوز، توصیه می‌شود از WSL2 (Windows Subsystem for Linux) استفاده کنید، زیرا Laravel 13 از قابلیت‌های جدید Linux Kernel مانند io_uring برای بهبود عملکرد فایل‌سیستم بهره می‌برد. اگر اصرار به استفاده از ویندوز نیتیو دارید:

  1. از windows.php.net/download نسخه Non-Thread Safe PHP 8.4 را دانلود کنید
  2. فایل‌ها را در C:\php84 استخراج نمایید
  3. مسیر C:\php84 را به PATH سیستم اضافه کنید
  4. فایل php.ini-development را به php.ini تغییر نام دهید
  5. افزونه‌های ضروری را از حالت کامنت خارج کنید

نصب Composer در سیستم‌عامل‌های مختلف

نصب Composer روی لینوکس و مک

# روش اول: نصب سراسری (Global) با استفاده از Installer رسمی
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

# بررسی صحت امضای دیجیتال Installer
php -r "if (hash_file('sha384', 'composer-setup.php') === 'EXPECTED_HASH') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); }"

# اجرای Installer
php composer-setup.php --install-dir=/usr/local/bin --filename=composer

# حذف فایل Installer
php -r "unlink('composer-setup.php');"

# تأیید نصب
composer --version
# خروجی: Composer version 2.8.7 2026-03-10 14:23:45

🔐 نکته امنیتی مهم: هش SHA384 در کد بالا باید با آخرین هش موجود در صفحه کلیدهای عمومی Composer تطبیق داده شود. هرگز از Installerهای نامعتبر استفاده نکنید.

نصب Composer روی ویندوز

# اگر از WSL2 استفاده می‌کنید، دستورات لینوکس را اجرا کنید
# برای ویندوز نیتیو:

# ۱. دانلود Composer-Setup.exe از getcomposer.org
# ۲. اجرای فایل نصبی با دسترسی Administrator
# ۳. در مرحله انتخاب PHP executable، مسیر php.exe را مشخص کنید (مثلاً C:\php84\php.exe)
# ۴. گزینه "Add PHP to system path" را فعال کنید

# تأیید نصب در PowerShell
composer --version

نصب لاراول ۱۳ از طریق Composer

لاراول ۱۳ دو مسیر اصلی برای نصب ارائه می‌دهد که هر کدام مزایا و کاربردهای خاص خود را دارند.

روش اول: نصب سراسری لاراول اینستالر

این روش پیشنهادی برای توسعه‌دهندگانی است که به صورت مکرر پروژه لاراول می‌سازند.

# نصب سراسری Laravel Installer نسخه ۱۳
composer global require laravel/installer:^13.0

# اطمینان از اضافه شدن مسیر Composer به PATH
# برای Bash/ZSH (لینوکس/مک)
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

# برای Fish Shell
echo 'set -gx PATH $HOME/.composer/vendor/bin $PATH' >> ~/.config/fish/config.fish
source ~/.config/fish/config.fish

# حالا می‌توانید یک پروژه جدید بسازید
laravel new my-laravel13-project

# در حین اجرا، Installer از شما سوالاتی می‌پرسد:
# - Would you like to install a starter kit? (None/Breeze/Jetstream)
# - Which testing framework do you prefer? (Pest/PHPUnit)
# - Would you like to initialize a Git repository? (Yes/No)
# - Which database will you use? (SQLite/MySQL/PostgreSQL/SQL Server)

روش دوم: نصب از طریق Composer Create-Project

این روش برای کسانی که کنترل دقیق‌تری بر فرآیند نصب می‌خواهند یا در محیط‌های CI/CD کار می‌کنند مناسب‌تر است.

# نصب مستقیم لاراول ۱۳ با Composer
composer create-project laravel/laravel:^13.0 my-awesome-app

# اگر نیاز به نسخه دقیق دارید (مثلاً ۱۳.۰.۲)
composer create-project laravel/laravel:13.0.2 my-awesome-app

# نصب با تنظیمات سفارشی (بدون تعامل)
composer create-project laravel/laravel my-awesome-app "13.*" \
    --prefer-dist \
    --no-interaction \
    --no-progress \
    --repository='{"type":"composer","url":"https://repo.packagist.org"}'

# پارامترهای مهم:
# --prefer-dist: دانلود فایل ZIP به جای Clone از Git (سریع‌تر)
# --no-dev: عدم نصب وابستگی‌های Development (برای Production)
# --ignore-platform-reqs: نادیده گرفتن خطاهای نسخه PHP (فقط در محیط‌های تست!)

نصب با استفاده از Docker (روش پیشنهادی برای تیم‌ها)

# Dockerfile برای Laravel 13
FROM php:8.4-fpm-alpine

# نصب وابستگی‌های سیستمی
RUN apk add --no-cache \
    nginx \
    supervisor \
    postgresql-dev \
    libzip-dev \
    libpng-dev \
    oniguruma-dev

# نصب افزونه‌های PHP
RUN docker-php-ext-install \
    pdo pdo_mysql pdo_pgsql \
    zip gd mbstring bcmath

# نصب Composer
COPY --from=composer:2.8 /usr/bin/composer /usr/bin/composer

# تنظیم دایرکتوری کاری
WORKDIR /var/www

# کپی فایل‌های Composer
COPY composer.json composer.lock ./

# نصب وابستگی‌ها (بدون Development)
RUN composer install \
    --no-dev \
    --no-interaction \
    --no-scripts \
    --optimize-autoloader

# کپی کد پروژه
COPY . .

# تنظیم دسترسی‌ها
RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache
RUN chmod -R 775 /var/www/storage /var/www/bootstrap/cache

EXPOSE 9000
CMD ["php-fpm"]

پیکربندی اولیه پروژه

تنظیم فایل .env

فایل .env قلب پیکربندی لاراول ۱۳ است. در نسخه ۱۳، این فایل با استفاده از سیستم DotEnv 6.0 پردازش می‌شود که از Type Casting و Nested Variables پشتیبانی می‌کند.

# کپی فایل نمونه به .env
cp .env.example .env

# اگر از Laravel Installer استفاده کردید، این مرحله خودکار انجام شده است
# .env - Laravel 13 Configuration Sample
APP_NAME="پروژه شگفت‌انگیز من"
APP_ENV=local
APP_KEY= # در مرحله بعد تولید می‌شود
APP_DEBUG=true
APP_URL=http://localhost:8000
APP_TIMEZONE=Asia/Tehran
APP_LOCALE=fa
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=fa_IR

# تنظیمات Nucleus HTTP Engine (جدید در لاراول ۱۳)
NUCLEUS_MAX_REQUESTS=1000
NUCLEUS_KEEPALIVE_TIMEOUT=5
NUCLEUS_COMPRESSION=true
NUCLEUS_HTTP2=true

# Database Configuration
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel13_db
DB_USERNAME=root
DB_PASSWORD=secret
DB_PREFIX=
DB_SSL_MODE=prefer # new in Laravel 13
DB_SSL_CA=/path/to/ca.pem
DB_SSL_VERIFY=true

# Cache Driver (Laravel 13 از Redis Cluster پشتیبانی می‌کند)
CACHE_STORE=redis
REDIS_CLIENT=predis
REDIS_CLUSTER=redis1:6379,redis2:6379,redis3:6379
REDIS_OPTIONS="cluster=redis&parameters[password]=secret"

# Queue Connection (پشتیبانی از SQS FIFO در نسخه ۱۳)
QUEUE_CONNECTION=redis
QUEUE_FAILED_DRIVER=database-uuids

# File Storage (پشتیبانی از Cloudflare R2)
FILESYSTEM_DISK=local
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
AWS_ENDPOINT=

# Mail (پشتیبانی از Resend و Postal)
MAIL_MAILER=log
MAIL_SCHEME=tls
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

تولید کلید رمزنگاری اپلیکیشن

# تولید کلید امنیتی ۳۲ بایتی
php artisan key:generate

# خروجی:
# Application key [base64:jHcF8LqG9xK3mP7vR2tY5wE4nB6sD1aV8uI0zXcQ=] set successfully.

# بررسی کلید تولید شده
php artisan key:generate --show
# با پارامتر show فقط کلید را نمایش می‌دهد و تغییر نمی‌دهد

# در صورت نیاز به الگوریتم رمزنگاری خاص
php artisan key:generate --cipher=AES-256-GCM

🔒 اهمیت کلید APP_KEY: این کلید برای رمزنگاری Sessionها، Cookies و سایر داده‌های حساس استفاده می‌شود. هرگز آن را در محیط Production تغییر ندهید، زیرا تمام Sessionهای کاربران از دسترس خارج می‌شوند. همچنین این کلید باید در Vault یا Secrets Manager ذخیره شود و هرگز در کد Commit نشود.


ساختار دایرکتوری‌ها در Laravel 13

لاراول ۱۳ تغییرات مهمی در ساختار دایرکتوری‌ها داشته که هدف آن افزایش امنیت و تفکیک بهتر Domain Logic است.

my-laravel13-project/
├── app/
│   ├── Actions/              # جدید: کلاس‌های اکشن مجزا برای Business Logic
│   ├── Console/
│   │   ├── Commands/
│   │   └── Kernel.php       # ثبت دستورات Console
│   ├── Domain/              # جدید: منطق دامنه (Domain-Driven Design)
│   │   ├── Models/
│   │   ├── Events/
│   │   ├── Exceptions/
│   │   └── Services/
│   ├── Http/
│   │   ├── Controllers/
│   │   ├── Middleware/
│   │   ├── Requests/        # Form Requestهای اعتبارسنجی
│   │   └── Resources/       # API Resourceها
│   ├── Providers/           # Service Providerها
│   │   └── AppServiceProvider.php
│   └── View/                # View Composers و Presenters
├── bootstrap/
│   ├── cache/               # کش فریم‌ورک (Config, Routes, Events)
│   ├── app.php              # Bootstrap فایل اصلی
│   └── nucleus.php          # جدید: پیکربندی Nucleus HTTP Engine
├── config/                  # تمام فایل‌های پیکربندی
├── database/
│   ├── factories/           # Model Factories
│   ├── migrations/          # Migrationها
│   ├── seeders/             # Seederها
│   └── schemas/             # جدید: Schema Definition برای Type Safety
├── lang/                    # فایل‌های ترجمه
│   ├── en/
│   └── fa/
├── public/                  # Document Root وب‌سرور
│   ├── index.php            # Entry Point اصلی
│   ├── .htaccess
│   ├── favicon.ico
│   └── robots.txt
├── resources/
│   ├── css/                 # فایل‌های CSS خام
│   ├── js/                  # JavaScript خام
│   ├── views/               # Blade Templates
│   │   ├── components/      # کامپوننت‌های Blade
│   │   ├── layouts/         # Layoutهای اصلی
│   │   └── pages/           # Viewهای صفحات
│   └── fonts/               # فونت‌های محلی
├── routes/
│   ├── web.php              # مسیرهای Web
│   ├── api.php              # مسیرهای API
│   ├── console.php          # مسیرهای Console
│   ├── channels.php         # Broadcasting Channels
│   └── health.php           # جدید: مسیرهای Health Check
├── storage/
│   ├── app/                 # فایل‌های آپلودی
│   │   ├── public/          # فایل‌های عمومی (لینک شده به public/storage)
│   │   └── private/         # جدید: فایل‌های خصوصی (غیرقابل دسترس از Web)
│   ├── framework/
│   │   ├── cache/           # کش فریم‌ورک
│   │   ├── sessions/        # فایل‌های Session (اگر از file driver استفاده شود)
│   │   ├── testing/         # فایل‌های تست
│   │   └── views/           # کش Viewهای Blade
│   └── logs/                # لاگ‌های اپلیکیشن
├── tests/
│   ├── Unit/                # تست‌های Unit
│   ├── Feature/             # تست‌های Feature
│   ├── Browser/             # تست‌های Browser (Dusk)
│   └── CreatesApplication.php
├── vendor/                  # وابستگی‌های Composer
├── .editorconfig
├── .env                     # متغیرهای محیطی (در Git نیست)
├── .env.example             # نمونه متغیرهای محیطی
├── .gitattributes
├── .gitignore
├── .prettierrc              # پیکربندی Prettier
├── artisan                  # CLI فریم‌ورک
├── composer.json            # پیکربندی Composer
├── composer.lock            # قفل نسخه‌ها
├── package.json             # وابستگی‌های NPM
├── package-lock.json        # قفل نسخه‌های NPM
├── phpunit.xml              # پیکربندی PHPUnit/Pest
├── pint.json                # پیکربندی Laravel Pint
├── rector.php               # پیکربندی Rector برای به‌روزرسانی خودکار کد
├── README.md
└── vite.config.js           # پیکربندی Vite

تغییرات کلیدی در ساختار نسخه ۱۳

  1. دایرکتوری app/Actions/: طراحی شده برای Action Classes که هر کدام یک عملیات Business Logic خاص را انجام می‌دهند. این الگو از Domain-Driven Design اقتباس شده است.
// app/Actions/Users/CreateUserAction.php
namespace App\Actions\Users;

use App\Domain\Models\User;
use App\Domain\Events\UserCreated;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;

final class CreateUserAction
{
    /**
     * ایجاد یک کاربر جدید با مدیریت کامل تراکنش و Event Sourcing
     */
    public function execute(CreateUserData $data): User
    {
        return DB::transaction(function () use ($data) {
            $user = User::create([
                'name' => $data->name,
                'email' => $data->email,
                'password' => Hash::make($data->password),
                'email_verified_at' => $data->verified ? now() : null,
            ]);

            event(new UserCreated($user));

            return $user;
        });
    }
}
  1. دایرکتوری app/Domain/: جداسازی منطق دامنه از لایه Presentation. این ساختار امکان تست‌پذیری بهتر و مهاجرت آسان‌تر به Microservices را فراهم می‌کند.

  2. فایل bootstrap/nucleus.php: پیکربندی موتور HTTP جدید لاراول که جایگزین Symfony HttpFoundation شده است.


اجرای سرور توسعه داخلی

لاراول ۱۳ همچنان از سرور توسعه داخلی PHP پشتیبانی می‌کند، اما با بهبودهای قابل توجه.

# روش استاندارد
php artisan serve

# خروجی:
# Starting Laravel development server: http://127.0.0.1:8000
# [Mon Mar 16 15:30:45 2026] PHP 8.4.5 Development Server started
# Listening on http://127.0.0.1:8000
# Document root is /path/to/project/public
# Press Ctrl+C to stop the server

# اجرا روی پورت و هاست سفارشی
php artisan serve --host=0.0.0.0 --port=9000

# اجرا با HTTPS (توسعه محلی)
php artisan serve --https

# اجرا با تنظیمات Nucleus (جدید)
php artisan serve --engine=nucleus --workers=4

# اجرا در پس‌زمینه
php artisan serve --daemon &

# نکته: سرور توسعه فقط برای محیط Development است و هرگز در Production استفاده نشود

جایگزین حرفه‌ای: Laravel Valet (مک) یا Laragon (ویندوز)

برای توسعه حرفه‌ای‌تر، استفاده از ابزارهای زیر توصیه می‌شود:

# نصب Laravel Valet روی مک
composer global require laravel/valet
valet install

# پارک کردن دایرکتوری پروژه‌ها
cd ~/Sites
valet park

# حالا پروژه شما در آدرس my-project.test قابل دسترس است
valet link my-project
valet secure my-project  # فعال‌سازی HTTPS خودکار

رفع مشکلات رایج در فرآیند نصب

خطای "Composer detected issues in your platform"

# مشکل: نسخه PHP ناسازگار با نیازمندی‌های لاراول ۱۳
# راه‌حل: نادیده گرفتن محدودیت‌های پلتفرم (موقت)
composer install --ignore-platform-reqs

# راه‌حل دائمی: به‌روزرسانی PHP به ۸.۴ یا بالاتر
sudo apt update && sudo apt upgrade php8.4

خطای "Allowed memory size exhausted"

# مشکل: حافظه ناکافی برای Composer
# راه‌حل موقت:
php -d memory_limit=-1 /usr/local/bin/composer install

# راه‌حل دائمی: افزایش memory_limit در php.ini
echo "memory_limit=512M" >> /etc/php/8.4/cli/php.ini

خطای "The openssl extension is required"

# مشکل: افزونه OpenSSL نصب نشده
# راه‌حل در اوبونتو:
sudo apt install php8.4-openssl

# راه‌حل در مک:
brew install openssl@3
# سپس PHP را با OpenSSL کامپایل مجدد کنید

خطای "laravel/framework v13.0.0 requires ext-pdo"

# مشکل: افزونه PDO نصب نشده
# راه‌حل:
sudo apt install php8.4-pdo php8.4-mysql php8.4-pgsql

# تأیید نصب:
php -m | grep -i pdo

خطای "Unable to create lock file"

# مشکل: مشکل دسترسی به دایرکتوری vendor یا composer.lock
# راه‌حل:
sudo chown -R $USER:$USER .
chmod -R 755 storage bootstrap/cache
rm -rf vendor composer.lock
composer install

خطای "SQLSTATE[HY000] [2002] Connection refused"

# مشکل: دیتابیس اجرا نیست یا تنظیمات نادرست است
# راه‌حل برای MySQL:
sudo systemctl start mysql
sudo systemctl status mysql

# اگر از SQLite استفاده می‌کنید:
touch database/database.sqlite
php artisan migrate --force

تکنیک Debug پیشرفته: فعال‌سازی لاگ دقیق Composer

# فعال‌سازی لاگ سطح بالا برای دیباگ مشکلات نصب
COMPOSER_PROCESS_TIMEOUT=2000 \
COMPOSER_MEMORY_LIMIT=-1 \
composer install -vvv --profile

# آنالیز خروجی برای یافتن bottleneck
composer diagnose
composer why-not laravel/framework 13.0.0

بهینه‌سازی نصب برای محیط Production

پس از نصب موفق، برای انتقال به Production باید مراحل بهینه‌سازی زیر را انجام دهید:

#!/bin/bash
# deploy.sh - اسکریپت Deploy برای لاراول ۱۳

set -e

echo "🚀 شروع فرآیند Deploy لاراول ۱۳..."

# ۱. به‌روزرسانی کد از مخزن
git pull origin main

# ۲. نصب وابستگی‌های Production (بدون dev)
composer install \
    --no-dev \
    --optimize-autoloader \
    --classmap-authoritative \
    --no-interaction \
    --prefer-dist

# ۳. بهینه‌سازی Autoloader
composer dump-autoload --optimize --classmap-authoritative

# ۴. کش کردن پیکربندی‌ها
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache

# ۵. بهینه‌سازی Nucleus (جدید در لاراول ۱۳)
php artisan nucleus:optimize

# ۶. اجرای Migrationها با توقف در صورت خطا
php artisan migrate --force --isolated

# ۷. راه‌اندازی مجدد Queue Workerها
php artisan queue:restart

# ۸. پاکسازی کش قدیمی
php artisan optimize:clear  # فقط برای Development

# ۹. بررسی سلامت سیستم
php artisan health:check --detailed

echo "✅ Deploy با موفقیت انجام شد!"

پیکربندی OPcache برای Laravel 13

; /etc/php/8.4/fpm/conf.d/99-opcache.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
opcache.enable_file_override=1
opcache.jit=tracing
opcache.jit_buffer_size=100M
opcache.jit_max_trace=100000
opcache.jit_hot_loop=64

پیکربندی Nginx برای Laravel 13 با Nucleus Engine

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    root /var/www/project/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;
    charset utf-8;

    # پشتیبانی از HTTP/2 Server Push
    http2_push_preload on;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    # محافظت از فایل‌های حساس
    location ~ /\.(?!well-known).* {
        deny all;
    }

    # بهینه‌سازی برای Nucleus Engine
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param NUCLEUS_ENABLED on;
        fastcgi_param NUCLEUS_WORKERS 4;
        include fastcgi_params;

        # تنظیمات بافر برای فایل‌های بزرگ
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
    }

    # کش فایل‌های استاتیک
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff2?)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        access_log off;
    }
}

منابع تکمیلی و لینک‌های مفید

📚 محتوای فوق به‌گونه‌ای تنظیم شده که تقریباً نیاز به جستجوی خارجی برای فهم مطلب را به صفر می‌رساند؛ اما منابع زیر صرفاً برای تعمیق بیشتر و دیدن کاربردهای عملی پیشنهاد شده‌اند.

مستندات رسمی

ویدیوهای آموزشی معتبر

ابزارهای مفید

مقالات عمیق فنی

کامیونیتی و پشتیبانی

کتاب‌های پیشنهادی

چک‌لیست نهایی برای اطمینان از نصب صحیح