شروع کار با لاراول 7 : Deployment

مقدمه

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

فهرست مطالب

  • مقدمه
  • پیکربندی سرور
    • Nginx
  • Optimizing 
    • بهینه سازیAutoloader 
    • بهینه سازی  Configuration Loading
    • بهینه سازی Route Loading
    • بهینه سازی View Loading
  • Deploying With Forge

پیکربندی سرور

Nginx

اگر برنامه خود را در سرور Nginx مستقر می کنید ، می توانید از فایل پیکربندی زیر به عنوان نقطه شروع برای تنظیمات وب سرور خود استفاده کنید. به احتمال زیاد بسته به پیکربندی سرور شما باید این فایل customized شود. اگر میخواهید در مدیریت سرور خود کمک کنید ، از خدماتی مانند Laravel Forge استفاده کنید:

server {
    listen 80;
    server_name example.com;
    root /example.com/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    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; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

بهینه سازی

Autoloader Optimization

هنگام  deploy برنامه ، اطمینان حاصل کنید که در حال بهینه سازی Composer's class autoloader هستید تا کامپوزر بتواند به سرعت فایل مناسب را برای لود یک کلاس خاص پیدا کند:

composer install --optimize-autoloader --no-dev

نکته: علاوه بر بهینه سازی autoloader ، شما باید همیشه یک فایل composer.lock را در ریپازیتوری source control پروژه خود داشته باشید. وابستگی های پروژه شما می تواند خیلی سریعتر در هنگام وجود یک فایل composer.lock نصب شود.

بهینه سازی Configuration Loading

هنگام استقرار برنامه خود ، باید اطمینان حاصل کنید که دستور پیکربندیconfig:cache Artisan: را در طی مراحل deploy خود اجرا می کنید:

php artisan config:cache

این دستور کلیه فایل های پیکربندی لاراول را در یک کش فایل ترکیب می کند ، که باعث می شود تعداد trip هایی که فریم ورک باید هنگام لودینگ مقادیر پیکربندی شما برایfilesystem انجام دهد ، کاهش یابد.

توجه: اگر دستور config:cache را در طی مراحل استقرار اجرا می کنید ، باید اطمینان داشته باشید که فقط از درون فایل های پیکربندی خود ، تابع env را فراخوانی می کنید. پس از کش شدن پیکربندی ، فایل .env لود نمی شود و همه فراخوانی ها به تابع env مقدار

null  برمیگرداند.

بهینه سازی Route Loading

اگر در حال build کردن یک برنامه بزرگ با route های زیاد هستید ، باید اطمینان حاصل کنید که دستور route:cache Artisan را در طی مراحل استقرار خود اجرا میکنید:

php artisan route:cache

این دستور تمام رجیسترهای route شما را با یک متد فراخوانی با یک کش فایل کاهش می دهد و عملکرد رجیستر route را هنگام رجیستر صدها route بهبود می بخشد.

توجه: از آنجا که این ویژگی از PHP serialization استفاده می کند ، شما فقط می توانید route هایی را برای برنامه هایی که منحصراً از route های مبتنی بر کنترلر استفاده می کنند ، کش کنید. PHP قادر به serialize Closures نیست.

بهینه سازی View Loading

هنگام deploy برنامه خود ، باید اطمینان حاصل کنید که در طی مراحل استقرار دستور view:cache Artisan را اجرا می کنید :

php artisan view:cache

این دستور کلیه Blade view های شما را precompile می کند ، بنابراین در صورت تقاضا کامپایل نمی شوند و باعث بهبود عملکرد هر ریکوئستی که view را باز می گرداند می شود.

استقرار با Forge

اگر آماده مدیریت پیکربندی سرور خود نیستید و یا با پیکربندی سرویس های مختلف راحت نیستید ، Laravel Forge یک جایگزین عالی است.

Laravel Forge می تواند در زیرساخت های مختلف مانند DigitalOcean ، Linode ، AWS و موارد دیگر سرور ایجاد کند. علاوه بر این ، Forge تمام ابزارهای مورد نیاز برای ساخت برنامه های قوی Laravel مانند Nginx ، MySQL ، Redis ، Memcached ، Beanstalk و موارد دیگر را نصب و مدیریت می کند.

سعید نصیری
سعید نصیری

من برنامه نویس لاراول، PHP و طراح سایت هستم. برنامه نویسی موبایل و تولید اپلیکیشن های موبایل نیز بخش دیگری از توانایی های فردی من هست. تقریبا ده دوازده سالی تجربه مستمر در زمینه طراحی سایت دارم و نزدیک به یک سال هم میشه که در برنامه نویسی موبایل وارد شده ام.