Nhảy tới nội dung

Composer

Flarum sử dụng một chương trình có tên là Composer để quản lý các phần phụ thuộc và tiện ích mở rộng của nó. Bạn sẽ cần sử dụng composer nếu bạn muốn:

  • Cài đặt hoặc cập nhật Flarum
  • Cài đặt, cập nhật hoặc gỡ bỏ các tiện ích mở rộng Flarum

Hướng dẫn này được cung cấp dưới dạng giải thích ngắn gọn về Composer. Chúng tôi thực sự khuyên bạn nên tham khảo tài liệu chính thức để biết thêm thông tin.

Composer v2

Trong lịch sử, Composer đã gây ra các vấn đề về lưu trữ chia sẻ do sử dụng bộ nhớ lớn. Vào năm 2020, Composer v2 được phát hành với những cải tiến về hiệu suất và mức sử dụng bộ nhớ lớn giúp loại bỏ những vấn đề này. Đảm bảo rằng máy chủ của bạn đang sử dụng Composer v2!

Composer là gì?#

Composer là một công cụ để quản lý phụ thuộc trong PHP. Nó cho phép bạn khai báo các thư viện mà dự án của bạn phụ thuộc vào và nó sẽ quản lý (cài đặt/cập nhật) chúng cho bạn. — Giới thiệu Composer

Mỗi bản cài đặt Flarum chủ yếu bao gồm lõi Flarum và một tập hợp các tiện ích mở rộng. Mỗi phần trong số này có các phụ thuộc và bản phát hành riêng.

Ngày trước, các khuôn khổ diễn đàn sẽ quản lý các tiện ích mở rộng bằng cách yêu cầu người dùng tải lên các tệp zip có mã tiện ích mở rộng. Điều đó có vẻ đơn giản, nhưng các vấn đề nhanh chóng trở nên rõ ràng:

  • Tải lên các tệp zip ngẫu nhiên từ internet có xu hướng là một ý tưởng tồi. Việc yêu cầu các tiện ích mở rộng được tải xuống từ một nguồn trung tâm như Packagist khiến việc spam mã độc trở nên tẻ nhạt hơn và đảm bảo rằng mã nguồn có sẵn trên GitHub cho các tiện ích mở rộng miễn phí / công khai.
  • Giả sử Phần mở rộng A yêu cầu v4 của một thư viện nào đó và Phần mở rộng B yêu cầu v5 của cùng thư viện đó. Với giải pháp dựa trên zip, một trong hai phần phụ thuộc có thể ghi đè lên phần còn lại, gây ra tất cả các loại vấn đề không nhất quán. Hoặc cả hai sẽ cố gắng chạy cùng một lúc, điều này sẽ khiến PHP bị sập (bạn không thể khai báo cùng một lớp hai lần).
  • Các tệp zip có thể gây ra rất nhiều đau đầu nếu cố gắng tự động hóa việc triển khai, chạy các bài kiểm tra tự động hoặc mở rộng quy mô đến nhiều nút máy chủ.
  • Không có cách nào tốt để đảm bảo rằng các phiên bản tiện ích mở rộng xung đột không thể được cài đặt hoặc phiên bản PHP hệ thống và các yêu cầu về tiện ích mở rộng được đáp ứng.
  • Chắc chắn, chúng tôi có thể nâng cấp các tiện ích mở rộng bằng cách thay thế tệp zip. Nhưng nâng cấp lõi Flarum thì sao? Và làm thế nào chúng tôi có thể đảm bảo rằng các tiện ích mở rộng có thể khai báo phiên bản lõi nào mà chúng tương thích với?

Composer xử lý tất cả những vấn đề này và hơn thế nữa!

Flarum và Composer#

Khi bạn vào cài đặt Flarum, bạn thực sự đang làm 2 điều:

  1. Tải xuống "khung" bản soạn sẵn cho Flarum. Điều này bao gồm tệp index.php xử lý các yêu cầu web, tệp flarum cung cấp CLI và một loạt cấu hình máy chủ web và thiết lập thư mục. Điều này được lấy từ kho lưu trữ github của flarum/flarum, và không thực sự chứa bất kỳ mã nào cần thiết để Flarum chạy.
  2. Cài đặt các gói composer cần thiết cho Flarum, cụ thể là lõi Flarum và một số phần mở rộng đi kèm. Chúng được gọi bởi các tệp index.php flarum từ bước 1 và là quá trình triển khai của Flarum. Chúng được chỉ định trong tệp composer.json có trong khung.

Khi bạn muốn cập nhật Flarum hoặc thêm/cập nhật/xóa các tiện ích mở rộng, bạn sẽ làm như vậy bằng cách chạy các lệnh composer. Mỗi lệnh là khác nhau, nhưng tất cả các lệnh đều tuân theo cùng một quy trình chung:

  1. Cập nhật tệp composer.json để thêm/xóa/cập nhật gói.
  2. Thực hiện một loạt phép toán để có được phiên bản tương thích mới nhất của mọi thứ nếu có thể, hoặc tìm ra lý do tại sao việc sắp xếp được yêu cầu là không thể.
  3. Nếu mọi thứ hoạt động, hãy tải xuống các phiên bản mới của mọi thứ cần được cập nhật. Nếu không, hãy hoàn nguyên các thay đổi của composer.json

Khi chạy các lệnh composer.json, hãy đảm bảo chú ý đến kết quả đầu ra. Nếu có lỗi, nó có thể sẽ cho bạn biết liệu đó có phải là do sự không tương thích của tiện ích mở rộng, phiên bản PHP không được hỗ trợ, thiếu các tiện ích mở rộng PHP hay do nguyên nhân khác.

Tệp composer.json#

Như đã đề cập ở trên, toàn bộ cấu hình composer cho trang Flarum của bạn được chứa bên trong tệp composer.json. Bạn có thể tham khảo tài liệu về composer để biết một giản đồ cụ thể, nhưng bây giờ, hãy xem qua một chú thích composer.json từ flarum/flarum :

{    // Phần sau đây chủ yếu chỉ là siêu dữ liệu về gói.    // Đối với quản trị viên diễn đàn, điều này không thực sự quan trọng.    "name": "flarum/flarum",    "description": "Delightfully simple forum software.",    "type": "project",    "keywords": [        "forum",        "discussion"    ],    "homepage": "https://flarum.org/",    "license": "MIT",    "authors": [        {            "name": "Flarum",            "email": "[email protected]",            "homepage": "https://flarum.org/team"        }    ],    "support": {        "issues": "https://github.com/flarum/core/issues",        "source": "https://github.com/flarum/flarum",        "docs": "https://flarum.org/docs/"    },    // Kết thúc siêu dữ liệu
    // Phần tiếp theo này là phần chúng tôi quan tâm nhất.    // Đó là danh sách các gói chúng tôi muốn và các phiên bản cho mỗi gói.    // Chúng ta sẽ thảo luận về vấn đề này ngay sau đây.    "require": {        "flarum/core": "^0.1.0",        "flarum/approval": "^0.1.0",        "flarum/bbcode": "^0.1.0",        "flarum/emoji": "^0.1.0",        "flarum/lang-english": "^0.1.0",        "flarum/flags": "^0.1.0",        "flarum/likes": "^0.1.0",        "flarum/lock": "^0.1.0",        "flarum/markdown": "^0.1.0",        "flarum/mentions": "^0.1.0",        "flarum/nicknames": "^0.1.0",        "flarum/pusher": "^0.1.0",        "flarum/statistics": "^0.1.0",        "flarum/sticky": "^0.1.0",        "flarum/subscriptions": "^0.1.0",        "flarum/suspend": "^0.1.0",        "flarum/tags": "^0.1.0"    },
    // Cấu hình composer khác nhau. Những cái ở đây là mặc định hợp lý.    // Xem https://getcomposer.org/doc/06-config.md để biết danh sách các tùy chọn.    "config": {        "preferred-install": "dist",        "sort-packages": true    },
    // Nếu nhà soạn nhạc có thể tìm thấy phiên bản ổn định (không phải dev, alpha hoặc beta)    // của một gói, nó sẽ sử dụng cái đó. Nói chung, sản xuất    // các trang web không nên chạy phần mềm beta trừ khi bạn biết mình đang làm gì.    "prefer-stable": true}

Hãy tập trung vào phần require đó. Mỗi mục nhập là tên của một gói composer và một chuỗi phiên bản. Để đọc thêm về chuỗi phiên bản, hãy xem tài liệu về composer có liên quan.

Đối với các dự án Flarum, có một số loại mục nhập bạn sẽ thấy trong phần require của flarum /core cài đặt gốc của bạn:

  • Bạn PHẢI có mục nhập flarum/core. Điều này phải có một chuỗi phiên bản rõ ràng tương ứng với bản phát hành chính mà bạn muốn cài đặt. Đối với các phiên bản Flarum 1.x, đây sẽ là `^1.0.0'.
  • Bạn sẽ có một mục nhập cho mỗi tiện ích mở rộng mà bạn đã cài đặt. Một số tiện ích mở rộng đi kèm được bao gồm theo mặc định (vd: flarum/tags, flarum/suspend, vv), những người khác bạn sẽ thêm thông qua lệnh của trình soạn nhạc. Trừ khi bạn có lý do để làm khác (ví dụ: bạn đang thử nghiệm phiên bản beta của một gói), chúng tôi khuyên bạn nên sử dụng dấu hoa thị làm chuỗi phiên bản cho các tiện ích mở rộng (*). Điều này có nghĩa là "cài đặt phiên bản mới nhất tương thích với flarum/core của tôi". Một số tiện ích mở rộng / tính năng có thể yêu cầu các gói PHP không phải là tiện ích mở rộng Flarum. Ví dụ: bạn cần thư viện guzzle để sử dụng Driver Mailgun. Trong những trường hợp này, hướng dẫn cho tiện ích mở rộng / tính năng được đề cập phải giải thích chuỗi phiên bản nào được sử dụng.

Cách cài đặt Composer?#

Như với bất kỳ phần mềm nào khác, Composer trước tiên phải được cài đặt trên máy chủ nơi Flarum đang chạy. Có một số tùy chọn tùy thuộc vào loại lưu trữ web bạn có.

Máy chủ web chuyên dụng#

Trong trường hợp này, bạn có thể cài đặt composer theo khuyến nghị trong hướng dẫn Composer.

Managed / Shared hosting#

Nếu Composer không được cài đặt sẵn (bạn có thể kiểm tra điều này bằng cách chạy composer --version), bạn có thể sử dụng cài đặt thủ công. Chỉ cần tải composer.phar lên thư mục của bạn và chạy /path/to/your/php7 composer.phar COMMAND cho bất kỳ lệnh nào được ghi là composer COMMAND.

danger

Một số bài báo trên internet sẽ đề cập đến việc bạn có thể sử dụng các công cụ như PHP shell. Nếu bạn không chắc mình đang làm gì hoặc họ đang nói gì - hãy cẩn thận! Web shell không được bảo vệ là cực kỳ nguy hiểm.

Cách sử dụng Composer?#

Bạn sẽ cần sử dụng Composer qua giao diện Command-line interface (CLI). Đảm bảo bạn có thể truy cập máy chủ của mình qua Secure Shell (SSH).

Sau khi bạn đã cài đặt Composer, bạn sẽ có thể chạy các lệnh Composer trong thiết bị đầu cuối SSH của mình thông qua composer COMMAND.

Tối ưu hoá

Sau hầu hết các lệnh, bạn sẽ muốn chạy composer dump-autoload -a. Về cơ bản, điều này lưu trữ các tệp PHP để chúng chạy nhanh hơn.

Tôi không thể truy cập SSH#

Hầu hết các máy chủ lưu trữ tốt nên cung cấp quyền truy cập SSH cho lưu trữ được chia sẻ. Nếu máy chủ lưu trữ của bạn không (và bạn không thể chuyển sang máy chủ lưu trữ tốt cung cấp nó), hy vọng có thể vẫn chưa mất. Bạn có một số tùy chọn:

  • Sử dụng các lựa chọn thay thế như Pockethold để cài đặt Flarum. Lưu ý rằng bạn vẫn cần composer (và SSH) để cài đặt các tiện ích mở rộng.
  • Cài đặt trình soạn nhạc trên máy tính của bạn và chạy lệnh install cục bộ. Sau đó tải các tệp qua FTP lên máy chủ của bạn. Để thực hiện các sửa đổi (cập nhật Flarum, cài đặt / cập nhật/xóa phần mở rộng), hãy tải xuống phiên bản hiện tại của tệp, chạy bất kỳ lệnh trình soạn nhạc nào bạn cần cục bộ, sau đó thay thế các tệp composer.json composer.lock, và thư mục composer của cài đặt của bạn với bản sao cục bộ của bạn. Đảm bảo tạo bản sao lưu trước khi thực hiện việc này!
  • Một số máy chủ web có thể cung cấp GUI để quản lý nhà soạn nhạc. Phiên bản dòng lệnh nói chung là tốt nhất, nhưng nếu GUI là khả năng duy nhất, hãy tham khảo tài liệu của máy chủ của bạn để biết thông tin về cách sử dụng nó.

Lưu ý rằng những cách giải quyết này không được hỗ trợ chính thức! Cách duy nhất được hỗ trợ chính thức để cài đặt và quản lý Flarum là thông qua Composer.