Khái niệm cơ bản về Pagoda Box

Pagoda Box tương tự như Heroku vậy. Tuy nhiên hiện tại Pagoda Box được tối ưu hoá chỉ cho PHP. An Object Oriented Hosting Framework - một khái niệm khá là hấp dẫn Tài liệu này mình dịch từ Doc hướng dẫn của Pagoda Box. Các bạn có thể xem bản tiếng Anh tại đây.

Boxfile là gì?

  • Tất cả cấu hình liên quan đến việc triển khai ứng dụng của bạn và cơ sở hạ tầng được chứa trong một tập tin duy nhất yaml tên "Boxfile", khi cần thiết nó được coi như là một phần của code repo của dự án của bạn. Boxfiles được dự định sẽ được tái sử dụng bất cứ khi nào có thể, đặc biệt là khi sử dụng các khuôn khổ cho nhiều dự án.

Những điều quan trọng cần biết về các Boxfile

  • Boxfile của bạn phải được đặt tên là "Boxfile" (vốn B và không có tập tin mở rộng) hoặc nó sẽ không được công nhận bởi cơ triển khai của chúng tôi.

  • Các Boxfile phải được đặt ở thư mục gốc của repo dự án của bạn.

  • Các Boxfile phải được đánh dấu yaml hợp lệ. Bạn có thể bắt đầu với yaml của bạn ở đây: yaml.org/start.html hoặc kiểm tra cú pháp của bạn ở đây: yamllint.com.

  • Services được tạo ra từ các Boxfile, nhưng loại bỏ chúng khỏi Boxfile sẽ không tiêu diệt chúng. Services chỉ có thể bị phá hủy từ Dashboard hoặc các Pagoda CLI.

  • Boxfile chỉ sử dụng cần thiết khi giá trị mặc định là không đủ.

  • Bạn chỉ cần xác định sự khác biệt giữa các cấu hình mặc định và cấu hình cụ thể của bạn. Điều đó có nghĩa, nếu chỉ có một thiết lập cần phải được thay đổi, tạo ra một Boxfile chỉ với duy nhất một thiết lập. Không cần phải overboard.

  • Kể từ khi ứng dụng của bạn được theo dõi qua git, như vậy là Boxfile của bạn. Với mỗi deploy mới (bao gồm cả rollbacks), cấu hình Boxfile của bạn sẽ được loaded và phù hợp với nội dung của bạn Boxfile ở thời điểm commit.

Sample Boxfile

Untitled.png

Cấu trúc Boxfile

  • Ứng dụng của bạn được tạo thành từ các services. Đơn giản chỉ cần đặt, một dịch vụ là một phần của cơ sở hạ tầng của ứng dụng của bạn được giao nhiệm vụ với một chức năng cụ thể. Hiện nay có năm loại hình services: Các dịch vụ Web, Cơ sở dữ liệu, Cache, lưu trữ và công nhân. Mỗi một dịch vụ được cấu hình trong Boxfile.

  • Mỗi dịch vụ có một id dịch vụ. Ví dụ: web1, web2, database1, database2, storage1, cache1, worker1,...

  • Tất cả cấu hình là duy nhất cho một services ID. Điều quan trọng là phải hiểu rằng mỗi services là hoàn toàn tách biệt với những người khác. Cài đặt định cho web1 sẽ không áp dụng cho web2. Bất cứ điều gì được chỉ định theo một services ID này sẽ chỉ áp dụng cho rằng services cụ thể.

Boxfile Structure

Untitled.png

  • Yaml rất cầu kỳ về indentation. Indentation là những gì được sử dụng để xác định các mối quan hệ cấu trúc của thông tin trong Boxfile của bạn. Nested "nodes" thuộc về một parent "node" như minh họa dưới đây. Untitled.png

The Boxfile is an Infrastructure "Seed" File

  • Trong nhiều cách, Boxfile hoạt động như một "Seed" file cho cơ sở hạ tầng của bạn. Nó cung cấp cho bạn khả năng để khởi động services và thêm những thứ như biến môi trường và công việc cron trên deploy, chỉ đơn giản bằng cách including chúng trong Boxfile. Trên từng triển khai, chúng tôi kiểm tra tất cả các dịch vụ và thiết lập quy định tại các Boxfile của bạn chống lại những người đã tồn tại trong ứng dụng của bạn. Nếu một services hoặc settings trong Boxfile của bạn không tồn tại, nó sẽ tự động được tạo ra. Điều này cho phép bạn triển khai databases và các services khác khi chạy một ứng dụng mới.

Heads-Up on Creating Things from the Boxfile

  • Nếu bạn có các services hoặc settings Boxfile của bạn mà bạn xóa hoặc sửa đổi thông qua bảng điều khiển ứng dụng của bạn, họ sẽ triển khai tiếp trừ khi bạn loại bỏ chúng khỏi Boxfile của bạn. Trên flip-side, nếu bạn xoá các dịch vụ từ Boxfile của bạn, họ sẽ không được gỡ bỏ ứng dụng của bạn, trừ khi bạn loại bỏ chúng thông qua bảng điều khiển.

The Boxfile.install

  • Boxfile.install là một Boxfile tùy chọn cho phép bạn áp dụng các tùy chọn cấu hình để chỉ triển khai các ứng dụng. Tất cả các tùy chọn cấu hình đều có sẵn trong Boxfile.install. Boxfile và Boxfile.install có thể tồn tại trong cùng một repo. Boxfile.installs chủ yếu được sử dụng để tạo ra Quickstarts.

How the Boxfile.install Works

  • Cài đặt trong Boxfile.install chỉ áp dụng cho lần deploy đầu tiên của một ứng dụng. Trong quá trình triển khai các Boxfile và Boxfile.install được sáp nhập và phân tích như một Boxfile duy nhất. Nếu một thiết lập cụ thể được quy định trong cả hai thì Boxfile.install sẽ được ưu tiên.

  • Trên tất cả các deploy tiếp theo, các Boxfile.install là hoàn toàn được bỏ qua.

Trường hợp sử dụng

  • Có rất nhiều trường hợp sử dụng cho Boxfile.installs, nhưng đây chỉ là một vài ví dụ:

Sample Data Imports

  • Khi tạo một quickstart, bạn sẽ muốn nhập dữ liệu mẫu vào databases của bạn để cung cấp cho người dùng với một ứng dụng đầy đủ chức năng. Tuy nhiên, bạn không muốn chạy dữ liệu import trên tất cả các deploys vì nó sẽ xóa bất kỳ thay đổi nào của dữ liệu. Import trong deploy hook trong Boxfile.install của bạn sẽ đảm bảo việc import chỉ chạy trên deploy đầu tiên.

Automating Auto-Installers

  • CMS include sẽ tự động cài đặt để giúp người dùng chạy. Những tính năng tự động cài đặt thông thường không làm việc tốt trong môi trường chỉ đọc của Pagoda Box's. Một số người dùng đã sử dụng Boxfile.installs để deploy hooks và một scripting magic để làm công việc tự động cài đặt này.

Global Config Options

  • Global config được áp dụng cho toàn bộ ứng dụng của bạn.

Biến môi trường

  • Biến môi trường có thể được sử dụng để che giấu những thông tin nhạy cảm, đơn giản hóa cách quản lý đa môi trường, hoặc bất kỳ cách nào khác bạn có thể nghĩ ra để sử dụng biến môi trường trong ứng dụng của bạn. Chúng có thể được tạo ra từ Boxfile của bạn.

  • Untitled.png

  • Để biết thêm thông tin về Biến môi trường hãy vào đây.

Build Config Options

  • Bất cứ khi nào bạn triển khai ứng dụng của bạn, một "build instance" được được cung cấp cho các mục đích duy nhất của việc xây dựng code của bạn và chuẩn bị nó cho deploy. Code chỉ được deploy một lần, sau đó triển khai đến tất cả các code service instances (webs & workers). Các thiết lập này cho phép bạn cấu hình môi trường trong đó code của bạn được chuẩn bị triển khai. Họ cũng cho phép bạn được phát triển tùy biến cách code của bạn .

  • Xây dựng cấu hình tùy chọn này được trình bày chi tiết trong Build Settings in the Boxfile doc.

Service Specific Configurations

  • Mỗi service có các cấu hình cụ thể có sẵn cho nó. Dưới đây là những tài liệu phác họa các tùy chọn này:

Web Service Settings

Database Service Settings

Network Storage Service Settings

Cache Service Settings

Worker Service Settings


All Rights Reserved