Tại sao Node.js ngày càng trở nên quan trọng trong thế giới phát triển ứng dụng web hiện đại? Node.js, với khả năng chạy JavaScript phía máy chủ, đã mở ra một kỷ nguyên mới cho việc xây dựng các ứng dụng web tốc độ cao, có khả năng mở rộng và xử lý hàng nghìn kết nối đồng thời. Tuy nhiên, đối với những người dùng hệ điều hành CentOS 7, một trong những bản phân phối Linux là gì ổn định và phổ biến nhất cho máy chủ, việc cài đặt Node.js đôi khi lại trở thành một thách thức. Nguyên nhân chính là do các bước cài đặt có thể chưa rõ ràng hoặc kho lưu trữ mặc định của CentOS 7 không chứa phiên bản Node.js mới nhất.
Bài viết này sẽ là kim chỉ nam của bạn, cung cấp một hướng dẫn chi tiết và toàn diện nhất. Chúng tôi sẽ cùng nhau đi qua từng bước, từ việc chuẩn bị môi trường, thêm kho lưu trữ NodeSource uy tín, cài đặt Node.js và npm, cho đến việc kiểm tra, sử dụng và xử lý các sự cố thường gặp. Mục tiêu là giúp bạn cài đặt Node.js trên CentOS 7 một cách đơn giản, nhanh chóng và chính xác nhất, tạo nền tảng vững chắc cho các dự án phát triển của bạn trong tương lai.
Chuẩn bị môi trường trước khi cài đặt Node.js trên CentOS 7
Trước khi đi vào cài đặt bất kỳ phần mềm nào, việc chuẩn bị một môi trường sạch sẽ và cập nhật là bước đầu tiên và quan trọng nhất. Điều này không chỉ giúp quá trình cài đặt diễn ra suôn sẻ mà còn đảm bảo tính ổn định và bảo mật cho toàn bộ hệ thống của bạn. Hãy chắc chắn rằng bạn đã sẵn sàng mọi thứ cần thiết để chào đón Node.js về với máy chủ CentOS 7 của mình.
Cập nhật hệ thống và các gói phụ thuộc cần thiết
Đầu tiên, bạn cần cập nhật tất cả các gói phần mềm trên hệ thống lên phiên bản mới nhất. Lệnh này sẽ quét qua tất cả các kho lưu trữ đã được định cấu hình và nâng cấp những gói đã lỗi thời. Việc này giúp vá các lỗ hổng bảo mật và giải quyết các xung đột có thể xảy ra.
Hãy mở terminal và chạy lệnh sau:
sudo yum update -y

Sau khi hệ thống đã được cập nhật, chúng ta cần cài đặt một số công cụ phát triển cần thiết. Các gói như gcc-c++ và make là trình biên dịch C++, rất quan trọng để xây dựng các addon gốc của Node.js. curl và wget là những tiện ích dòng lệnh mạnh mẽ để tải xuống các tệp từ internet, chúng ta sẽ cần chúng để lấy về script cài đặt từ NodeSource.
Thực thi lệnh sau để cài đặt các gói phụ thuộc này:
sudo yum install -y gcc-c++ make curl

Kiểm tra quyền truy cập và môi trường người dùng
Quá trình cài đặt Node.js yêu cầu quyền quản trị để có thể ghi vào các thư mục hệ thống. Do đó, bạn cần đảm bảo rằng mình đang thực hiện các lệnh với quyền root hoặc thông qua sudo. Hầu hết các lệnh trong hướng dẫn này đều có tiền tố sudo để đảm bảo chúng được thực thi với quyền hạn cao nhất.
Nếu bạn không đăng nhập bằng tài khoản root, hãy chắc chắn rằng tài khoản người dùng của bạn đã được thêm vào nhóm wheel, nhóm này cho phép người dùng thực thi các lệnh với sudo trên CentOS 7. Việc này đảm bảo bạn có đủ quyền hạn cần thiết mà không cần phải đăng nhập trực tiếp bằng tài khoản root, một thói quen tốt để tăng cường bảo mật. Trong hầu hết các trường hợp, bạn không cần phải thiết lập biến môi trường thủ công vì trình cài đặt sẽ tự động xử lý việc này, nhưng việc hiểu rõ về quyền truy cập là cực kỳ quan trọng để tránh các lỗi không đáng có.
Cách thêm kho lưu trữ Node.js trên CentOS 7
Kho lưu trữ mặc định của CentOS 7 thường chứa các phiên bản Node.js khá cũ và không được khuyến khích sử dụng cho các dự án hiện đại. Để giải quyết vấn đề này, chúng ta sẽ sử dụng NodeSource, một kho lưu trữ của bên thứ ba được tin cậy, chuyên cung cấp các phiên bản Node.js mới nhất và được đóng gói sẵn cho nhiều bản phân phối Linux, bao gồm cả CentOS. Việc này giúp quá trình cài đặt và cập nhật trở nên đơn giản hơn rất nhiều.
Sử dụng NodeSource để thêm kho lưu trữ Node.js
NodeSource cung cấp một script cài đặt tiện lợi giúp tự động hóa toàn bộ quá trình thêm kho lưu trữ vào hệ thống của bạn. Bạn chỉ cần chọn phiên bản Node.js mà mình muốn cài đặt. Một lời khuyên quan trọng là bạn nên ưu tiên sử dụng phiên bản LTS (Long Term Support – Hỗ trợ dài hạn). Các phiên bản LTS được đảm bảo về sự ổn định, bảo mật và nhận được các bản cập nhật trong một thời gian dài, rất lý tưởng cho môi trường sản phẩm.
Ví dụ, để cài đặt phiên bản LTS mới nhất (ví dụ: Node.js 20.x), bạn sẽ sử dụng lệnh sau:
curl -sL https://rpm.nodesource.com/setup_20.x | sudo bash -
Lệnh này sử dụng curl để tải xuống script cài đặt từ NodeSource và sau đó thực thi nó bằng bash với quyền sudo. Script sẽ tự động xác định hệ điều hành của bạn là CentOS 7 và thêm kho lưu trữ NodeSource tương ứng vào cấu hình yum.

Cập nhật và kiểm tra kho lưu trữ đã thêm
Sau khi script của NodeSource chạy xong, nó sẽ tự động làm mới bộ đệm yum của bạn. Tuy nhiên, để chắc chắn mọi thứ đều được cập nhật, bạn có thể chạy lại lệnh yum update một lần nữa. Điều quan trọng hơn là phải xác minh rằng kho lưu trữ đã được thêm vào hệ thống một cách chính xác.
Bạn có thể kiểm tra điều này bằng cách liệt kê các tệp trong thư mục /etc/yum.repos.d/. Bạn sẽ thấy một tệp mới có tên tương tự như nodesource-el7.repo. Tệp này chứa thông tin cấu hình mà yum cần để tìm và cài đặt các gói từ kho lưu trữ NodeSource.
Việc thêm kho lưu trữ thành công là một bước ngoặt quan trọng, đảm bảo rằng khi bạn yêu cầu cài đặt nodejs, hệ thống sẽ lấy đúng phiên bản mới nhất từ NodeSource thay vì phiên bản lỗi thời từ kho mặc định của CentOS.
Hướng dẫn cài đặt Node.js và npm trên CentOS 7
Khi kho lưu trữ NodeSource đã sẵn sàng, việc cài đặt Node.js và npm giờ đây trở nên cực kỳ đơn giản. Trình quản lý gói yum của CentOS 7 sẽ tự động tìm thấy phiên bản Node.js mới nhất từ kho lưu trữ bạn vừa thêm và xử lý toàn bộ quá trình cài đặt một cách nhanh chóng.
Lệnh cài đặt Node.js và npm
Với kho lưu trữ NodeSource đã được cấu hình, bạn chỉ cần thực thi một lệnh duy nhất để cài đặt cả Node.js và npm. Trình quản lý gói yum sẽ xử lý tất cả các phụ thuộc và đảm bảo mọi thứ được thiết lập đúng cách.
Chạy lệnh sau trong terminal của bạn:
sudo yum install -y nodejs

Lệnh này sẽ cài đặt gói nodejs. Một điều tuyệt vời là khi bạn cài đặt Node.js từ NodeSource, npm (Node Package Manager – Trình quản lý gói của Node) cũng sẽ được cài đặt kèm theo. npm là một công cụ không thể thiếu trong hệ sinh thái Node.js. Nó đóng vai trò như một kho thư viện mã nguồn mở khổng lồ, cho phép bạn dễ dàng tìm kiếm, cài đặt và quản lý các gói thư viện (packages) cho dự án của mình.
Thiết lập cấu hình sau cài đặt
Sau khi quá trình cài đặt hoàn tất, Node.js và npm đã sẵn sàng để sử dụng. Trong hầu hết các trường hợp, không cần phải cấu hình thêm gì cả. Trình cài đặt đã tự động thiết lập các đường dẫn (PATH) cần thiết để bạn có thể gọi lệnh node và npm từ bất kỳ đâu trong terminal.
Tuy nhiên, có một thói quen tốt là bạn nên cập nhật npm lên phiên bản mới nhất ngay sau khi cài đặt. Mặc dù npm được cài đặt cùng Node.js, nhưng đôi khi phiên bản đi kèm không phải là phiên bản mới nhất của npm. Việc cập nhật giúp bạn tận dụng được các tính năng và cải tiến hiệu suất mới nhất.
Để cập nhật npm, hãy sử dụng chính npm với lệnh sau:
sudo npm install -g npm@latest
Lệnh này yêu cầu npm tự cập nhật chính nó lên phiên bản ổn định mới nhất trên toàn hệ thống (cờ -g là viết tắt của global).
Kiểm tra phiên bản Node.js sau khi cài đặt
Sau khi đã hoàn thành các bước cài đặt, điều quan trọng là phải xác minh lại để đảm bảo mọi thứ đã được thiết lập chính xác và hoạt động như mong đợi. Việc kiểm tra này không chỉ giúp bạn xác nhận phiên bản đã cài đặt mà còn đảm bảo rằng môi trường thực thi của Node.js đã sẵn sàng cho các dự án của bạn. Đây là bước kiểm tra cuối cùng trước khi bạn bắt đầu viết những dòng code đầu tiên.
Kiểm tra phiên bản Node.js
Cách đơn giản nhất để xác nhận Node.js và npm đã được cài đặt thành công là kiểm tra phiên bản của chúng. Mở terminal và chạy lần lượt hai lệnh sau:
Để kiểm tra phiên bản Node.js:
node -v
Để kiểm tra phiên bản npm:
npm -v
Nếu cài đặt thành công, các lệnh trên sẽ trả về số phiên bản tương ứng, ví dụ như v20.11.0 cho Node.js và 10.2.4 cho npm. Việc nhìn thấy các số phiên bản này là một dấu hiệu tốt, cho thấy các tệp thực thi đã được cài đặt đúng vị trí và biến môi trường PATH đã được cấu hình chính xác.

Kiểm tra hoạt động bằng cách chạy ứng dụng đơn giản
Để chắc chắn hơn nữa, hãy thử tạo một ứng dụng “Hello, World!” đơn giản bằng Node.js. Đây là cách cổ điển để kiểm tra xem một môi trường lập trình mới có hoạt động trơn tru hay không.
Đầu tiên, tạo một tệp mới tên là hello.js bằng trình soạn thảo văn bản bạn yêu thích, ví dụ như nano:
nano hello.js
Bên trong tệp, thêm dòng mã JavaScript đơn giản sau:
console.log('Xin chào, Bùi Mạnh Đức!');
Lưu tệp và thoát khỏi trình soạn thảo. Bây giờ, hãy thực thi tệp này bằng cách sử dụng trình thông dịch Node.js:
node hello.js
Nếu bạn thấy dòng chữ “Xin chào, Bùi Mạnh Đức!” xuất hiện trên terminal, xin chúc mừng! Bạn đã cài đặt thành công Node.js trên máy chủ CentOS 7 của mình và môi trường đã hoàn toàn sẵn sàng để phát triển các ứng dụng phức tạp hơn.

Cách sử dụng npm để quản lý các gói thư viện
npm (Node Package Manager) là trái tim của hệ sinh thái Node.js. Nó không chỉ là một công cụ để cài đặt các gói thư viện mà còn là một trợ thủ đắc lực giúp bạn quản lý các phụ thuộc, chạy các tập lệnh và chia sẻ dự án của mình một cách hiệu quả. Hiểu rõ cách sử dụng npm sẽ giúp bạn tăng tốc độ phát triển và duy trì dự án một cách chuyên nghiệp.
Tìm kiếm, cài đặt và gỡ bỏ gói npm
npm cung cấp quyền truy cập vào một kho lưu trữ khổng lồ với hàng triệu gói thư viện sẵn sàng để sử dụng. Giả sử bạn cần một thư viện để làm việc với ngày tháng, bạn có thể tìm kiếm nó trực tiếp từ dòng lệnh:
npm search date
Khi bạn đã tìm thấy gói mình cần, ví dụ như moment, bạn có thể cài đặt nó vào dự án của mình bằng lệnh:
npm install moment
Lệnh này sẽ tải gói moment về và lưu nó trong một thư mục có tên là node_modules bên trong dự án của bạn. Đồng thời, nó cũng sẽ thêm gói này vào tệp package.json như một phụ thuộc (dependency).
Nếu bạn muốn một gói có thể sử dụng ở bất kỳ đâu trên hệ thống (ví dụ như các công cụ dòng lệnh như nodemon), bạn có thể cài đặt nó toàn cầu bằng cờ -g:
sudo npm install -g nodemon
Khi không cần một gói nữa, bạn có thể gỡ bỏ nó khỏi dự án một cách dễ dàng:
npm uninstall moment

Quản lý phiên bản và cập nhật gói
Tệp package.json là tệp kê khai cho dự án Node.js của bạn. Nó chứa các thông tin quan trọng như tên dự án, phiên bản, và đặc biệt là danh sách các gói phụ thuộc. Bạn có thể tạo tệp này một cách nhanh chóng bằng lệnh:
npm init -y
Khi bạn cài đặt một gói, npm sẽ tự động thêm nó vào dependencies hoặc devDependencies trong package.json. Điều này giúp đảm bảo rằng bất kỳ ai khác làm việc trên dự án cũng có thể cài đặt tất cả các phụ thuộc cần thiết chỉ bằng một lệnh duy nhất: npm install.
Theo thời gian, các gói thư viện sẽ có phiên bản mới với các bản vá lỗi và tính năng mới. Để cập nhật các gói trong dự án của bạn lên phiên bản mới nhất được phép theo quy tắc trong package.json, bạn có thể chạy:
npm update
Quản lý phụ thuộc thông qua package.json là một kỹ năng cốt lõi, giúp dự án của bạn luôn có tổ chức, dễ dàng bảo trì và cộng tác.

Xử lý sự cố thường gặp khi cài đặt Node.js trên CentOS 7
Mặc dù quá trình cài đặt Node.js trên CentOS 7 với NodeSource khá đơn giản, đôi khi bạn vẫn có thể gặp phải một vài sự cố không mong muốn. Hiểu rõ nguyên nhân và cách khắc phục các lỗi phổ biến sẽ giúp bạn tiết kiệm thời gian và nhanh chóng đưa môi trường phát triển của mình vào hoạt động.
Lỗi không tìm thấy node hoặc npm sau cài đặt
Một trong những lỗi phổ biến nhất là sau khi cài đặt xong, bạn gõ lệnh node -v hoặc npm -v và nhận được thông báo “command not found”.
Nguyên nhân thường gặp nhất của vấn đề này là biến môi trường PATH của hệ thống chưa được cập nhật để bao gồm đường dẫn đến các tệp thực thi của Node.js. Mặc dù trình cài đặt yum thường xử lý việc này, đôi khi có thể xảy ra lỗi do cấu hình shell của bạn.
Cách khắc phục đầu tiên là thử mở một phiên terminal mới hoặc đăng xuất và đăng nhập lại. Thao tác này sẽ tải lại cấu hình môi trường và có thể giải quyết được vấn đề. Nếu vẫn không được, bạn hãy kiểm tra xem quá trình cài đặt có thực sự thành công hay không bằng cách tìm kiếm các tệp thực thi: which node và which npm. Nếu các lệnh này không trả về kết quả, có thể quá trình yum install đã gặp lỗi. Bạn nên thử gỡ cài đặt (sudo yum remove nodejs) và thực hiện lại các bước cài đặt từ đầu.
Lỗi quyền truy cập và cài đặt gói npm
Một sự cố khác thường xảy ra khi bạn cố gắng cài đặt một gói npm trên toàn cầu bằng cờ -g mà không có sudo, ví dụ: npm install -g pm2. Bạn sẽ nhận được một lỗi EACCES hoặc permission denied.
Lỗi này xảy ra vì npm đang cố gắng cài đặt gói vào một thư mục hệ thống (thường là /usr/lib/node_modules), nơi mà người dùng thông thường không có quyền ghi. Giải pháp đơn giản nhất là sử dụng sudo: sudo npm install -g pm2.
Tuy nhiên, việc lạm dụng sudo với npm không phải lúc nào cũng là ý hay vì lý do bảo mật. Một giải pháp tốt hơn và an toàn hơn là cấu hình npm để sử dụng một thư mục khác trong thư mục chính của người dùng để cài đặt các gói toàn cầu. Điều này cho phép bạn cài đặt các gói -g mà không cần đến sudo. Mặc dù việc này đòi hỏi thêm vài bước cấu hình, nó được coi là một thực hành tốt nhất cho các nhà phát triển Node.js.

Best Practices
Để quá trình phát triển với Node.js trên CentOS 7 của bạn không chỉ thành công mà còn hiệu quả và an toàn, việc tuân thủ một số nguyên tắc và thực hành tốt nhất là vô cùng quan trọng. Những mẹo nhỏ này sẽ giúp bạn xây dựng một môi trường làm việc ổn định, dễ bảo trì và tối ưu hóa hiệu suất lâu dài.
- Luôn cập nhật hệ thống và sao lưu trước khi cài đặt: Trước khi thực hiện bất kỳ thay đổi lớn nào như cài đặt Node.js, hãy đảm bảo rằng hệ thống CentOS 7 của bạn đã được cập nhật đầy đủ (
sudo yum update). Đồng thời, nếu đây là một máy chủ quan trọng, việc tạo một bản sao lưu (snapshot) sẽ giúp bạn dễ dàng quay trở lại trạng thái trước đó nếu có sự cố xảy ra.
- Ưu tiên sử dụng phiên bản LTS của Node.js: Luôn chọn phiên bản Hỗ trợ dài hạn (LTS) cho các môi trường sản phẩm. Các phiên bản LTS được tập trung vào sự ổn định và bảo mật, nhận được các bản cập nhật và vá lỗi trong một thời gian dài. Điều này giúp ứng dụng của bạn hoạt động đáng tin cậy và giảm thiểu rủi ro từ các thay đổi đột ngột.
- Sử dụng npm scripts để quản lý các tác vụ lập trình hiệu quả: Tận dụng mục
scripts trong tệp package.json để tự động hóa các tác vụ lặp đi lặp lại. Thay vì gõ các lệnh dài, bạn có thể định nghĩa các lối tắt như npm start, npm test, hoặc npm run build. Điều này không chỉ tiết kiệm thời gian mà còn giúp chuẩn hóa quy trình làm việc trong nhóm.
- Tránh cài đặt gói npm với quyền root trực tiếp nếu không cần thiết: Hạn chế sử dụng
sudo npm install trừ khi bạn đang cài đặt một công cụ dòng lệnh toàn cầu. Đối với các phụ thuộc của dự án, hãy luôn chạy npm install với quyền người dùng thông thường. Điều này giúp ngăn chặn các kịch bản cài đặt độc hại có thể gây hại cho hệ thống của bạn và tránh các vấn đề về quyền sở hữu tệp trong thư mục node_modules.

Kết luận
Qua bài viết này, chúng ta đã cùng nhau đi qua một quy trình chi tiết và rõ ràng để cài đặt Node.js trên hệ điều hành CentOS 7. Từ việc chuẩn bị và cập nhật hệ thống, thêm kho lưu trữ NodeSource uy tín, cho đến việc cài đặt, kiểm tra và xử lý các sự cố thường gặp, bạn giờ đây đã có đủ kiến thức và công cụ để thiết lập một môi trường phát triển Node.js vững chắc và chuẩn xác. Việc tuân thủ các bước này không chỉ giúp quá trình cài đặt diễn ra suôn sẻ mà còn đảm bảo tính ổn định và bảo mật cho máy chủ của bạn.
Node.js là một nền tảng mạnh mẽ và linh hoạt. Đừng ngần ngại thử nghiệm với các phiên bản khác nhau, khám phá kho thư viện npm phong phú và tùy chỉnh môi trường phát triển để phù hợp nhất với nhu cầu dự án của bạn. Con đường trở thành một nhà phát triển Node.js chuyên nghiệp bắt đầu từ những bước cài đặt cơ bản này.
Nếu bạn muốn tìm hiểu sâu hơn, hãy khám phá thêm các bài viết nâng cao về cách quản lý dự án hiệu quả với npm, tối ưu hóa hiệu suất ứng dụng Node.js, hay triển khai ứng dụng lên môi trường production. Chúc bạn thành công trên hành trình chinh phục thế giới lập trình đầy thú vị này.