Cách cài đặt và sử dụng Composer trên Debian 8
Composer là một công cụ quản lý phụ thuộc phổ biến cho PHP, được tạo ra chủ yếu để tạo điều kiện thuận lợi cho việc cài đặt và cập nhật cho các phụ thuộc của dự án. Nó sẽ kiểm tra các gói khác mà một dự án cụ thể phụ thuộc vào và cài đặt chúng cho bạn, sử dụng các version phù hợp theo yêu cầu của dự án.Hướng dẫn này sẽ chỉ ra cách cài đặt và bắt đầu với Composer trên server Debian 8.
Yêu cầu
Đối với hướng dẫn này, bạn cần :
- Một server Debian 8 với user sudo không phải root, như trong Cài đặt server ban đầu với Debian 8
Bước 1 - Cài đặt Phụ thuộc
Trước khi ta download và cài đặt Composer, ta cần đảm bảo server của ta đã cài đặt tất cả các phần phụ thuộc cần thiết.
Đầu tiên, hãy cập nhật bộ nhớ cache của trình quản lý gói.
- sudo apt-get update
Bây giờ, hãy cài đặt các phụ thuộc. Ta cần curl
để download Composer và php5-cli
, một gói PHP, để cài đặt và chạy nó. Composer sử dụng git
, một hệ thống kiểm soát version , để download các phụ thuộc của dự án. Bạn có thể cài đặt tất cả ba gói này cùng một lúc bằng lệnh này:
- sudo apt-get install curl php5-cli git
Bây giờ các phụ thuộc cần thiết đã được cài đặt, hãy tiến hành và cài đặt chính Composer.
Bước 2 - Download và cài đặt composer
Ta sẽ làm theo các hướng dẫn như được viết trong tài liệu chính thức của Composer với một sửa đổi nhỏ để cài đặt Composer trên phạm vi global theo /usr/local/bin
. Điều này sẽ cho phép mọi user trên server sử dụng Composer.
Download trình cài đặt vào /tmp
.
- php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"
Truy cập trang pubkey và chữ ký của Composer và sao chép chuỗi SHA-384 ở trên cùng. Sau đó, chạy lệnh sau bằng cách thay thế sha_384_string
bằng chuỗi bạn đã sao chép.
- php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === 'sha_384_string') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"
Lệnh này kiểm tra hàm băm của file bạn đã download với hàm băm chính xác từ trang web của Composer. Nếu khớp, nó sẽ in Trình cài đặt được xác minh . Nếu không khớp, nó sẽ in Installer bị hỏng , trong trường hợp đó, bạn nên kiểm tra lại xem bạn đã sao chép đúng chuỗi SHA-384 chưa.
Tiếp theo, ta sẽ cài đặt Composer. Để cài đặt nó trên phạm vi global trong /usr/local/bin
, ta sẽ sử dụng cờ --install-dir
; --filename
cho trình cài đặt biết tên của file thực thi của Composer. Đây là cách thực hiện việc này trong một lệnh:
- sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
Bạn sẽ thấy một thông báo như sau:
OutputAll settings correct for using Composer Downloading... Composer (version 1.3.2) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer
Bạn có thể xác minh Composer đã được cài đặt chính xác bằng cách kiểm tra version của nó.
- composer --version
Bạn sẽ thấy version đã được cài đặt. Tại thời điểm viết bài này, version là:
Composer version 1.3.2 2017-01-27 18:23:41
Cuối cùng, bạn có thể gỡ bỏ tập lệnh trình cài đặt một cách an toàn khi bạn không cần nó nữa.
- rm /tmp/composer-setup.php
Composer hiện đã được cài đặt và chạy, đang chờ dự án của bạn sử dụng. Trong phần tiếp theo, bạn sẽ tạo file composer.json
, bao gồm các thư viện PHP mà dự án của bạn phụ thuộc vào.
Bước 3 - Tạo file composer.json
Để sử dụng Composer cho một dự án, bạn cần file composer.json
. Tệp composer.json
cho Composer biết phụ thuộc nào mà nó cần download cho dự án của bạn và version nào của mỗi gói được phép cài đặt. Điều này rất quan trọng để giữ cho dự án của bạn nhất quán và tránh cài đặt các version không ổn định có thể gây ra sự cố tương thích ngược.
Bạn không cần phải tạo file này theo cách thủ công; rất dễ gặp lỗi cú pháp nếu bạn làm vậy. Composer tự động tạo ra các composer.json
file khi bạn thêm một phụ thuộc vào dự án của bạn bằng cách sử dụng require
lệnh. Các phần phụ thuộc bổ sung cũng có thể được thêm theo cách tương tự mà không cần phải chỉnh sửa file này theo cách thủ công.
Quá trình sử dụng Composer để cài đặt một gói phụ thuộc trong một dự án thường bao gồm các bước sau:
- Xác định loại thư viện mà ứng dụng cần
- Nghiên cứu một thư viện open-souce phù hợp trên Packagist.org , repository chính thức cho Composer
- Chọn gói bạn muốn phụ thuộc vào
- Run
composer require
bao gồm phần phụ thuộc trong filecomposer.json
và cài đặt gói
Ta sẽ xem điều này hoạt động như thế nào trong thực tế với một ứng dụng demo đơn giản.
Mục tiêu của ứng dụng này là chuyển một câu đã cho thành một slug , là một chuỗi thân thiện với URL. Điều này được sử dụng để chuyển đổi tiêu đề trang thành đường dẫn URL (như phần cuối cùng của URL cho hướng dẫn này).
Hãy bắt đầu bằng cách tạo một folder cho dự án. Ta sẽ gọi nó là slugify :
- cd ~
- mkdir slugify
- cd slugify
Tiếp theo, hãy tìm kiếm thư viện mà ta cần sử dụng.
Tìm kiếm các Gói hàng trên Packagist
Tiếp theo, ta sẽ tìm kiếm Packagist cho một gói để giúp tạo slug . Nếu bạn tìm kiếm “slug”, bạn sẽ thấy một danh sách các gói. Ở bên phải của mỗi gói trong danh sách, bạn sẽ thấy hai con số: số trên cùng là số lần gói được cài đặt và số ở dưới cùng cho biết số lần một gói được gắn dấu sao trên GitHub.
Nói chung, các gói có nhiều bản cài đặt và số sao có xu hướng ổn định hơn vì nhiều người đang sử dụng chúng. Việc kiểm tra mô tả gói cũng rất quan trọng đảm bảo gói thực sự là thứ bạn đang tìm kiếm.
Những gì ta cần là một công cụ chuyển đổi string-to-slug đơn giản. Ví dụ ở đây, ta sẽ sử dụng gói cocur/slugify
. Nó có vẻ là một trận đấu tốt vì nó có một số lượng cài đặt hợp lý và các ngôi sao.
Bạn sẽ nhận thấy rằng các gói trên Packagist có tên nhà cung cấp và tên gói. Mỗi gói có một định danh duy nhất (một không gian tên) ở cùng một định dạng mà GitHub sử dụng cho các kho của nó: vendor/package
. Thư viện ta muốn cài đặt sử dụng không gian tên cocur/slugify
. Không gian tên là những gì ta cần để yêu cầu gói trong dự án của ta .
Bây giờ ta đã xác định được thư viện mình muốn, hãy thêm nó vào file composer.json
.
Yêu cầu một gói
Ta có thể chạy trình composer require
bao gồm thư viện làm phụ thuộc và cũng tạo file composer.json
cho dự án:
- composer require cocur/slugify
OutputUsing version ^2.3 for cocur/slugify ./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Installing cocur/slugify (v2.3) Downloading: 100% Writing lock file Generating autoload files
Như bạn thấy từ kết quả , Composer tự động quyết định version của gói nên được sử dụng. Nếu bạn kiểm tra folder của dự án ngay bây giờ, nó sẽ chứa hai file mới: composer.json
và composer.lock
, và một vendor/
folder :
- ls -l
Outputtotal 12 -rw-r--r-- 1 sammy sammy 59 Feb 1 13:43 composer.json -rw-r--r-- 1 sammy sammy 2896 Feb 1 13:43 composer.lock drwxr-xr-x 4 sammy sammy 4096 Feb 1 13:43 vendor
Tệp composer.lock
được sử dụng để lưu trữ thông tin về version nào của mỗi gói được cài đặt và đảm bảo các version tương tự được sử dụng nếu ai đó sao chép dự án của bạn và cài đặt các phần phụ thuộc của nó. Nhà vendor/
folder là nơi chứa các phụ thuộc của dự án. Nhà vendor/
folder không được commit kiểm soát version ; bạn chỉ cần bao gồm các composer.json
và composer.lock
file .
Lưu ý: Khi cài đặt một dự án đã chứa file composer.json
, bạn cần chạy composer install
để download các phụ thuộc của dự án.
Bạn có thể nhận thấy rằng file composer.lock
bao gồm thông tin cụ thể về version của các thư viện PHP mà dự án của ta phụ thuộc vào. Composer sử dụng một cú pháp đặc biệt để hạn chế các thư viện trong các version cụ thể. Hãy xem nó hoạt động như thế nào.
Hiểu các ràng buộc về version
Nếu bạn kiểm tra nội dung của file composer.json
của bạn , bạn sẽ thấy thông tin như sau:
- cat composer.json
{ "require": { "cocur/slugify": "^2.3" } }
Có một dấu mũ, ^
, trước số version . Composer hỗ trợ một số ràng buộc và định dạng khác nhau để xác định version gói yêu cầu, nhằm cung cấp tính linh hoạt trong khi vẫn giữ cho dự án của bạn ổn định. Toán tử dấu mũ được sử dụng bởi file composer.json
được tạo tự động là toán tử được khuyến khích để có khả năng tương tác tối đa, sau khi lập version ngữ nghĩa. Trong trường hợp này, nó xác định 1.3 là version tương thích tối thiểu và cho phép cập nhật lên bất kỳ version nào trong tương lai dưới 2.0 . Bạn có thể đọc thêm thông tin về cơ sở lý luận của các version trong tài liệu lập version của Composer .
Lúc này, ta đã thấy cách thêm và hạn chế các thư viện PHP mà dự án của ta cần với Composer bằng cách sử dụng file composer.json
. Bước tiếp theo là thực sự sử dụng các thư viện này bên trong ứng dụng của ta . Với mục đích đó, Composer cung cấp file autoload.php
để hỗ trợ quá trình tải các thư viện bên ngoài.
Bước 4 - Bao gồm Tập lệnh Tự động tải
Composer cung cấp một script tự động tải mà bạn có thể đưa vào dự án của bạn để tự động tải miễn phí. Điều này làm cho việc làm việc với các phụ thuộc và xác định không gian tên của bạn dễ dàng hơn nhiều. Điều duy nhất bạn cần làm là đưa file vendor/autoload.php
vào các tập lệnh PHP của bạn trước khi khởi tạo bất kỳ lớp nào.
Hãy quay lại ứng dụng ví dụ slugify
. Sử dụng nano
hoặc editor yêu thích của bạn, tạo tập lệnh test.php
nơi ta sẽ sử dụng thư viện cocur/slugify
.
- nano test.php
<?php require __DIR__ . '/vendor/autoload.php'; use Cocur\Slugify\Slugify; $slugify = new Slugify(); echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
Bạn có thể chạy tập lệnh trong dòng lệnh với:
- php test.php
Điều này sẽ tạo ra kết quả :
Outputhello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
Bạn đã cài đặt đầy đủ Composer, nhưng hãy đọc để tìm hiểu cách duy trì cài đặt.
Bước 5 - Cập nhật Composer và Phụ thuộc Dự án (Tùy chọn)
Để tự cập nhật Composer, bạn có thể sử dụng lệnh tích hợp self-update
mà nó cung cấp. Vì Composer được cài đặt trên phạm vi global nên bạn cần chạy lệnh với quyền root.
- sudo -H composer self-update
Bạn có thể cập nhật một hoặc nhiều thư viện cụ thể bằng cách liệt kê chúng cụ thể với composer update
.
- composer update namespace/package
Nếu bạn muốn cập nhật tất cả các phụ thuộc dự án của bạn , hãy chạy lệnh update
.
- composer update
Điều này sẽ kiểm tra các version mới hơn của các thư viện mà bạn yêu cầu trong dự án của bạn . Nếu tìm thấy version mới hơn và nó tương thích với giới hạn version được xác định trong file composer.json
, version đó sẽ thay thế version đã cài đặt trước đó. Tệp composer.lock
sẽ được cập nhật để áp dụng thay đổi này.
Kết luận
Composer là một công cụ mạnh mẽ mà mọi nhà phát triển PHP nên có trong vành đai tiện ích của họ. Ngoài việc cung cấp một cách dễ dàng và tin cậy để quản lý các phụ thuộc của dự án, nó còn cài đặt một tiêu chuẩn thực tế mới để chia sẻ và khám phá các gói PHP do cộng đồng tạo ra.
Trong hướng dẫn này, ta đã mô tả ngắn gọn những điều cơ bản về Composer: cách cài đặt nó, cách tạo một dự án và tìm các gói cho nó cũng như cách duy trì nó. Để tìm hiểu thêm, bạn có thể khám phá tài liệu chính thức của Composer .
Các tin liên quan