- vừa được xem lúc

Laravel Configuration

0 0 8

Người đăng: Ngô Quốc Hùng

Theo Viblo Asia

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ủa App 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àm env() đều là Null nên chú ý tất cả các hàm env() 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.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 335

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 421

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1k

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 141

- vừa được xem lúc

Một số tips khi dùng laravel (Part 1)

1. Show database query in raw SQL format. DB::enableQueryLog(); // Bật tính năng query logging. DB::table('users')->get(); // Chạy truy vấn bạn muốn ghi log.

0 0 69

- vừa được xem lúc

Inertiajs - Xây dựng Single Page App không cần API

Tiêu đề là mình lấy từ trang chủ của https://inertiajs.com/ chứ không phải mình tự nghĩ ra đâu nhé :v. Lâu lâu rồi chưa động tới Laravel (dự án cuối cùng mình code là ở ver 5.8), thế nên một ngày đẹp trời lượn vào đọc docs ver 8.

0 0 227