Việc bảo trì 1 website là rất cần thiết trong quá trình sử dụng, khi mà hệ thống cần nâng cấp hoặc sửa đổi các thành phần hoặc chức năng. Để giải quyết điều này, Laravel đã cung cấp chế độ bảo trì giúp việc thông báo, sửa chữa và nâng cấp các chức năng không bị ảnh hưởng khi phát sinh các sự cố ngoài ý muốn.

Cách thức hoạt động 

Khi mà website của các đồng code bật chế độ bảo trì thì tất cả các request gửi đến từ người dùng sẽ được điều hướng tới 1 View bảo trì dưới dạng status là 503.

Để bật chế độ bảo trì, tại hạ sẽ chạy câu lệnh sau trong command line:

php artisan down

và kết quả sẽ thông báo là website đã bật chế độ bảo trì

laravel maintaince

Hiển thị mặc định trên view sẽ như sau

Laravel Maintaince

Tùy chỉnh View

- Để có thể tùy chỉnh trang bảo trì theo ý của các đồng code, Laravel cho phép các đồng code tạo ra file view trong thư mục resources/views/errors/503.blade.php, lý do là khi chế độ bảo trì được bật, một ngoại lệ MaintenanceModeException sẽ trả về status có dạng 503.

laravel maintaince

- Sau đó các đồng code có thể tự tùy chỉnh HTML cũng như style CSS cho các thuộc tính bên trong view này, dưới đây là code tùy chỉnh của tại hạ cho view 503.blade.php

<style>
    .position-ref {
        position: relative;
    }
    .flex-center {
        align-items: center;
        display: flex;
        justify-content: center;
    }
    .full-height {
        height: 100vh;
    }
    .content {
        text-align: center;
    }
    .title {
        font-family: 'Raleway', sans-serif;
        font-size: 84px;
        font-weight: 100;
        color: #636b6f;
    }
</style>
<div class="flex-center position-ref full-height">
    <div class="content">
        <img src="{{ asset('/images/maintain.png') }}" alt="bảo trì">
        <div class="title">
            {{ $exception->getMessage() }}
        </div>
    </div>
</div>

- dòng {{ $exception->getMessage() }} chính là dòng message mà khi các đồng code bật chế độ maintaince lên có kèm theo option này như dưới đây

php artisan down --message="Website bao tri" --retry=60

- Option message sẽ không có nếu không sử dụng, retry là option sử dụng Retry-After Http để thử lại sau khoảng thời gian là giây đã set, nó giúp một số trình thu thập thông tin và trình thu thập thông tin, như Googlebot có thể biết để tiếp tục lập chỉ mục trang web khi thời gian ngừng hoạt động kết thúc.

Ở version mới nhất là 8.x của Laravel, nó còn hỗ trợ thêm 1 số option sau:

--redirect: có thể sử dụng để điều hướng sang 1 URL nào đó nếu muốn khi website đang ở chế độ bảo trì. VD: --redirect=https://www.google.com.vn

--render: tùy chọn render ra view mà các đồng code mong muốn. VD: --render="errors::503" hoặc --render="errors::maintain"

--secret: sử dụng mã bí mật để bypass qua chế độ bảo trì. VD: https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515

Ngoài việc bật chế độ bảo trì như trên, các đồng code cũng có thể khai báo trong Middleware như ở đây.

OK, sau khi mà đã sửa chữa cũng như nâng cấp xong thì chắc chắn là phải tắt chế độ bảo trì đi chứ nhỉ, rất đơn giản các đồng code chỉ gõ dòng lệnh sau trong command line cho tại hạ là mọi chuyện sẽ ổn =))

php artisan up

Tóm cái váy lại ở bài viết này tại hạ cũng chỉ muốn cho anh em đồng code biết cách chuyển sang chế độ bảo trì trong Laravel nó nhanh - gọn - lẹ như nào thôi =)), Cảm ơn ae đã đón đọc!.