[Thực hành] Cấu hình Laravel
NỘI DUNG BÀI VIẾT
Mục tiêu
Luyện tập cấu hình Laravel.
Mô tả
Trong phần này, chúng ta sẽ cấu hình các thông số cơ bản trong một ứng dụng Laravel và chuyển đổi qua lại giữa 2 chế độ bảo trì và hoạt động của ứng dụng.
Hướng dẫn được chia thành 2 phần:
- Cấu hình các thông số cơ bản trong Laravel.
- Chuyển đổi qua lại giữa 2 chế độ bảo trì và hoạt động.
Hướng dẫn
Phần 1: Cấu hình các thông số cơ bản trong Laravel
Thông thường khi xây dựng một ứng dụng, chúng ta sẽ chạy ứng dụng đó trên nhiều môi trường khác nhau. Chẳng hạn mỗi lập trình viên cùng tham gia dự án chạy trên các môi trường khác nhau: hệ điều hành (windows, mac osx, linux…), phần mềm quản trị cơ sở dữ liệu (MySQL, PostgreSQL, MSSQL….), tài khoản đăng nhập, email khác nhau… Đối với mỗi ứng dụng, chúng ta cũng chạy trên các môi trường khác nhau (máy tính cá nhân lúc phát triển, máy chủ khi triển khai cho người dùng thực tế…). Chính vì vậy chúng ta cần có 1 tệp cấu hình để mỗi môi trường chúng ta thiết lập các thông số khác nhau sao cho phù hợp.
Laravel cung cấp cho chúng ta sẵn tệp .env để chúng ta cấu hình nó cho từng môi trường khác nhau. Tệp này nằm ngay trong thư mục dự án với các thông số mặc định. Bây giờ chúng ta cùng nhau tìm hiểu các thông số và cấu hình chúng.
![[Thực hành] Cấu hình Laravel 2 file .env](https://i0.wp.com/james.codegym.vn/pluginfile.php/31610/mod_assign/intro/Screen%20Shot%202019-02-24%20at%2011.36.18.png?ssl=1)
Lưu ý: Các giá trị gán cho mỗi thông số, nếu có khoảng trắng ở giữa, chúng ta cần đặt giá trị đó trong dấu ngoặc kép “”.
Để lấy được giá trị của các thông số được cấu hình trong tệp .env, chúng ta dùng lệnh env(‘<tên thông số>’)
APP_NAME: tên ứng dụng, sử dụng để hiển thị phần tiêu đề của ứng dụng.
Ví dụ APP_NAME=“Shop mẹ và bé”. Khi chúng ta muốn sử dụng nó chẳng hạn để hiển thị tiêu đề của ứng dựng, chúng ta gõ dòng sau:
<title>{{ env('APP_NAME') }}</title>
Như vậy tiêu đề “Shop mẹ và bé” sẽ được hiện lên.
![[Thực hành] Cấu hình Laravel 3 Shop](https://i0.wp.com/james.codegym.vn/pluginfile.php/31610/mod_assign/intro/Shop.png?ssl=1)
APP_ENV: Môi trường của ứng dụng. Có 4 môi trường của ứng dụng là local, testing, staging, production). Khi chúng ta cấu hình loại môi trường nào, Laravel sẽ tự động thiết lập các thông số liên quan của ứng dụng cho môi trường đó.
APP_KEY: là một dãy ký tự duy nhất, dùng để mã hóa các dữ liệu (session, cookie) cho ứng dụng. Chúng ta có thể dùng lệnh sau để sinh ra APP_KEY:
php artisan key:generate
![[Thực hành] Cấu hình Laravel 4 key generane](https://i0.wp.com/james.codegym.vn/pluginfile.php/31610/mod_assign/intro/key-generane.png?ssl=1)
APP_DEBUG: Nhận 2 giá trị: true hoặc false. Nếu giá trị là true thì ứng dụng ở trạng thái Debug, nghĩa là nếu có lỗi xảy ra thì lỗi cụ thể sẽ được hiển thị ngay trên trang web. Ví dụ:
![[Thực hành] Cấu hình Laravel 5 APP DEBUG](https://i0.wp.com/james.codegym.vn/pluginfile.php/31610/mod_assign/intro/APP_DEBUG.png?ssl=1)
Ngược lại, trang web chỉ hiển thị 1 trang lỗi chung như sau và không báo lỗi chi tiết:
![[Thực hành] Cấu hình Laravel 6 500](https://i0.wp.com/james.codegym.vn/pluginfile.php/31610/mod_assign/intro/500.png?ssl=1)
Lưu ý: Khi thay đổi giá trị của APP_DEBUG, chúng ta cần gõ lệnh sau để xóa bộ nhớ đệm về cấu hình:
php artisan config:clear
Sau đó chúng ta sẽ phải khởi động lại laravel bằng câu lệnh:
php artisan serve
APP_URL: khai báo địa chỉ của trang web.
DEFAULT_LOCALE: Thiết lập ngôn ngữ mặc định cho ứng dụng. Giá trị là mã của các ngôn ngữ ví dụ en (Tiếng Anh), vi (Tiếng Việt), es (Tiếng Tây Ban Nha)…
DB_CONNECTION: Mở tệp config/database.php, chúng ta sẽ thấy đoạn sau:
‘connections’ => [ ‘sqlite’ => [ ‘driver’ => ‘sqlite’, ‘database’ => env(‘DB_DATABASE’, database_path(‘database.sqlite’)), ‘prefix’ => ”, ‘foreign_key_constraints’ => env(‘DB_FOREIGN_KEYS’, true), ], ‘mysql’ => [ ‘driver’ => ‘mysql’, ‘host’ => env(‘DB_HOST’, ‘127.0.0.1’), ‘port’ => env(‘DB_PORT’, ‘3306’), ‘database’ => env(‘DB_DATABASE’, ‘forge’), ‘username’ => env(‘DB_USERNAME’, ‘forge’), ‘password’ => env(‘DB_PASSWORD’, ”), ‘unix_socket’ => env(‘DB_SOCKET’, ”), ‘charset’ => ‘utf8mb4’, ‘collation’ => ‘utf8mb4_unicode_ci’, ‘prefix’ => ”, ‘prefix_indexes’ => true, ‘strict’ => true, ‘engine’ => null, ], ‘pgsql’ => [ ‘driver’ => ‘pgsql’, ‘host’ => env(‘DB_HOST’, ‘127.0.0.1’), ‘port’ => env(‘DB_PORT’, ‘5432’), ‘database’ => env(‘DB_DATABASE’, ‘forge’), ‘username’ => env(‘DB_USERNAME’, ‘forge’), ‘password’ => env(‘DB_PASSWORD’, ”), ‘charset’ => ‘utf8’, ‘prefix’ => ”, ‘prefix_indexes’ => true, ‘schema’ => ‘public’, ‘sslmode’ => ‘prefer’, ], ‘sqlsrv’ => [ ‘driver’ => ‘sqlsrv’, ‘host’ => env(‘DB_HOST’, ‘localhost’), ‘port’ => env(‘DB_PORT’, ‘1433’), ‘database’ => env(‘DB_DATABASE’, ‘forge’), ‘username’ => env(‘DB_USERNAME’, ‘forge’), ‘password’ => env(‘DB_PASSWORD’, ”), ‘charset’ => ‘utf8’, ‘prefix’ => ”, ‘prefix_indexes’ => true, ], ], |
Phần này chúng ta khai báo các phần mềm quản trị cơ sở dữ liệu (CSDL) như sqlite, mysql, pgsql, sqlsrv…. Tùy từng dự án mà chúng ta sử dụng các phần mềm quản trị CSDL khác nhau. Chúng ta thiết lập DB_CONNECTION là một trong các giá trị này.
DB_HOST: địa chỉ của máy chủ chứa CSDL. Trong môi trường phát triển, giá trị thông thường là localhost hoặc 127.0.0.1
DB_PORT: cổng của phần mềm quản trị CSDL, mặc định cho mysql là 3306
DB_DATABASE: tên của CSDL cho ứng dụng của chúng ta
DB_USERNAME: tên tài khoản truy cập CSDL
DB_PASSWORD: mật khẩu tài khoản truy cập CSDL
Trong Laravel có 1 khái niệm là driver. Chúng ta tạm hiểu driver là các thư viện để xử lý một tác vụ nào đó.
BROADCAST_DRIVER: Thiết lập driver xử lý các chức năng về thời gian thực như tin nhắn, thông báo… Chúng ta thiết lập cho nó một trong các giá trị: pusher, redis và log.
CACHE_DRIVER: Thiết lập driver xử lý về bộ nhớ đệm. Chúng ta thiết lập cho nó một trong các giá trị: file, redis, memcached
SESSION_DRIVER: Thiết lập driver xử lý về phiên. Chúng ta thiết lập cho nó một trong các giá trị: file, database, redis
SESSION_LIFETIME: Thiết lập thời gian tồn tại của một phiên, đơn vị là phú, mặc định là 120.
MAIL_DRIVER: Thiết lập driver cho gửi và nhận email. Nếu thiết lập giá trị là log thì các cấu hình về mail bên dưới không cần thiết lập, khi gửi email qua ứng dụng, toàn bộ nội dung email sẽ được ghi vào file log (storage/logs/laravel.log). Các giá trị khác như smtp, mailgun, ses… chúng ta sẽ gửi và nhận mail như bình thường.
Đây là 1 cấu hình email mẫu sử dụng smtp driver.
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_FROM_ADDRESS=”[email protected]” MAIL_FROM_NAME=”CodeGym” MAIL_USERNAME=admin MAIL_PASSWORD=123456 MAIL_ENCRYPTION=tls |
Phần 2: Chuyển đổi qua lại giữa 2 chế độ bảo trì và hoạt động
Bước 1: Chuyển ứng dụng về trạng thái bảo trì
Laravel cung cấp câu lệnh rất đơn giản giúp chúng ta chuyển đổi về chế độ bảo trì web.
php artisan down
![[Thực hành] Cấu hình Laravel 7 down](https://i0.wp.com/james.codegym.vn/pluginfile.php/31610/mod_assign/intro/down.png?ssl=1)
Bằng việc chuyển đổi qua chế độ bảo trì web, trang web chỉ hiển thị một trang thông báo trang web đang ở chế độ bảo trì, mọi hoạt động trên trang web đều không thể thực hiện được.
![[Thực hành] Cấu hình Laravel 8 503](https://i0.wp.com/james.codegym.vn/pluginfile.php/31610/mod_assign/intro/503.png?ssl=1)
Bước 2: Chuyển ứng dụng về trạng thái hoạt động
Sau khi chúng ta sửa đổi, nâng cấp trang web, chúng ta cần chuyển nó về trạng thái hoạt động như cũ. Chúng ta chỉ cần gõ lệnh sau.
php artisan up
Như vậy trang web trở lại hoạt động như bình thường.
Tổng kết
Qua 2 bài tập trên chúng ta đã luyện tập:
- Cấu hình các thông số cơ bản trong Laravel.
- Chuyển đổi trang web qua lại giữa trạng thái bảo trì và trạng thái hoạt động
Mã nguồn mẫu: https://github.com/ravenvn/greeting_codegym
Leave a Reply