Laravel Configuration
Application Overview
- Xem thông tin config của ứng dụng:
php artisan about
- Xem only config:
php artisan about --only=environment
Environment Variable Types
Nếu cần định nghĩa biến môi trường có giá trị chưa khoảng trắng, có thể dùng dấu ""
:
VD:
APP_NAME="My Application"
Retrieving Environment Configuration
'debug' => env('APP_DEBUG', false)
Determining The Current Environment
- Môi trường hiện tại của ứng dụng được xác định thông qua giá trị biến môi trường
APP_ENV
- Bạn có thể truy cập giá trị biến môi trường thông qua hàm
environment()
củaApp
facade:
use Illuminate\Support\Facades\App;
$environment = App::environment();
- Check môi trường hiện tại:
if (App::environment('local')) {
// The environment is local
}
if (App::environment(['local', 'staging'])) {
// The environment is either local OR staging...
}
Encrypting Environment Files
Encryption
- Để mã hóa file
.env
có thể dùng command:env:encrypt
- Chạy lệnh
env:encrypt
sẽ mã hóa tệp.env
của bạn và đặt nội dung được mã hóa vào tệp.env.encrypted
php artisan env:encrypt
- Khóa giải mã được hiển thị ở đầu ra của lệnh và phải được lưu trữ trong trình quản lý mật khẩu an toàn
- Mặc định thì Laravel sẽ sử dụng kiểu mã hóa AES-256-CBC yêu cầu khóa 32 ký tự.
- Bạn có thể tự đặt key khi thêm option
--key
hoặc có thể thay đổi kiểu mã hóa khi thêm option--cipher
(Kiểu mã hóa phải được Laravel hỗ trợ: AES-256 and AES-128)
php artisan env:encrypt --key=qUWuNRdfuImXcKxZ --cipher=AES-128-CBC
** Nếu ứng dụng của bạn có nhiều tệp môi trường, chẳng hạn như .env và .env.staging, bạn có thể chỉ định tệp môi trường cần được giải mã bằng cách cung cấp tên môi trường thông qua tùy chọn --env
php artisan env:encrypt --env=staging
- Nếu đã tồn tại file mã hóa
.encrypted
bạn có thể ghi đè file mã hóa bằng option--force
Decryption
- Để giải mã file
.env.encrypted
có thể dùng command:env:decrypt
kèm theo key--key
- Chạy lệnh
env:decrypt
sẽ giải mã tệp.env.encrypted
của bạn trở về tệp.env
php artisan env:decrypt --key=base64:tNj21hFpMCZBdDfRdsxOTG/jEJo13vBHIUyKBo69Rgk=
- Nếu ứng dụng của bạn có nhiều tệp môi trường, chẳng hạn như .env và .env.staging, bạn có thể chỉ định tệp môi trường cần được giải mã bằng cách cung cấp tên môi trường thông qua tùy chọn `--env``
php artisan env:decrypt --env=staging
- Để ghi đè lên tệp môi trường hiện có, bạn có thể cung cấp tùy chọn --force cho lệnh env:decrypt:
php artisan env:decrypt --force
Accessing Configuration Values
- Lấy giá trị configuration:
$value = config('app.timezone');
// Retrieve a default value if the configuration value does not exist...
$value = config('app.timezone', 'Asia/Seoul');
- Set configuration value:
config(['app.timezone' => 'America/Chicago']);
Configuration Caching
- Để tăng tốc độ cho ứng dụng của bạn, bạn nên lưu trữ tất cả các tệp cấu hình của mình vào một tệp duy nhất bằng cách sử dụng lệnh
config:cache
- Khi sử dụng lệnh
config:cache
thì tất cả các file trong thư mục config sẽ được tổng hợp thành 1 file duy nhất được sinh ra trong thư mục\boostrap\cache\config.php
- Khi chạy lệnh
config:cache
thì tất cả các giá trị trả về của hàmenv()
đều làNull
nên chú ý tất cả các hàmenv()
chỉ sử dụng trong các tệp cấu hình
php artisan config:cache
- Clear cache config
- Tệp cấu hình
\boostrap\cache\config.php
sẽ bị xóa
php artisan config:clear
Debug Mode
- Debug mode được cấu hình trong file
config/app.php
- Mặc định giá trị debug mode này lấy giá trị từ biến
APP_DEBUG
trong file .env (true or false) - Trong môi trường phát triển bạn nên đặt giá trị là
true
, còn trên môi trường sản xuất thì luôn luôn để làfalse
vì nếu đặt làtrue
thì sẽ có rủi ro bị lộ thông tin nhạy cảm
'debug' => (bool) env('APP_DEBUG', false),
Maintenance Mode
- Khi ứng dụng ở trạng thái maintenance mode thì mọi request sẽ return 1 view thông báo mã lỗi 503
- Bạn có thể custom view trả về tại template
resources/views/errors/503.blade.php
php artisan down
- Refersh trình duyệt sau số giây chỉ định
php artisan down --refresh=15
- Bạn cũng có thể cung cấp tùy chọn thử lại cho lệnh down, tùy chọn này sẽ được đặt làm giá trị của tiêu đề HTTP Thử lại sau, mặc dù các trình duyệt thường bỏ qua tiêu đề này:
php artisan down --retry=60
Bypassing Maintenance Mode (Bỏ qua chế độ bảo trì bằng mã bí mật)
- Để cho phép bỏ qua chế độ bảo trì bằng mã thông báo bí mật, bạn có thể sử dụng tùy chọn bí mật để chỉ định mã thông báo bỏ qua chế độ bảo trì:
- Mã bí mật không có quy định về độ dài
- Mã bí mật của bạn thường phải bao gồm các ký tự chữ và số và dấu gạch ngang (tùy chọn). Bạn nên tránh sử dụng các ký tự có ý nghĩa đặc biệt trong URL như ? hoặc &.
php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"
- Sau khi đặt ứng dụng ở chế độ bảo trì, bạn có thể điều hướng đến URL ứng dụng khớp với mã thông báo này và Laravel sẽ cấp cookie bỏ qua chế độ bảo trì cho trình duyệt của bạn:
https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515
- Khi truy cập vào tuyến đường ẩn này, bạn sẽ được chuyển hướng đến tuyến đường / của ứng dụng. Khi cookie đã được cấp cho trình duyệt của bạn, bạn sẽ có thể duyệt ứng dụng bình thường như thể nó không ở chế độ bảo trì.
Redirecting Maintenance Mode Requests
- Chuyển hướng tất cả các request về 1 url cụ thể:
php artisan down --redirect=/
- Có thể chuyển hướng đến 1 tên miền khác
php artisan down --redirect=https://viblo.asia/
Disabling Maintenance Mode
php artisan up
Maintenance Mode & Queues
- Khi ứng dụng của bạn đang ở chế độ bảo trì, sẽ không có
queued jobs
nào được xử lý. Các công việc sẽ tiếp tục được xử lý như bình thường khi ứng dụng thoát khỏi chế độ bảo trì
Alternatives To Maintenance Mode
- Chế độ bảo trì yêu cầu ứng dụng của bạn phải ngừng hoạt động trong vài giây
- Có thể xem xét thay thế tùy tình huống để sử dụng Laravel Vapor and Envoyer để thực hiện việc triển khai không có thời gian chết với Laravel.
All Rights Reserved