Node.js là một runtime (môi trường thực thi) cho JavaScript phía server. Nó cho phép lập trình viên phát triển các chức năng backend có khả năng mở rộng bằng JavaScript, một ngôn ngữ quen thuộc với nhiều người qua việc phát triển ứng dụng web trong trình duyệt.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu ba cách khác nhau để cài đặt Node.js trên một server Ubuntu:
- Sử dụng
aptđể cài đặt góinodejstừ repository (kho phần mềm) phần mềm mặc định của Ubuntu. - Sử dụng
aptvới một repository PPA thay thế để cài đặt các phiên bản cụ thể của góinodejs. - Cài đặt
nvm(Node Version Manager) và sử dụng nó để cài đặt và quản lý nhiều phiên bản Node.js
Đối với nhiều người dùng, việc sử dụng apt với repository mặc định là đủ. Nếu bạn cần các phiên bản Node cụ thể, mới hơn hoặc cũ hơn, bạn nên sử dụng repository PPA. Nếu bạn đang tích cực phát triển các ứng dụng Node và cần thường xuyên chuyển đổi giữa các phiên bản node, hãy chọn phương pháp nvm.
Cài đặt Node.js trên Ubuntu
Điều kiện tiên quyết
Để làm theo hướng dẫn này, bạn sẽ cần một server đã được cài đặt Ubuntu. Trước khi bắt đầu, bạn nên có một tài khoản người dùng không phải root với quyền sudo trên hệ thống.
Cách 1: Cài đặt Node.js bằng Apt từ repository mặc định
Ubuntu chứa một phiên bản Node.js trong các repository mặc định, được sử dụng để cung cấp một trải nghiệm nhất quán giữa các hệ thống. Đây thường không phải là phiên bản mới nhất, nhưng nó đủ ổn định và phù hợp cho việc thử nghiệm. Tuy nhiên, nếu phiên bản Node.js mặc định đó không còn được hỗ trợ, bạn nên tham khảo các cách khác trong hướng dẫn này để cài đặt một phiên bản mới hơn.
Để cài đặt phiên bản này, bạn có thể sử dụng trình quản lý package apt. Đầu tiên, hãy làm mới package index (thông tin về các gói phần mềm) cục bộ:
sudo apt update
Sau đó cài đặt Node.js:
sudo apt install nodejs
Kiểm tra xem việc cài đặt đã thành công chưa bằng cách truy vấn node để lấy số phiên bản của nó:
node -v
Outputv10.19.0
Nếu gói trong repository phù hợp với nhu cầu của bạn, đây là tất cả những gì bạn cần làm để thiết lập Node.js. Trong hầu hết các trường hợp, bạn cũng sẽ muốn cài đặt npm, trình quản lý package của Node.js. Nó cho phép bạn cài đặt các module và package để sử dụng với Node.js.
Bạn có thể làm điều này bằng cách cài đặt gói npm với apt:
sudo apt install npm
Cách 2: Cài đặt Node.js bằng Apt với PPA của NodeSource
Để cài đặt một phiên bản Node.js khác, ta có thể sử dụng một PPA (personal package archive) được duy trì bởi NodeSource. Các PPA này có nhiều phiên bản Node.js hơn so với các repository chính thức của Ubuntu.
Đầu tiên, hãy cài đặt PPA này để có quyền truy cập vào các package của nó. Từ thư mục chính của bạn, sử dụng curl để lấy script cài đặt (nhớ thay thế 16.x bằng phiên bản bạn muốn):
cd ~
curl -sL <https://deb.nodesource.com/setup_16.x> -o /tmp/nodesource_setup.sh
Tham khảo tài liệu của NodeSource để biết thêm thông tin về các phiên bản có sẵn.
Kiểm tra nội dung của script đã tải về bằng nano hoặc editor bạn quen dùng:
nano /tmp/nodesource_setup.sh
Khi bạn đã chắc rằng script an toàn để chạy, hãy thoát khỏi trình soạn thảo của bạn. Sau đó chạy script với sudo:
sudo bash /tmp/nodesource_setup.sh
PPA sẽ được thêm vào cấu hình của bạn và package cache (nơi lưu tạm thông tin các gói cài đặt) cục bộ của bạn sẽ được cập nhật tự động. Bây giờ bạn có thể cài đặt gói Node.js theo cách tương tự như bạn đã làm trong phần trước:
sudo apt install nodejs
Xác minh rằng bạn đã cài đặt phiên bản mới bằng cách chạy node với cờ phiên bản -v:
node -v
v16.19.0
Gói nodejs của NodeSource chứa cả node và npm, vì vậy bạn không cần phải cài riêng npm.
Cách 3: Cài đặt Node bằng Node Version Manager
Một cách cài đặt Node.js khác linh hoạt hơn là sử dụng NVM (Node Version Manager). Phần mềm này cho phép bạn cài đặt cùng một lúc nhiều phiên bản Node.js khác nhau cùng với các gói Node liên quan.
Để cài đặt NVM trên máy chủ Ubuntu, đầu tiên hãy truy cập trang GitHub của dự án. Sao chép lệnh curl từ file README hiển thị trên trang chính. Lệnh này chứa script giúp cài đặt phiên bản mới nhất của NVM.
Tuy nhiên, trước khi chạy lệnh đó với bash, bạn nên kiểm tra script để đảm bảo nó sẽ không thực hiện bất kỳ điều gì mà bạn không mong muốn. Bạn có thể làm điều đó bằng cách xóa đoạn | bash ở cuối lệnh curl như sau:
curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh>
Xem lại script và đảm bảo bạn không có vấn đề gì với những thay đổi mà nó sẽ thực hiện. Sau đó hãy chạy lại lệnh gốc với | bash được nối vào cuối. URL bạn sử dụng sẽ thay đổi tùy thuộc vào phiên bản mới nhất của nvm như sau:
curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh> | bash
Lệnh này sẽ cài đặt script nvm vào tài khoản người dùng của bạn. Để sử dụng nó, trước tiên bạn phải cập nhật tệp .bashrc của mình:
source ~/.bashrc
Bây giờ, bạn có thể yêu cầu NVM liệt kê những phiên bản Node.js nó hỗ trợ:
nvm list-remote
. . .
v22.12.0 (LTS: Jod)
v22.13.0 (LTS: Jod)
v22.13.1 (LTS: Jod)
v22.14.0 (LTS: Jod)
v22.15.0 (LTS: Jod)
v22.15.1 (LTS: Jod)
v22.16.0 (LTS: Jod)
v22.17.0 (LTS: Jod)
v22.17.1 (LTS: Jod)
v22.18.0 (LTS: Jod)
v22.19.0 (Latest LTS: Jod)
v23.0.0
v23.1.0
v23.2.0
v23.3.0
v23.4.0
v23.5.0
v23.6.0
v23.6.1
v23.7.0
v23.8.0
v23.9.0
...
Danh sách này rất dài. Bạn có thể cài đặt một phiên bản Node.js cụ thể bằng chỉ định phiên bản của nó trong danh sách trên. Ví dụ, để cài đặt v22.16.0, bạn có thể chạy:
nvm install v22.16.0
Bạn có thể xem các phiên bản Node.js mà bạn đã cài đặt bằng cách liệt kê chúng:
nvm list
-> v22.16.0
v24.4.0
system
default -> 22 (-> v22.16.0)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v24.4.0) (default)
stable -> 24.4 (-> v24.4.0) (default)
Lệnh này hiển thị phiên bản hiện đang kích hoạt ở dòng đầu tiên (-> v22.10.0), theo sau là một số alias (bí danh) và các phiên bản mà những alias đó trỏ đến.
Lưu ý: nếu bạn cũng có một phiên bản Node.js được cài đặt qua apt, bạn có thể thấy một mục system ở đây. Bạn luôn có thể kích hoạt phiên bản Node do hệ thống cài đặt bằng cách sử dụng nvm use system.
Ngoài ra, có các bí danh cho các bản phát hành hỗ trợ dài hạn (LTS) khác nhau của Node:
lts/* -> lts/jod (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.2 (-> N/A)
lts/hydrogen -> v18.20.8 (-> N/A)
lts/iron -> v20.19.5 (-> N/A)
lts/jod -> v22.19.0 (-> N/A)
Bạn cũng có thể cài đặt một bản phát hành dựa trên các alias này. Ví dụ, để cài đặt phiên bản hỗ trợ dài hạn mới nhất, lts/iron, hãy chạy lệnh sau:
nvm install lts/hydrogen
Downloading and installing node v18.20.8...
. . .
Now using node v18.20.8 (npm v18.20.8)
Bạn có thể chuyển đổi giữa các phiên bản đã cài đặt bằng nvm use:
nvm use v18.20.8
Now using node v14.10.0 (npm v6.14.8)
Bạn có thể xác minh rằng việc cài đặt đã thành công bằng tương tự như các cách trước:
node -v
v18.20.8
Phiên bản Node bạn cần đã được cài đặt trên máy chủ như mong đợi. Một phiên bản tương thích của npm cũng đi kèm với nó.
Gỡ cài đặt Node.js
Bạn có thể gỡ Node.js bằng apt hoặc nvm, tùy thuộc vào cách nó được cài đặt. Để xóa phiên bản từ repository hệ thống, hãy sử dụng apt remove:
sudo apt remove nodejs
Theo mặc định, apt remove giữ lại các file cấu hình cục bộ được tạo sau khi cài đặt. Nếu bạn không muốn lưu các file đó để sử dụng sau này, hãy chạy lệnh sau:
sudo apt purge nodejs
Để gỡ cài đặt một phiên bản Node.js cụ thể đã được cài bằng nvm, trước tiên hãy xác định xem đó có phải là phiên bản đang được sử dụng hay không:
nvm current
Nếu phiên bản bạn đang nhắm đến đến không phải là phiên bản đang được sử dụng, bạn có thể chạy:
nvm uninstall node_version
Uninstalled node node_version
Lệnh này sẽ gỡ cài đặt phiên bản Node.js đã chọn.
Nếu phiên bản bạn muốn xóa là phiên bản đang được sử dụng, trước tiên bạn cần hủy kích hoạt nvm để áp dụng các thay đổi của mình:
nvm deactivate
Sau đó bạn có thể gỡ phiên bản này bằng lệnh uninstall như trên. Lệnh này sẽ xóa tất cả các file liên quan đến phiên bản Node.js được chỉ định.
Các trường hợp sử dụng thực tế
Cài đặt Node.js để phát triển ứng dụng
Khi bắt đầu một dự án mới, việc cài đặt Node.js là một bước quan trọng. Nó cho phép các lập trình viên chạy JavaScript phía server, khiến nó trở thành một lựa chọn phổ biến cho các ứng dụng web. Ví dụ, nếu bạn đang xây dựng một ứng dụng trò chuyện thời gian thực, bạn có thể muốn sử dụng Node.js với một framework như Express.js để xử lý các yêu cầu đến và gửi phản hồi.
Để minh họa điều này, hãy xem xét một ứng dụng trò chuyện đơn giản bằng Node.js và Express.js. Bạn muốn tạo một server để lắng nghe các tin nhắn đến và broadcast (gửi tới nhiều nơi cùng lúc) chúng đến tất cả các client đã kết nối.
Dưới đây là code ví dụ đơn giản để cấu trúc phía server của bạn bằng Node.js và Express.js:
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('disconnect', () => {
console.log('user disconnected');
});
socket.on('chat message', (msg) => {
io.emit('chat message', msg);
});
});
server.listen(3000, () => {
console.log('listening on *:3000');
});
Ví dụ này minh họa cách Node.js có thể được sử dụng để tạo một server xử lý giao tiếp thời gian thực giữa các client.
Để cài đặt Node.js cho việc phát triển ứng dụng, bạn có thể sử dụng các phương pháp được mô tả trước đó trong hướng dẫn này. Ví dụ, bạn có thể sử dụng apt để cài đặt Node.js từ repository của Ubuntu hoặc sử dụng nvm để cài đặt một phiên bản cụ thể. Dưới đây là một lệnh ví dụ để cài đặt Node.js bằng apt:
sudo apt update && sudo apt install nodejs
Ngoài ra, bạn có thể sử dụng nvm để cài đặt một phiên bản cụ thể của Node.js. Trước tiên, hãy cài đặt nvm nếu bạn chưa có nó, sau đó sử dụng lệnh sau để cài đặt một phiên bản Node.js cụ thể:
nvm install <version>
Thay thế <version> bằng số phiên bản bạn muốn cài đặt.
Thiết lập các dự án backend
Node.js được sử dụng rộng rãi trong các dự án backend nhờ vào mô hình I/O không chặn (non-blocking), hướng sự kiện của nó. Điều này làm cho chương trình nhẹ đi và có thể xử lý nhiều kết nối đồng thời một cách hiệu quả. Ví dụ, nếu bạn đang tạo một API RESTful, Node.js có thể được sử dụng để tạo logic phía server, xử lý các tương tác với cơ sở dữ liệu và trả về dữ liệu cho client.
Khi thiết lập một dự án backend, bạn có thể muốn sử dụng một framework như Express.js hoặc Koa.js để đơn giản hóa quy trình. Các framework này cung cấp một cấu trúc để tổ chức code của bạn và xử lý các yêu cầu và phản hồi HTTP.
Quản lý nhiều phiên bản Node.js với NVM
Đây là nhu cầu cần thiết khi bạn làm việc trên các dự án yêu cầu các phiên bản Node.js khác nhau. NVM là một công cụ phổ biến để quản lý nhiều phiên bản Node.js trên cùng một máy duy nhất.
Ví dụ, giả sử bạn đang làm việc trên hai dự án: một dự án yêu cầu Node.js phiên bản 14.x và một dự án khác yêu cầu Node.js phiên bản 16.x. Với NVM, bạn có thể dễ dàng chuyển đổi giữa các phiên bản này mà không ảnh hưởng đến phiên bản Node.js mặc định của hệ thống.
Để chuyển đổi giữa các phiên bản Node.js bằng NVM, bạn có thể sử dụng lệnh sau:
nvm use <version>
Thay thế <version> bằng số phiên bản bạn muốn sử dụng. Lệnh này sẽ chuyển phiên bản Node.js của bạn sang phiên bản được chỉ định, cho phép bạn làm việc trên dự án của mình mà không ảnh hưởng đến các dự án khác (vốn có thể yêu cầu các phiên bản khác).
Các lỗi thường gặp và cách gỡ lỗi
Sự cố về quyền với các gói cài đặt global
Vấn đề này xảy ra khi bạn cố gắng cài đặt một package toàn cục (global) bằng npm mà không có quyền cần thiết. Điều này là do các package đó sẽ được cài đặt trong một thư mục hệ thống và nó yêu cầu quyền root.
Nguyên nhân: Lỗi này xảy ra vì npm cố gắng ghi vào một thư mục cần quyền root, nhưng người dùng chạy npm không có các quyền đó.
Cách khắc phục: Để khắc phục sự cố này, bạn có thể sử dụng một trong các phương pháp sau:
- Chạy lệnh với sudo:
sudo npm install -g <package-name> - Thay đổi quyền sở hữu của thư mục npm cho người dùng hiện tại:
sudo chown -R $USER:$(whoami) /usr/local/{lib/node_modules,bin,share/man} && sudo chown -R $USER:$(whoami) ~/.npm - Sử dụng một trình quản lý package như nvm hoặc yarn vì chúng không yêu cầu quyền root để cài đặt các package global.
Không tìm thấy NVM sau khi cài đặt nó (profile chưa được cập nhật)
Lỗi này xảy ra khi bạn cài đặt NVM nhưng không cập nhật script NVM trong shell profile (file cấu hình shell) của mình.
Nguyên nhân: Lỗi này xảy ra vì NVM chưa được thêm vào PATH của hệ thống sau khi cài đặt. Script NVM cần được thêm vào trong shell profile của bạn để NVM có thể sử dụng được.
Cách khắc phục: Để khắc phục sự cố này, bạn cần thêm dòng sau vào shell profile của mình (ví dụ: .bashrc hoặc .zshrc):
source ~/.nvm/nvm.sh
Sau đó, khởi động lại chương trình terminal của bạn hoặc chạy source ~/.bashrc để áp dụng các thay đổi.
Xung đột giữa các phiên bản được cài đặt bằng apt và NVM
Điều này khi bạn có Node.js được cài đặt bằng cả apt và NVM. Nó có thể gây ra các vấn đề với việc quản lý package và xung đột phiên bản.
Nguyên nhân: Lỗi này xảy ra vì cả apt và NVM đều cài đặt Node.js ở các vị trí khác nhau, dẫn đến xung đột giữa các bản cài đặt.
Cách khắc phục: Để khắc phục sự cố này, bạn nên xóa bản cài đặt Node.js từ apt và sử dụng NVM làm phương pháp chính để quản lý các phiên bản Node.js. Dưới đây là cách thực hiện cụ thể:
- Xóa Node.js đã cài đặt bằng apt:
sudo apt purge nodejs - Cài đặt Node.js bằng NVM:
nvm install node - Đảm bảo rằng bạn chỉ sử dụng NVM để quản lý các phiên bản Node.js trong tương lai.
So sánh các phương pháp cài đặt
| Phương pháp | Mô tả | Ưu điểm | Nhược điểm | Ví dụ |
|---|---|---|---|---|
| Apt | Cài đặt Node.js từ repository của Ubuntu | Dễ cài đặt, không cần thiết lập bổ sung. | Khả năng kiểm soát phiên bản hạn chế. Có thể không phải là phiên bản mới nhất. | sudo apt install nodejs |
| NVM | Cài đặt và quản lý nhiều phiên bản Node.js | Cho phép chuyển đổi giữa các phiên bản dễ dàng. Hỗ trợ nhiều phiên bản. | Yêu cầu thiết lập bổ sung, có thể phức tạp với người mới bắt đầu. | nvm install node |
| NodeSource PPA | Cài đặt Node.js từ một repository của bên thứ ba | Cung cấp các phiên bản Node.js mới nhất. Dễ cài đặt. | Có thể không an toàn bằng các phương pháp khác do phải thêm repository từ bên thứ ba. | sudo apt update && sudo apt install nodejs |
| Binary | Cài đặt Node.js từ các file nhị phân (binary) đã được biên dịch sẵn | Cài đặt nhanh, không yêu cầu phần mềm phụ thuộc. | Có thể không tương thích với tất cả các hệ thống. Yêu cầu cập nhật thủ công. | sudo apt update && sudo apt install nodejs |
| Source | Cài đặt Node.js từ mã nguồn | Cung cấp toàn quyền kiểm soát việc cài đặt với nhiều khả năng tùy chỉnh. | Tốn thời gian và yêu cầu chuyên môn kỹ thuật. Yêu cầu cập nhật thủ công. | sudo apt update && sudo apt install nodejs |
Lưu ý: Các ví dụ được cung cấp đã được đơn giản hóa và có thể yêu cầu các bước hoặc cấu hình bổ sung tùy thuộc vào phương pháp cài đặt cụ thể và yêu cầu của từng hệ thống.
Câu hỏi thường gặp
Cách tốt nhất để cài đặt Node.js trên Ubuntu là gì?
Bạn có thể sử dụng một trình quản lý package như NVM hoặc NodeSource PPA. Các phương pháp này cung cấp nhiều sự linh hoạt hơn và cho phép quản lý các phiên bản dễ dàng.
Ví dụ:
# Install Node.js using NVM
nvm install node
# Install Node.js using NodeSource PPA
sudo apt update && sudo apt install nodejs
Làm thế nào để kiểm tra phiên bản Node.js của tôi?
Để kiểm tra phiên bản Node.js đang được sử dụng, hãy chạy lệnh node -v trong terminal. Lệnh này sẽ hiển thị phiên bản Node.js được cài đặt trên hệ thống của bạn.
Ví dụ:
node -v
Tôi có thể cài đặt nhiều phiên bản Node.js?
Bạn có thể cài đặt nhiều phiên bản Node.js bằng cách sử dụng một trình quản lý package như NVM. Nó cho phép bạn cài đặt, quản lý và chuyển đổi giữa các phiên bản Node.js khác nhau một cách dễ dàng.
Ví dụ:
# Install a specific version of Node.js using NVM
nvm install 14.x
# List all installed Node.js versions
nvm ls
NVM là gì và tại sao tôi nên sử dụng nó?
NVM (Node Version Manager) là một công cụ cho phép bạn dễ dàng cài đặt, quản lý và chuyển đổi giữa các phiên bản Node.js khác nhau trên hệ thống của mình. Bạn nên sử dụng NVM vì nó cung cấp một cách thuận tiện để quản lý nhiều phiên bản Node.js. Điều này đặc biệt hữu ích khi làm việc với các dự án khác nhau yêu cầu các phiên bản Node.js khác nhau.
Ví dụ:
# Install NVM
curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh> | bash
# Use NVM to install Node.js
nvm install node
Làm thế nào để gỡ Node.js hoàn toàn?
Để gỡ bản cài đặt Node.js hoàn toàn, bạn cần xóa tất cả các package và phụ thuộc của Node.js. Nếu bạn đã cài đặt Node.js bằng apt, bạn có thể gỡ cài đặt bằng cách chạy sudo apt purge nodejs. Nếu bạn đã sử dụng NVM, bạn có thể gỡ cài đặt Node.js bằng cách chạy nvm uninstall <version>.
Ví dụ:
# Uninstall Node.js using apt
sudo apt purge nodejs
# Uninstall Node.js using NVM
nvm uninstall node
Ubuntu có cài đặt sẵn Node.js không?
Không, Ubuntu không có cài sẵn Node.js. Bạn cần phải cài đặt nó thủ công bằng cách sử dụng một trình quản lý package hoặc bằng cách tải xuống các file binary.
Ví dụ:
# Check if Node.js is installed
node -v
Làm thế nào để cập nhật Node.js trên Ubuntu?
Để cập nhật Node.js trên Ubuntu, bạn có thể sử dụng trình quản lý package mà bạn đã dùng để cài đặt nó. Nếu bạn đã sử dụng apt, bạn có thể cập nhật Node.js bằng cách chạy sudo apt update && sudo apt upgrade. Nếu bạn đã sử dụng NVM, bạn có thể cập nhật Node.js bằng cách chạy nvm install node --latest.
Ví dụ:
# Update Node.js using apt
sudo apt update && sudo apt full-upgrade
# Update Node.js using NVM
nvm install node --latest
Tổng kết
Có nhiều cách khác nhau để cài đặt Node.js lên một server Ubuntu và mỗi cách đều có những ưu điểm riêng. Dù bạn chọn sử dụng phiên bản được đóng gói, nvm, hay NodeSource PPA, điều quan trọng là chọn phương pháp phù hợp nhất với yêu cầu của dự án của bạn.