Laravel: Triển khai (Deployment)

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Giới thiệu

Khi bạn đã sẵn sàng triển khai ứng dụng Laravel của mình vào phiên bản thực tế (production), có một số điều quan trọng bạn có thể làm để đảm bảo ứng dụng của bạn đang 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 ứng dụng Laravel của bạn được triển khai đúng cách.

Yêu cầu máy chủ

Framework Laravel có một số yêu cầu hệ thống. Bạn nên đảm bảo rằng máy chủ web của mình có phiên bản PHP tối thiểu và các tiện ích mở rộng sau:

  • PHP> = 7.3
  • Phần mở rộng BCMath PHP
  • Phần mở rộng Ctype PHP
  • Phần mở rộng Fileinfo PHP
  • Phần mở rộng JSON PHP
  • Phần mở rộng Mbstring PHP
  • Phần mở rộng OpenSSL PHP
  • Phần mở rộng PDO PHP
  • Phần mở rộng Tokenizer PHP
  • Phần mở rộng XML PHP

Cấu hình máy chủ

Nginx

Nếu bạn đang triển khai ứng dụng của mình cho một máy chủ đang chạy Nginx, bạn có thể sử dụng tệp cấu hình sau làm điểm bắt đầu để định cấu hình máy chủ web của mình. Rất có thể, tệp này sẽ cần được tùy chỉnh tùy thuộc vào cấu hình máy chủ của bạn. Nếu bạn muốn được hỗ trợ trong việc quản lý máy chủ của mình, hãy xem xét sử dụng dịch vụ triển khai và quản lý máy chủ Laravel của bên thứ nhất, chẳng hạn như Laravel Forge.

Hãy đảm bảo, giống như cấu hình bên dưới, máy chủ web của bạn hướng tất cả các yêu cầu đến file ứng dụng public/index.php của bạn . Bạn không nên cố gắng di chuyển file index.php đến thư mục gốc của dự án, vì việc phân phát ứng dụng từ thư mục gốc của dự án sẽ làm lộ nhiều tệp cấu hình nhạy cảm lên Internet công cộng:

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

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

    index 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.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

Tối ưu hóa

Tối ưu hóa trình tải tự động

Khi triển khai đến phiên bản web thực, hãy đảm bảo rằng bạn đang tối ưu hóa bản đồ trình tải tự động lớp của Composer để Composer có thể nhanh chóng tìm thấy tệp thích hợp để tải cho một lớp nhất định:

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

Ngoài việc tối ưu hóa trình tải tự động, bạn phải luôn đảm bảo bao gồm một file composer.lock trong kho lưu trữ kiểm soát nguồn của dự án. Các phần phụ thuộc của dự án của bạn có thể được cài đặt nhanh hơn nhiều khi có file composer.lock.

Tối ưu hóa tải cấu hình

Khi triển khai ứng dụng của bạn ở phiên bản production, bạn nên đảm bảo rằng bạn chạy lệnh Artisan config:cache trong quá trình triển khai của mình:

php artisan config:cache

Lệnh này sẽ kết hợp tất cả các tệp cấu hình của Laravel thành một tệp duy nhất, được lưu trong bộ nhớ cache, điều này làm giảm đáng kể số lượng các chuyến đi (trip) mà framework phải thực hiện đến hệ thống tệp khi tải các giá trị cấu hình của bạn.

Nếu bạn thực thi lệnh config:cache trong quá trình triển khai, bạn nên chắc chắn rằng bạn chỉ đang gọi hàm env từ bên trong các tệp cấu hình của mình. Khi cấu hình đã được lưu vào bộ nhớ cache, thì file .env sẽ không được tải và tất cả các lệnh gọi hàm env cho các biến .env sẽ trả về null.

Tối ưu hóa tải route

Nếu bạn đang xây dựng một ứng dụng lớn với nhiều route, bạn nên đảm bảo rằng bạn đang chạy lệnh Artisan route:cache trong quá trình triển khai của mình:

php artisan route:cache

Lệnh này giảm tất cả đăng ký route của bạn thành một lệnh gọi phương thức duy nhất trong một tệp được lưu trong bộ nhớ cache, cải thiện hiệu suất của đăng ký route khi đăng ký hàng trăm route.

Tối ưu hóa tải view

Khi triển khai ứng dụng của bạn cho phiên bản production, bạn nên đảm bảo rằng bạn chạy lệnh Artisan view:cache trong quá trình triển khai của mình:

php artisan view:cache

Lệnh này biên dịch trước tất cả các view Blade của bạn để chúng không được biên dịch theo yêu cầu, cải thiện hiệu suất của mỗi yêu cầu trả về một view.

Chế độ debug

Tùy chọn gỡ lỗi trong tệp cấu hình config/app.php của bạn xác định lượng thông tin về lỗi thực sự được hiển thị cho người dùng. Theo mặc định, tùy chọn này được đặt để tôn trọng giá trị của biến môi trường APP_DEBUG, được lưu trữ trong tệp .env của bạn.

Trong môi trường production, giá trị này luôn phải là false. Nếu biến APP_DEBUG được đặt thành true, bạn có nguy cơ để lộ các giá trị cấu hình nhạy cảm cho người dùng cuối ứng dụng của mình.

Triển khai với Forge/Vapor

Laravel Forge

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

Laravel Forge có thể tạo máy chủ trên các nhà cung cấp cơ sở hạ tầng khác nhau như DigitalOcean, Linode, AWS, v.v. Ngoài ra, Forge 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 mạnh mẽ, chẳng hạn như Nginx, MySQL, Redis, Memcached, Beanstalk, v.v.

Laravel Vapor

Nếu bạn muốn một nền tảng triển khai hoàn toàn không có máy chủ, tự động mở rộng được điều chỉnh cho Laravel, hãy xem Laravel Vapor. Laravel Vapor là một nền tảng triển khai không máy chủ cho Laravel, được cung cấp bởi AWS. Khởi chạy cơ sở hạ tầng Laravel của bạn trên Vapor và yêu thích sự đơn giản có thể mở rộng của serverless. Laravel Vapor được những người sáng tạo của Laravel tinh chỉnh để hoạt động liền mạch với framework, do đó bạn có thể tiếp tục viết các ứng dụng Laravel của mình giống hệt như bạn đã từng làm.

» Tiếp: Yêu cầu về vòng đời (Request Lifecycle)
« Trước: Bộ công cụ khởi đầu (Starter Kits)
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!