Cách cài đặt và sử dụng Composer trên Ubuntu 18.04
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 để hỗ trợ cài đặt và cập nhật cho các phụ thuộc 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.Trong hướng dẫn này, bạn sẽ cài đặt và bắt đầu với Composer trên hệ thống Ubuntu 18.04.
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần :
- Một server Ubuntu 18.04 được cài đặt theo hướng dẫn cài đặt server ban đầu Ubuntu 18.04 , bao gồm user không phải root có quyền sudo và firewall .
Bước 1 - Cài đặt Phụ thuộc
Trước khi download và cài đặt Composer, bạn cần đảm bảo server của bạn đã được cài đặt tất cả các phần phụ thuộc.
Trước tiên, hãy cập nhật cache ẩn của trình quản lý gói bằng lệnh:
- sudo apt update 
Bây giờ, hãy cài đặt các phụ thuộc.  Ta   cần  curl để  download  Composer và php-cli để cài đặt và chạy nó. Gói php-mbstring là cần thiết để cung cấp các chức năng cho thư viện mà  ta  sẽ sử dụng. git được sử dụng bởi Composer để  download  các phụ thuộc của dự án và unzip để  extract  các gói đã nén. Mọi thứ có thể được cài đặt bằng lệnh sau:
- sudo apt install curl php-cli php-mbstring git unzip 
Với các yêu cầu đã được cài đặt, ta có thể tự cài đặt Composer.
Bước 2 - Download và cài đặt composer
Composer cung cấp một trình cài đặt , được viết bằng PHP. Ta sẽ download , xác minh nó không bị hỏng và sau đó sử dụng nó để cài đặt Composer.
 Đảm bảo rằng bạn đang ở trong folder  chính  của bạn , sau đó truy xuất trình cài đặt bằng curl :
- cd ~ 
- curl -sS https://getcomposer.org/installer -o composer-setup.php 
Tiếp theo, xác minh trình cài đặt trùng với hàm băm SHA-384 cho trình cài đặt mới nhất được tìm thấy trên trang Khóa / Chữ ký của người soạn thảo . Sao chép băm từ trang đó và lưu trữ dưới dạng biến shell:
- HASH=544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061 
Đảm bảo rằng bạn thay thế băm mới nhất cho giá trị được đánh dấu.
Bây giờ thực thi tập lệnh PHP sau để xác minh lệnh cài đặt có an toàn để chạy:
- php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" 
Bạn sẽ thấy kết quả sau.
Installer verified Nếu bạn thấy Installer corrupt , thì bạn cần  download  lại  lệnh cài đặt  và kiểm tra lại xem bạn có đang sử dụng mã băm chính xác hay không. Sau đó chạy lệnh để xác minh lại trình cài đặt. Khi bạn có trình cài đặt đã được xác minh, bạn có thể tiếp tục.
 Để cài đặt trình composer  trên phạm vi global , hãy sử dụng lệnh sau sẽ  download  và cài đặt  Composer  dưới dạng lệnh trên toàn hệ thống có tên là trình composer , trong /usr/local/bin :
- sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer 
Bạn sẽ thấy kết quả sau:
OutputAll settings correct for using Composer Downloading...  Composer (version 1.6.5) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer Để kiểm tra cài đặt của bạn, hãy chạy:
- composer 
Và bạn sẽ thấy kết quả này hiển thị version và đối số của Composer .
Output   ______   / ____/___  ____ ___  ____  ____  ________  _____  / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/                     /_/ Composer version 1.6.5 2018-05-04 11:44:59  Usage:   command [options] [arguments]  Options:   -h, --help                     Display this help message   -q, --quiet                    Do not output any message   -V, --version                  Display this application version       --ansi                     Force ANSI output       --no-ansi                  Disable ANSI output   -n, --no-interaction           Do not ask any interactive question       --profile                  Display timing and memory usage information       --no-plugins               Whether to disable plugins.   -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.   -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug . . . Điều này xác minh Composer đã được cài đặt thành công trên hệ thống của bạn và khả dụng trên toàn hệ thống.
Lưu ý: Nếu bạn muốn có các file thực thi Composer riêng biệt cho từng dự án mà bạn lưu trữ trên server này, bạn có thể cài đặt nó local trên cơ sở từng dự án. User NPM sẽ quen thuộc với cách tiếp cận này. Phương pháp này cũng hữu ích khi user hệ thống của bạn không có quyền cài đặt phần mềm trên toàn hệ thống.
 Để thực hiện việc này, hãy sử dụng lệnh php composer-setup.php . Thao tác này sẽ tạo file  composer.phar trong folder  hiện tại của bạn, file  này có thể được thực thi bằng ./composer.phar command .
Bây giờ ta hãy xem xét việc sử dụng Composer để quản lý các phụ thuộc.
Bước 3 - Sử dụng Composer trong một dự án PHP
Các dự án PHP thường phụ thuộc vào các thư viện bên ngoài và việc quản lý các phụ thuộc đó và các version của chúng có thể khó khăn. Composer giải quyết vấn đề đó bằng cách theo dõi các phần phụ thuộc của bạn và giúp người khác dễ dàng cài đặt chúng.
 Để sử dụng Composer trong dự án  của bạn , bạn cần có 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 cực kỳ 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 các vấn đề 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 khi bạn làm như 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. Bạn có thể thêm các phần phụ thuộc bổ sung 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 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 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 requirebao gồm phần phụ thuộc trong filecomposer.jsonvà cài đặt gói.
Hãy thử điều này với một ứng dụng demo.
Mục tiêu của ứng dụng này là chuyển đổi một câu đã cho thành một chuỗi thân thiện với URL - một slug . Điều này thường đượ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 của ta . Ta sẽ gọi nó là slugify :
- cd ~ 
- mkdir slugify 
- cd slugify 
Bây giờ đã đến lúc tìm kiếm Packagist.org cho một gói có thể giúp ta tạo slug . Nếu bạn tìm kiếm cụm từ “slug” trên Packagist, bạn sẽ nhận được kết quả tương tự như sau:
Bạn sẽ thấy hai số ở bên phải của mỗi gói trong danh sách. Số ở trên cùng biểu thị 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 . Bạn có thể sắp xếp lại thứ tự các kết quả tìm kiếm dựa trên những con số này (tìm hai biểu tượng ở bên phải của thanh tìm kiếm). Nói chung, các gói có nhiều cài đặt hơn và nhiều sao hơn có xu hướng ổn định hơn, vì có rất nhiều người đang sử dụng chúng. Điều quan trọng là phải kiểm tra mô tả gói về mức độ liên quan đảm bảo đó là thứ bạn cần.
  Ta  cần một bộ chuyển đổi chuỗi thành chuỗi đơn giản. Từ kết quả tìm kiếm, gói cocur/slugify có vẻ là một kết hợp tốt, với số lượng cài đặt hợp lý và số sao. (Gói hàng ở phía dưới trang xa hơn một chút so với ảnh chụp màn hình.)
 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 repository  của nó, ở dạng vendor / package . Thư viện  ta  muốn cài đặt sử dụng không gian tên cocur/slugif . Bạn cần không gian tên để yêu cầu gói trong dự án của bạn.
  Đến đây bạn  biết chính xác gói nào bạn muốn cài đặt, hãy chạy trình composer require bao gồm gói đó làm phụ thuộc và cũng tạo file  composer.json cho dự án:
- composer require cocur/slugify 
Bạn sẽ thấy kết quả này khi Composer download phần phụ thuộc:
OutputUsing version ^3.1 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 (v3.1): 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 để 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 folder  vendor :
- ls -l 
Outputtotal 12 -rw-rw-r-- 1 sammy sammy   59 Jul 11 16:40 composer.json -rw-rw-r-- 1 sammy sammy 2934 Jul 11 16:40 composer.lock drwxrwxr-x 4 sammy sammy 4096 Jul 11 16:40 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ụ thuộc của nó. Thư mục vendor là nơi chứa các phụ thuộc của dự án. Các vendor folder  không cần phải được  commit  vào điều khiển version  - bạn chỉ cần bao gồm các  file  composer.json và composer.lock.
 Khi cài đặt một dự án đã chứa file  composer.json , hãy chạy composer install để  download  các phần phụ thuộc của dự án.
 Hãy xem qua các ràng buộc của 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 
Output{     "require": {         "cocur/slugify": "^3.1"     } } sam Bạn có thể nhận thấy ký tự đặc biệt ^ trước số version  trong composer.json . 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 cách lập phiên bản ngữ nghĩa . Trong trường hợp này, nó xác định 3.1 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 4.0 .
 Nói chung, bạn sẽ không cần phải can thiệp vào các ràng buộc version  trong file  composer.json  của bạn . Tuy nhiên, một số tình huống có thể yêu cầu bạn chỉnh sửa các ràng buộc theo cách thủ công – ví dụ: khi một version  mới chính của thư viện yêu cầu của bạn được phát hành và bạn muốn nâng cấp hoặc khi thư viện bạn muốn sử dụng không tuân theo cách lập version  ngữ nghĩa.
Dưới đây là một số ví dụ để bạn hiểu rõ hơn về cách hoạt động của các ràng buộc version Composer:
| Hạn chế | Ý nghĩa | Các version mẫu được phép | 
|---|---|---|
| ^ 1,0 | > = 1,0 <2,0 | 1.0, 1.2.3, 1.9.9 | 
| ^ 1.1.0 | > = 1.1.0 <2.0 | 1.1.0, 1.5.6, 1.9.9 | 
| ~ 1.0 | > = 1,0 <2,0,0 | 1.0, 1.4.1, 1.9.9 | 
| ~ 1.0.0 | > = 1.0.0 <1.1 | 1.0.0, 1.0.4, 1.0.9 | 
| 1.2.1 | 1.2.1 | 1.2.1 | 
| 1. * | > = 1,0 <2,0 | 1.0.0, 1.4.5, 1.9.9 | 
| 1.2. * | > = 1,2 <1,3 | 1.2.0, 1.2.3, 1.2.9 | 
Để có cái nhìn chuyên sâu hơn về các ràng buộc của version Composer, hãy xem tài liệu chính thức .
Tiếp theo, hãy xem cách tải các phụ thuộc tự động bằng Composer.
Bước 4 - Bao gồm Tập lệnh Tự động tải
Vì bản thân PHP không tự động tải các lớp, Composer cung cấp một tập lệnh 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 giúp làm việc với các phụ thuộc 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. Tệp này được tạo tự động bởi Composer khi bạn thêm phần phụ thuộc đầu tiên  của bạn .
 Hãy thử nó trong ứng dụng của  ta . Tạo file  test.php và mở nó trong editor  của bạn:
- nano test.php 
Thêm đoạn mã sau vào file  vendor/autoload.php , tải phần phụ thuộc cocur/slugify và sử dụng nó để tạo một slug:
<?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!'); Lưu file và thoát khỏi editor .
Bây giờ hãy chạy tập lệnh:
- php test.php 
Điều này tạo ra  kết quả  hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it .
Sự phụ thuộc cần cập nhật khi có version mới, vì vậy hãy xem cách xử lý điều đó.
Bước 5 - Cập nhật dependencies của dự án
  Khi  nào bạn muốn cập nhật các phụ thuộc dự án  của bạn  lên các version  mới hơ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 , Composer 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.
Bạn cũng có thể cập nhật một hoặc nhiều thư viện cụ thể bằng cách chỉ định chúng như sau:
- composer update vendor/package vendor2/package2 
Hãy chắc chắn để kiểm tra bạn composer.json và composer.lock  file  sau khi bạn cập nhật phụ thuộc của bạn để những người khác có thể cài đặt các version  mới hơn.
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ọ. Trong hướng dẫn này, bạn đã cài đặt Composer và sử dụng nó trong một dự án đơn giản. Đến đây bạn biết cách cài đặt và cập nhật các phụ thuộc.
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.
Các tin liên quan
Làm thế nào để kiểm tra các vai trò không thể phục hồi với Molecule trên Ubuntu 18.042018-10-02
Cách cài đặt và bảo mật Mosquitto MQTT Messaging Broker trên Ubuntu 18.04 [Quickstart]
2018-07-16
Cách bật SFTP mà không cần quyền truy cập Shell trên Ubuntu 18.04
2018-07-13
Cách cài đặt Ruby on Rails với rbenv trên Ubuntu 18.04
2018-07-13
Cách cài đặt và bảo mật Mosquitto MQTT Messaging Broker trên Ubuntu 18.04
2018-07-12
Cách cài đặt Git trên Ubuntu 18.04 [Quickstart]
2018-07-12
Cách sử dụng LVM để quản lý thiết bị lưu trữ trên Ubuntu 18.04
2018-07-11
Cách cài đặt WordPress với LEMP trên Ubuntu 18.04
2018-07-11
Cách sử dụng Chế độ độc lập của Certbot để truy xuất chứng chỉ SSL Let's Encrypt trên Ubuntu 18.04
2018-07-11
Cách thiết lập đồng bộ hóa thời gian trên Ubuntu 18.04
2018-07-10
 

