Fast Byte - Thuê VPS Giá Rẻ
Hướng dẫn chung

Hướng Dẫn Cài Composer Trên Ubuntu Từng Bước An Toàn, Dễ Hiểu Nhất

Việc cài composer trên Ubuntu là bước khởi đầu bắt buộc đối với mọi lập trình viên khi phát triển ứng dụng PHP hiện đại, nhưng không ít người gặp lỗi thiếu thư viện phụ thuộc, xung đột phiên bản hoặc sai sót trong quá trình xác thực tệp cài đặt. Nếu bạn đang loay […]

Ảnh đại diện Thanh Lam NguyễnThanh Lam Nguyễn16 phút đọc

Việc cài composer trên Ubuntu là bước khởi đầu bắt buộc đối với mọi lập trình viên khi phát triển ứng dụng PHP hiện đại, nhưng không ít người gặp lỗi thiếu thư viện phụ thuộc, xung đột phiên bản hoặc sai sót trong quá trình xác thực tệp cài đặt. Nếu bạn đang loay hoay cấu hình môi trường máy chủ để triển khai dự án thuận lợi, giải pháp máy chủ ảo tại ThueVPSGiaRe.vn cùng hướng dẫn từng bước chi tiết cài Composer trên Ubuntu dưới đây sẽ giúp bạn làm chủ Composer nhanh chóng và an toàn tuyệt đối.

1. Tổng quan về Composer và các điểm cốt lõi cần nắm

Composer là công cụ quản lý các gói phụ thuộc (dependency manager) tiêu chuẩn dành cho ngôn ngữ PHP, giúp lập trình viên tự động hóa toàn bộ tiến trình cài đặt, nâng cấp và đồng bộ hóa thư viện bên ngoài.

Thay vì phải sao chép từng đoạn mã thủ công, Composer sẽ tự động phân tích cây phụ thuộc, đối chiếu phiên bản tương thích và khởi tạo cấu trúc cho các framework hàng đầu như Symfony hay khi bạn cần triển khai dự án Laravel trên VPS.

  • Khả năng tương thích phiên bản: Toàn bộ quy trình trong tài liệu này được kiểm thử và hoạt động đồng nhất trên các bản phân phối Ubuntu 20.04 LTS, Ubuntu 22.04 LTS và Ubuntu 24.04 LTS. Mặc định Ubuntu 20.04 đi kèm PHP 7.4, Ubuntu 22.04 sử dụng PHP 8.1 và Ubuntu 24.04 tích hợp sẵn PHP 8.3. Do Composer chỉ yêu cầu môi trường PHP từ 7.2.5 trở lên nên công cụ này tương thích hoàn toàn với tất cả các phiên bản Ubuntu nêu trên.
  • Tự động hóa hoàn toàn: Loại bỏ các thao tác tải thư viện thủ công, tự kiểm tra xung đột phiên bản và quản lý vòng đời gói mã nguồn.
  • Linh hoạt phạm vi cài đặt: Cho phép thiết lập ở cấp độ toàn hệ thống (Global) để gọi lệnh từ mọi thư mục hoặc ở cấp độ từng dự án (Local) nhằm cô lập môi trường.
  • Bảo mật qua mã băm SHA-384: Bước xác minh tính toàn vẹn của tệp cài đặt ngăn chặn nguy cơ kịch bản bị can thiệp trái phép hoặc tải lỗi.
  • Tính nhất quán với composer.lock: Khóa cứng số hiệu phiên bản chính xác của mọi gói và thư viện con, đảm bảo môi trường phát triển (Dev), kiểm thử (Staging) và chạy thật (Production) luôn đồng bộ 100%.
  • Tiêu chuẩn hệ sinh thái PHP: Kết nối trực tiếp với kho lưu trữ Packagist chứa hơn 400.000 gói thư viện mã nguồn mở chất lượng cao.

2. Yêu cầu chuẩn bị trước khi cài đặt hệ thống

Để quá trình thực hiện diễn ra trơn tru, bạn cần sở hữu một máy chủ ảo chạy hệ điều hành Ubuntu (phiên bản 20.04, 22.04 hoặc 24.04 LTS). Người dùng nên chủ động thiết lập phân quyền quản trị an toàn trước khi chạy các lệnh hệ thống.

  • Tài khoản người dùng: Đăng nhập với quyền tài khoản thông thường có cấu hình đặc quyền sudo (non-root) thông qua việc kết nối SSH vào máy chủ Linux.
  • Hệ thống bảo vệ mạng: Khuyến nghị cấu hình và thiết lập tường lửa UFW trên máy chủ nhằm đảm bảo an toàn cho các cổng mạng trước khi đưa môi trường vào sử dụng.

Thuê VPS giá rẻ

CPU Intel Gold, SSD NVMe U.2, giá từ 50K/tháng

Hạ Tầng Tối Ưu Cho Môi Trường PHP & Composer

Việc giải nén gói phụ thuộc qua Composer tiêu tốn nhiều tài nguyên I/O ổ đĩa và RAM. Các giải pháp máy chủ ảo với ổ cứng NVMe tốc độ cao và chi phí tối ưu tại Fast Byte giúp rút ngắn thời gian build dự án, đem lại môi trường thực thi mượt mà.

Tham khảo VPS giá rẻ

3. Bước 1: Cài đặt PHP-CLI và các gói phụ trợ

Trước khi tải Composer, máy chủ Ubuntu cần được trang bị môi trường thực thi lệnh PHP qua terminal và tiện ích giải nén kho lưu trữ nén zip. Bạn có thể sử dụng các câu lệnh Linux cơ bản với trình quản trị gói APT để đồng bộ hệ thống.

Các công cụ như git và curl thường đã có sẵn, còn gói php-cli đóng vai trò chạy các kịch bản PHP trong dòng lệnh, đi kèm gói unzip dùng trích xuất dữ liệu gói thư viện. Tiến hành cập nhật danh mục gói và cài đặt như sau:

sudo apt update && sudo apt install php-cli unzip

Hệ thống sẽ hiển thị danh sách các thành phần kèm theo và yêu cầu xác nhận. Bạn nhấn Y rồi gõ ENTER để hoàn tất tiến trình cài đặt.

Cài đặt PHP-CLI và các gói phụ trợ
Cài đặt PHP-CLI và các gói phụ trợ

4. Bước 2: Tải về, xác thực mã băm và cài đặt Composer

Composer cung cấp một kịch bản cài đặt viết bằng PHP. Để bảo vệ máy chủ khỏi nguy cơ mã độc hoặc tệp tải về bị hỏng hóc, quy trình chuẩn mực yêu cầu phải đối soát chữ ký SHA-384 trước khi thực thi.

4.1. Tải kịch bản cài đặt và đối chiếu mã băm an toàn

Đầu tiên, hãy di chuyển về thư mục người dùng cá nhân (home) và tải tệp cài đặt về thư mục tạm /tmp thông qua tiện ích curl:

cd
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php

Tiếp tục lấy mã băm SHA-384 chính thức mới nhất từ trang lưu trữ chữ ký công khai của Composer và lưu vào một biến môi trường tạm thời trong shell:

HASH=`curl -sS https://composer.github.io/installer.sig`

Bạn có thể kiểm tra chuỗi mã băm thu được bằng lệnh sau:

echo $HASH

Kết quả trả về sẽ là một chuỗi ký tự dạng tương tự:

c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47
Tải kịch bản cài đặt và đối chiếu mã băm an toàn
Tải kịch bản cài đặt và đối chiếu mã băm an toàn

Bây giờ, tiến hành so khớp mã SHA-384 của tệp đã tải trên máy với mã chính hãng bằng đoạn lệnh PHP dưới đây:

php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Nếu quá trình kiểm tra đạt chuẩn, terminal sẽ xuất ra thông báo:

Installer verified

Trường hợp màn hình hiển thị Installer corrupt, kịch bản tải về đã bị lỗi hoặc không khớp. Khi đó, bạn cần kiểm tra lại kết nối mạng, tải lại tệp cài đặt và lặp lại bước đối chiếu mã băm.

quá trình kiểm tra đạt chuẩn
Quá trình kiểm tra đạt chuẩn

4.2. Cài đặt Composer toàn hệ thống (Global)

Khi tệp cài đặt đã được xác thực toàn vẹn, hãy cài Composer dưới dạng lệnh toàn hệ thống bằng cách trỏ đường dẫn cài đặt vào thư mục /usr/local/bin:

sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

Thông báo thành công sẽ hiển thị dạng:

All settings correct for using Composer
Downloading...

Composer (version 2.10.3) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Kiểm tra khả năng hoạt động trên máy chủ bằng lệnh gọi trực tiếp:

composer

Logo Composer và danh sách các tùy chọn thông số sẽ xuất hiện, khẳng định công cụ đã sẵn sàng trên toàn hệ điều hành.

Cài đặt Composer toàn hệ thống
Cài đặt Composer toàn hệ thống

Lưu ý về cài đặt cục bộ (Local Installation): Trong tình huống tài khoản không có quyền ghi vào thư mục hệ thống hoặc dự án đòi hỏi phiên bản Composer riêng biệt, bạn chỉ cần chạy lệnh php /tmp/composer-setup.php. Khi đó tệp composer.phar sẽ được tạo ngay tại thư mục hiện hành và thực thi bằng cú pháp php composer.phar.

5. Bước 3: Sử dụng Composer quản lý gói trong dự án PHP

Composer quản lý cấu hình các gói phần mềm thông qua tệp tin composer.json. Tệp này đóng vai trò khai báo danh sách thư viện được phép cài cùng khoảng phiên bản hỗ trợ, giúp ứng dụng không bị ảnh hưởng bởi những phiên bản lỗi hoặc phá vỡ tương thích.

Quy trình sử dụng thực tế thường diễn ra qua 4 bước:

  • Xác định nhu cầu nghiệp vụ của ứng dụng cần loại thư viện nào.
  • Tìm kiếm gói mã nguồn mở tương ứng trên cổng Packagist.org.
  • Lựa chọn tên gói định danh (namespace dạng vendor/package) có độ uy tín cao (lượng tải và sao GitHub lớn).
  • Chạy lệnh composer require để hệ thống tải về và ghi vào composer.json.

5.1. Thử nghiệm thực tế với dự án mẫu slugify

Chúng ta sẽ xây dựng một ứng dụng nhỏ có nhiệm vụ chuyển chuỗi ký tự thành đường dẫn thân thiện (slug). Khởi tạo thư mục làm việc:

cd ~
mkdir slugify
cd slugify

Tìm kiếm trên Packagist, gói cocur/slugify là lựa chọn phổ biến hàng đầu. Khi thêm gói này, hãy chạy lệnh yêu cầu tải thư viện:

composer require cocur/slugify
Thử nghiệm thực tế với dự án mẫu slugify
Thử nghiệm thực tế với dự án mẫu slugify

5.2. Khắc phục sự cố thiếu thư viện hệ thống (System Dependency)

Composer không chỉ theo dõi các gói PHP mà còn kiểm soát phần mở rộng hệ thống cần thiết. Nếu gói yêu cầu một extension chưa có mặt trên máy chủ, lỗi sẽ xuất hiện như sau:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for cocur/slugify ^4.0 -> satisfiable by cocur/slugify[v4.0.0].
    - cocur/slugify v4.0.0 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.

Thông báo trên cho biết hệ thống còn thiếu extension mbstring để xử lý chuỗi đa byte UTF-8. Bạn có thể chủ động tìm hiểu cách cài đặt thêm PHP extension trên VPS hoặc tiến hành cài nhanh gói này qua APT:

sudo apt install php-mbstring

Sau khi gói mở rộng được bổ sung vào hệ điều hành, hãy chạy lại lệnh ban đầu:

composer require cocur/slugify

Lúc này thư mục dự án sẽ tự sinh ra tệp composer.json, tệp composer.lock và thư mục chứa toàn bộ mã nguồn bên ngoài là vendor/. Kiểm tra cấu trúc thư mục bằng lệnh ls -l:

total 12
-rw-r--r-- 1 root root 59 Oct 20 08:51 composer.json
-rw-r--r-- 1 root root 3513 Oct 20 08:51 composer.lock
drwxr-xr-x 5 root root 4096 Oct 20 08:51 vendor
Khắc phục sự cố thiếu thư viện hệ thống
Khắc phục sự cố thiếu thư viện hệ thống

5.3. Bảng tra cứu các ràng buộc phiên bản (Version Constraints)

Trong tệp composer.json, toán tử mũ (^) hoặc dấu ngã (~) thường được thiết lập tự động tuân thủ nguyên tắc đánh số phiên bản ngữ nghĩa (Semantic Versioning). Dưới đây là bảng giải nghĩa chi tiết:

Toán tử ràng buộc Ý nghĩa phạm vi chấp nhận Ví dụ phiên bản hợp lệ
^1.0 Từ 1.0 trở lên và nhỏ hơn 2.0 1.0, 1.2.3, 1.9.9
^1.1.0 Từ 1.1.0 trở lên và nhỏ hơn 2.0 1.1.0, 1.5.6, 1.9.9
~1.0 Từ 1.0 trở lên và nhỏ hơn 2.0.0 1.0, 1.4.1, 1.9.9
~1.0.0 Từ 1.0.0 trở lên và nhỏ hơn 1.1 1.0.0, 1.0.4, 1.0.9
1.2.1 Chỉ định đích danh phiên bản duy nhất 1.2.1
1.* Mọi phiên bản nằm trong nhánh chính 1 1.0.0, 1.4.5, 1.9.9
1.2.* Từ 1.2 trở lên và nhỏ hơn 1.3 1.2.0, 1.2.3, 1.2.9

6. Bước 4: Nhúng tệp nạp tự động Autoload vào mã nguồn

Do bản thân PHP không tự động tải toàn bộ class khi chạy, Composer cung cấp sẵn tệp vendor/autoload.php. Khi nhúng tệp này ở đầu mã nguồn, mọi lớp thuộc các gói đã khai báo đều có thể gọi ra tức thì mà không cần dùng hàm include hay require riêng lẻ từng tệp.

Để kiểm chứng khả năng nạp lớp, hãy tạo tệp test.php trong thư mục slugify:

nano test.php

Dán đoạn mã mẫu sau vào tệp:

<?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 tệp lại rồi kích hoạt chạy thử nghiệm từ dòng lệnh terminal:

php test.php

Kết quả hiển thị trên màn hình:

hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
Nhúng tệp nạp tự động Autoload vào mã nguồn
Nhúng tệp nạp tự động Autoload vào mã nguồn

7. Bước 5: Cách cập nhật thư viện phụ thuộc an toàn

Khi các thư viện phát hành phiên bản mới sửa lỗi hoặc nâng cấp tính năng, bạn có thể đồng bộ lại hệ thống bằng lệnh cập nhật:

composer update

Lệnh trên sẽ quét các phiên bản mới hơn trên kho Packagist thỏa mãn điều kiện quy định trong composer.json, tiến hành thay thế và cập nhật lại tệp composer.lock. Nếu chỉ cần nâng cấp riêng một vài gói cụ thể mà không ảnh hưởng các gói khác, bạn hãy chỉ định tên gói rõ ràng:

composer update vendor/package vendor2/package2

Lưu ý: Luôn commit tệp composer.json và composer.lock vào hệ thống quản lý mã nguồn (như Git) để các thành viên khác trong nhóm có thể tái lập chính xác cây phụ thuộc bằng lệnh composer install.

cập nhật thư viện phụ thuộc an toàn
Cập nhật thư viện phụ thuộc an toàn

Tình trạng hiện tại trên ảnh:

  • Chạy thử Slugify thành công: Kết quả tạo slug dạng hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it cho thấy thư viện đã được nạp và chạy được trong bài kiểm tra.
  • Composer đã tạo các thành phần dự án: Thư mục vendor/ cùng các tệp composer.json và composer.lock đã xuất hiện.
  • !PHP cURL có thể đang thiếu: Composer cảnh báo rằng không có PHP cURL extension nên việc truy xuất thông tin gói có thể chậm hơn bình thường. Đây là cảnh báo, không đồng nghĩa với việc Slugify đã chạy thất bại.

Kiểm tra phiên bản PHP:

Ngay tại terminal đang hiển thị root@projects:~/slugify#, chạy lần lượt:

php -v
php --ini
php -m | grep -Ei 'curl|mbstring'

Các lệnh này giúp xác định phiên bản PHP và extension hiện có, để cài đúng gói tương ứng.

Cài PHP cURL nếu đang thiếu:

Nếu kết quả xác nhận thiếu cURL và PHP của bạn là bản 8.2, bạn có thể chạy:

apt update
apt install php8.2-curl

Lưu ý: Nếu PHP là bản 8.1, 8.3 hoặc phiên bản khác, không chạy nguyên lệnh trên; cần thay bằng gói đúng phiên bản. Nếu VPS dùng nhiều phiên bản PHP, cần kiểm tra PHP CLI mà Composer đang sử dụng.

Sau đó xác nhận:

php -m | grep -i curl

8. Câu hỏi thường gặp khi cài đặt và sử dụng Composer (FAQ)

8.1. Composer dùng để làm gì trong các dự án PHP?

Composer giải quyết bài toán quản lý thư viện tự động, loại bỏ hoàn toàn khâu tải và cập nhật thủ công. Dựa vào khai báo trong composer.json, công cụ bảo đảm dự án luôn nhận đúng bản vá và phiên bản phù hợp, giúp việc vận hành mã nguồn chuẩn hóa và giảm thiểu lỗi xung đột.

8.2. Làm sao để cài đặt Composer ở phạm vi toàn hệ thống trên Ubuntu?

Sau khi tải kịch bản cài đặt và xác thực mã băm an toàn, bạn chạy lệnh thiết lập với tham số --install-dir=/usr/local/bin --filename=composer. Lệnh này chuyển tệp thực thi vào thư mục biến môi trường chung, cho phép người dùng kích hoạt lệnh composer ở mọi đường dẫn.

8.3. Xác thực tính an toàn của tệp cài đặt Composer bằng cách nào?

Bạn đối chiếu trực tiếp mã SHA-384 của tệp tải về với mã nguồn chính thức được lấy từ trang composer.github.io/installer.sig qua hàm hash_file('SHA384', ...) trong PHP. Nếu hai chuỗi khớp nhau, thông báo “Installer verified” xuất hiện xác nhận tệp an toàn.

8.4. Cài đặt Composer toàn cục (Global) khác gì cài đặt cục bộ (Local)?

Cài đặt toàn cục đặt tệp thực thi tại /usr/local/bin nhằm phục vụ mọi dự án trên máy. Ngược lại, cài đặt cục bộ tạo ra tệp composer.phar riêng trong từng thư mục dự án, thích hợp khi tài khoản không có quyền root hoặc cần cô lập phiên bản Composer độc lập.

8.5. Cách nâng cấp Composer lên phiên bản mới nhất ra sao?

Chỉ cần thực thi lệnh composer self-update (hoặc kèm tiền tố sudo composer self-update đối với bản cài đặt toàn hệ thống). Hệ thống sẽ tự kiểm tra và tải về bản phát hành mới nhất để ghi đè.

8.6. Tại sao Composer báo lỗi tràn bộ nhớ (memory limit) trên Ubuntu?

Lỗi này xuất hiện khi cây phụ thuộc quá phức tạp hoặc thông số bộ nhớ mặc định của PHP bị giới hạn thấp. Bạn có thể giải quyết tạm thời bằng cách chạy lệnh với cờ bổ sung php -d memory_limit=512M /usr/local/bin/composer install hoặc chỉnh sửa thông số memory_limit trong tệp cấu hình php.ini lên mức 512MB hoặc 1GB.

8.7. Làm thế nào để gỡ bỏ hoàn toàn Composer khỏi Ubuntu?

Với bản cài đặt toàn hệ thống, bạn chỉ cần xóa tệp thực thi bằng lệnh sudo rm /usr/local/bin/composer. Với bản cài cục bộ, bạn xóa tệp composer.phar trong thư mục làm việc tương ứng.

8.8. Có bắt buộc phải dùng quyền sudo để chạy Composer không?

Không nên dùng sudo khi chạy các lệnh quản lý gói của dự án như install, require hay update vì có thể gây lỗi phân quyền tệp tin và tạo rủi ro bảo mật. Quyền sudo chỉ cần thiết duy nhất khi cài đặt ban đầu hoặc nâng cấp chính công cụ Composer vào thư mục hệ thống.

9. Kết luận và định hướng tiếp theo

Hoàn thành quy trình cài composer trên Ubuntu đồng nghĩa với việc bạn đã trang bị nền móng chuẩn mực cho các ứng dụng PHP quy mô lớn. Hãy luôn ghi nhớ nguyên tắc đối soát mã băm khi thiết lập ban đầu, tận dụng cơ chế nạp tự động qua autoload.php và duy trì tính toàn vẹn phiên bản qua tệp khóa composer.lock. Sau khi hoàn thiện môi trường nền tảng, bạn có thể tìm hiểu thêm về mô hình container hóa qua hướng dẫn cài đặt Docker Compose trên Ubuntu để quản lý đa dịch vụ, cũng như thiết lập các kịch bản sao lưu dữ liệu VPS an toàn trước khi bước vào môi trường vận hành thực tế.

Khởi tạo môi trường lập trình PHP chuẩn chỉ ngay hôm nay

Dễ dàng sở hữu môi trường máy chủ với các gói VPS giá rẻ từ 50K, toàn quyền quản trị root và tốc độ ổ cứng NVMe vượt trội.

Xem bảng giá VPS

Nội dung trên được biên soạn cho mục đích tham khảo kỹ thuật. Các câu lệnh, phiên bản gói và đường dẫn cấu hình có thể có sự khác biệt nhỏ tùy theo phiên bản hệ điều hành cụ thể và môi trường mạng thực tế. Người quản trị nên chủ động thử nghiệm trên máy chủ kiểm thử (staging), kiểm tra sao lưu định kỳ và đánh giá rủi ro an toàn trước khi áp dụng cho các hệ thống đang chạy thương mại (production).

Chia sẻ: Facebook LinkedIn
Quay lại trang blog

Bài viết liên quan