Khi bạn đã sẵn sàng để triển khai ứng dụng Laravel của mình vào sản xuất, có một số điều quan trọng bạn có thể làm để đảm bảo ứng dụng của mình đ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ủ
Laravel framework có một vài 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 sau đây và các tiện ích mở rộng
- PHP >= 8. 0
- Phần mở rộng BCMath PHP
- Tiện ích mở rộng Ctype PHP
- Tiện ích mở rộng cURL PHP
- Phần mở rộng DOM PHP
- Tiện ích mở rộng Fileinfo PHP
- Tiện ích mở rộng PHP JSON
- Tiện ích mở rộng Mbstring PHP
- Tiện ích mở rộng OpenSSL PHP
- Phần mở rộng PCRE PHP
- Phần mở rộng PDO PHP
- Tiện ích mở rộng mã thông báo PHP
- Tiện ích 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 tới 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 cân nhắc 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 tệp public/index.php
của ứng dụng của bạn. Bạn không bao giờ nên cố gắng di chuyển tệp
composer install --optimize-autoloader --no-dev
0 vào thư mục gốc của dự án, vì việc cung cấp ứ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 ra Internet công cộng root /srv/example.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
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;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
location ~ /\.[?!well-known].* {
Tối ưu hóa
Tối ưu hóa trình tải tự động
Khi triển khai vào sản xuất, 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 Trình soạn thảo để Trình soạn thảo 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
Lưu ý
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 tệp1 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ó tệp
composer install --optimize-autoloader --no-dev
1.
composer install --optimize-autoloader --no-dev
Tối ưu hóa tải cấu hình
Khi triển khai ứng dụng của bạn vào sản xuất, bạn nên đảm bảo rằng bạn chạy lệnh Artisan
composer install --optimize-autoloader --no-dev
3 trong quá trình triển khai của mìnhLệ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, giúp giảm đáng kể số lần truy cập mà khung phải thực hiện đối với hệ thống tệp khi tải các giá trị cấu hình của bạn
Cảnh báo
Nếu bạn thực thi lệnh3 trong quá trình triển khai của mình, bạn nên chắc chắn rằng mình chỉ gọi hàm
composer install --optimize-autoloader --no-dev
5 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ộ đệm, tệp
composer install --optimize-autoloader --no-dev
6 sẽ không được tải và tất cả các lệnh gọi hàm
composer install --optimize-autoloader --no-dev
5 cho các biến
composer install --optimize-autoloader --no-dev
6 sẽ trả về
composer install --optimize-autoloader --no-dev
2.
composer install --optimize-autoloader --no-dev
Tối ưu hóa tải tuyến đường
Nếu bạn đang xây dựng một ứng dụng lớn với nhiều tuyến đường, bạn nên đảm bảo rằng bạn đang chạy lệnh Artisan
composer install --optimize-autoloader --no-dev
3 trong quá trình triển khai của mìnhLệnh này giảm tất cả các đăng ký tuyến đường của bạn thành một cuộc 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 đăng ký tuyến đường khi đăng ký hàng trăm tuyến đường
Tối ưu hóa lượt xem đang tải
Khi triển khai ứng dụng của bạn vào sản xuất, bạn nên đảm bảo rằng bạn chạy lệnh Artisan
composer install --optimize-autoloader --no-dev
4 trong quá trình triển khai của mìnhLệnh này biên dịch trước tất cả các chế độ xem 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 từng yêu cầu trả về một chế độ xem
Chế độ kiểm tra sửa lỗi
Tùy chọn gỡ lỗi trong cấu hình/ứng dụng của bạn. tệp cấu hình php 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
composer install --optimize-autoloader --no-dev
5, được lưu trữ trong tệp composer install --optimize-autoloader --no-dev
6 của ứng dụng của bạnTrong môi trường sản xuất của bạn, giá trị này phải luôn là
composer install --optimize-autoloader --no-dev
7. Nếu biến composer install --optimize-autoloader --no-dev
5 được đặt thành composer install --optimize-autoloader --no-dev
9 trong sản xuất, 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ìnhTriển khai với Forge/Vapor
Lò rèn Laravel
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 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 giải pháp thay thế tuyệt vời
Laravel Forge có thể tạo máy chủ trên nhiều 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.
Lưu ý Muốn có hướng dẫn đầy đủ để triển khai với Laravel Forge?
hơi Laravel
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 điều chỉnh quy mô cho Laravel, hãy xem Laravel Vapor. Laravel Vapor là một nền tảng triển khai serverless dành 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 trơn tru với framework, do đó bạn có thể tiếp tục viết các ứng dụng Laravel của mình chính xác như bạn đã quen