Giới thiệu

Khi bạn đã sẵn sàng deploy application Laravel của bạn vào production, có một số điều quan trọng mà bạn có thể làm để đảm bảo application của bạn chạy hiệu quả nhất có thể. Trong tài liệu này, chúng tôi sẽ đề cập đến một số điểm khởi đầu tuyệt vời để đảm bảo application Laravel của bạn được deploy đúng cách.

Cấu hình server

Nginx

Nếu bạn đang deploy application của bạn đến một server đang chạy Nginx, bạn có thể sử dụng file cấu hình sau đây để làm điểm bắt đầu cho cấu hình web server của bạn. Nhiều khả năng, file này sẽ cần được tùy chỉnh tùy thuộc vào cấu hình server của bạn. Nếu bạn muốn được hỗ trợ trong việc quản lý server, hãy cân nhắc sử dụng một dịch vụ như 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;
    }
}

Tối ưu

Tối ưu autoloader

Khi deploy application vào production, hãy chắc chắn là bạn đã tối ưu hoá class autoloader map của Composer, để Composer có thể nhanh chóng tìm thấy file thích hợp cho một class:

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

{tip} Ngoài việc tối ưu autoloader, bạn cũng nên chắc chắn là luôn có file composer.lock trong project source code của bạn. Các library trong project của bạn có thể cài đặt nhanh hơn khi mà có file composer.lock này.

Tối ưu load config

Khi deploy application vào production, bạn cũng nên đảm bảo là bạn đã chạy lệnh Artisan config:cache trong quá trình deploy:

php artisan config:cache

Lệnh này sẽ nối tất cả các file config của Laravel thành một file và được lưu vào trong bộ nhớ cache, giúp giảm đáng kể số lượng trao đổi giữa framework với filesystem khi tải các value config của bạn.

{note} Nếu bạn chạy lệnh config:cache trong quá trình deploy, bạn nên đảm bảo là bạn chỉ gọi hàm env từ trong các file cấu hình của bạn. Khi các file cấu hình đã được lưu vào trong bộ nhớ cache, thì file .env sẽ không được load và tất cả các code được gọi đến hàm env sẽ đều trả về null.

Tối ưu load route

Nếu bạn đang build một application lớn với nhiều route, bạn nên đảm bảo rằng bạn đã chạy lệnh Artisan route:cache trong quá trình deploy của bạn:

php artisan route:cache

Lệnh này sẽ giảm tất cả các đăng ký route của bạn vào trong một phương thức duy nhất và lưu trong một file ở cache, nó giúp cải thiện hiệu suất của việc đăng ký route khi đăng ký hàng trăm route.

{note} Vì chức nằng này sẽ dùng hàm mã hoá chuỗi của PHP, nên bạn chỉ có thể cache được các loại route cho apllication theo loại route cơ bản. PHP sẽ không thể mã hoá được các hàm callback.

Deploy cùng Forge

Nếu bạn chưa sẵn sàng để quản lý cấu hình server của bạn hoặc không thoải mái với cấu hình các dịch vụ khác nhau cần thiết để chạy ứng dụng Laravel, Laravel Forge là một điều thay thế tuyệt vời.

Laravel Forge có thể tạo server trên các nhà cung cấp khác nhau như DigitalOcean, Linode, AWS, v.v. Ngoài ra, Forge có thể cài đặt và quản lý tất cả các công cụ cần thiết để xây dựng các ứng dụng Laravel, như Nginx, MySQL, Redis, Memcached, Beanstalk,...

Valet Request Lifecycle
© 2023 by Logo page doc-vn