如何在 CentOS 上安装 Node.js – wiki基地


在 CentOS 上安装 Node.js 的详细指南

Node.js 是一个强大的开源、跨平台的 JavaScript 运行时环境,它允许开发者在服务器端运行 JavaScript 代码。凭借其异步、事件驱动的特性,Node.js 特别适合构建高性能的网络应用、实时服务以及各种命令行工具。对于在 CentOS 这类企业级 Linux 系统上进行开发或部署应用的开发者和系统管理员来说,正确地安装和管理 Node.js 至关重要。

本文将提供一个全面、详细的指南,涵盖在 CentOS 系统上安装 Node.js 的多种常用方法,并深入探讨每种方法的优缺点、适用场景,以及一些安装后的常见配置和故障排除技巧。无论您是新手还是经验丰富的用户,本文都能帮助您顺利地在 CentOS 环境中搭建起 Node.js 开发或运行环境。

为什么选择 CentOS?

CentOS (Community Enterprise Operating System) 是一个基于 Red Hat Enterprise Linux (RHEL) 源代码构建的社区驱动的免费操作系统。它以其稳定性、安全性和长期支持(LTS)而闻名,因此广泛应用于服务器环境。在 CentOS 上部署 Node.js 应用,意味着您将在一个坚实可靠的平台上运行您的服务。

安装 Node.js 的主要方法

在 CentOS 上安装 Node.js 有几种常见且推荐的方法:

  1. 使用 CentOS 官方或 EPEL 仓库 (yumdnf): 这是最简单直接的方法,利用 CentOS 包管理器来安装。通常安装的是一个相对稳定的但可能不是最新的版本。
  2. 使用 NodeSource 官方仓库 (yumdnf): NodeSource 提供了针对各种 Linux 发行版的最新 Node.js 版本仓库。这是在 CentOS 上获取最新或特定 LTS 版本Node.js 的推荐方法之一。
  3. 使用 NVM (Node Version Manager): NVM 是一个强大的版本管理器,允许您在同一台机器上安装和切换多个 Node.js 版本。这对于需要兼容不同项目对 Node.js 版本要求的开发者来说非常有用。
  4. 从源码编译安装: 这是最灵活但也是最复杂的方法,通常只有在需要定制构建选项或安装极度前沿版本时才使用。对于大多数用户而言,不推荐此方法。

本文将重点详细介绍前三种最常用和推荐的方法。

准备工作

在开始安装之前,请确保您具备以下条件:

  • 一台运行 CentOS 系统的服务器或虚拟机(本文以 CentOS 7 和 CentOS 8 为例,尽管 CentOS 8 已停止维护,但方法依然具有参考价值,对于 CentOS Stream 或 Rocky Linux/AlmaLinux 也基本适用)。
  • 拥有 sudo 权限的用户账户。
  • 稳定的互联网连接,用于下载软件包。
  • 建议先更新系统软件包列表和已安装的软件包,这有助于避免依赖问题:

    bash
    sudo yum clean all # 清理缓存 (可选)
    sudo yum update -y # 更新系统

    (对于 CentOS 8 或更高版本,yum 命令已被 dnf 取代,用法基本相同:sudo dnf update -y

接下来,我们将详细介绍每种安装方法。


方法一:使用 CentOS 官方或 EPEL 仓库安装 (yum/dnf)

这是最简单直接的方法,尤其适合那些对 Node.js 版本要求不苛刻,只需要一个可用版本来运行应用的场景。然而,CentOS 官方仓库中的 Node.js 版本通常比较旧。为了获取稍微新一些的版本,我们需要启用 EPEL (Extra Packages for Enterprise Linux) 仓库。

步骤 1:安装 EPEL 仓库

EPEL 仓库提供了许多在官方 CentOS 仓库中找不到的流行软件包,包括较新版本的 Node.js。

bash
sudo yum install epel-release -y

或者对于 CentOS 8+/dnf:
bash
sudo dnf install epel-release -y

安装完成后,EPEL 仓库的配置会自动添加到系统中。

步骤 2:安装 Node.js 和 npm

EPEL 仓库启用后,您就可以使用 yumdnf 直接安装 nodejs 包了。请注意,通常安装 nodejs 包时也会自动安装 npm (Node Package Manager),它是 Node.js 生态系统中用于管理项目依赖的标准工具。

bash
sudo yum install nodejs -y

或者对于 CentOS 8+/dnf:
bash
sudo dnf install nodejs -y

这个命令会从 EPEL 仓库下载并安装最新可用版本的 Node.js 和 npm。

步骤 3:验证安装

安装完成后,可以通过检查 Node.js 和 npm 的版本来验证是否安装成功:

bash
node -v
npm -v

如果命令输出了版本号(例如 v10.x.x6.x.x),则表示安装成功。请注意,通过这种方式安装的版本号取决于 EPEL 仓库中提供的具体版本,它可能不是最新的 LTS 版本。

这种方法的优缺点:

  • 优点:
    • 安装过程极其简单,只需几条命令。
    • 利用系统自带的包管理器,易于管理(更新、卸载)。
    • 安装稳定,通常与 CentOS 系统环境兼容性良好。
  • 缺点:
    • 通过 EPEL 仓库安装的 Node.js 版本通常不是最新的 LTS 版本,可能落后于 Node.js 官方发布。
    • 无法方便地在不同 Node.js 版本之间切换。
    • 如果您的应用依赖于较新的 Node.js 特性,这种方法可能不适用。

适用场景:

  • 只需要一个基础的、稳定可用的 Node.js 版本来运行不依赖最新特性的应用。
  • 对 Node.js 版本没有严格要求。
  • 偏好使用系统包管理器统一管理软件。

方法二:使用 NodeSource 仓库安装 (yum/dnf)

NodeSource 是 Node.js 官方推荐的第三方维护的仓库之一,它为各种 Linux 发行版提供了最新版本的 Node.js 二进制包。这是在 CentOS 上安装特定 Node.js 版本(包括最新的 LTS 和 Current 版本)的最常用和推荐的方法。

步骤 1:添加 NodeSource 仓库

NodeSource 提供了一个设置脚本,可以自动检测您的系统并添加相应的仓库配置。您需要选择想要安装的 Node.js 版本,通常建议安装 LTS (Long Term Support) 版本,因为它更稳定并提供长期支持。以下是添加 Node.js 20 LTS 版本仓库的示例:

“`bash

对于 CentOS 7

curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash –

对于 CentOS 8+/dnf

您可能需要先安装curl和gnupg

sudo dnf install curl gnupg2 -y

curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash –
“`

  • curl -fsSL: 使用 curl 命令下载脚本。-f 表示下载失败时不显示错误;-s 表示静默模式,不显示进度条;-S 表示在静默模式下显示错误;-L 表示跟随重定向。
  • https://rpm.nodesource.com/setup_20.x: 这是获取 Node.js 20.x LTS 版本仓库设置脚本的 URL。如果您想安装其他版本,只需将 setup_20.x 替换为相应的版本号,例如 setup_18.x (Node.js 18 LTS) 或 setup_lts.x (最新 LTS) 或 setup_current.x (最新 Current)。
  • | sudo bash -: 将下载的脚本通过管道符传递给 sudo bash 执行。这将以 root 权限运行脚本,配置 NodeSource 仓库。

运行脚本后,它会打印一些信息,说明已成功添加 NodeSource 仓库,并提示您接下来执行安装命令。

步骤 2:安装 Node.js 和 npm

一旦 NodeSource 仓库被添加到您的系统,您就可以使用 yumdnf 安装 nodejs 包了。这个包包含了 Node.js 可执行文件和 npm。

bash
sudo yum install nodejs -y

或者对于 CentOS 8+/dnf:
bash
sudo dnf install nodejs -y

注意: NodeSource 提供的包通常已经包含了最新版本的 npm,所以您只需要安装 nodejs 包即可。

步骤 3:验证安装

安装完成后,同样通过检查 Node.js 和 npm 的版本来验证:

bash
node -v
npm -v

这次您应该会看到您通过 NodeSource 脚本指定的 Node.js 版本号(例如 v20.x.x)以及相应的 npm 版本号。

更新 Node.js (使用 NodeSource 方法安装的)

如果您想更新通过 NodeSource 安装的 Node.js 版本,例如从 Node.js 20.x 更新到更新的 20.x 版本,或者升级到新的 LTS 版本(例如 Node.js 22),您通常需要:

  1. 如果只是小版本更新 (例如 20.1.0 -> 20.2.0): 只需运行系统更新命令即可:
    bash
    sudo yum update nodejs -y
    # 或 sudo dnf update nodejs -y
  2. 如果想升级到新的主要或 LTS 版本 (例如从 20.x 到 22.x):
    • 首先,您可以卸载当前版本(可选,但推荐,尤其是在升级到大版本时):
      bash
      sudo yum remove nodejs -y
      # 或 sudo dnf remove nodejs -y
    • 然后,再次运行 NodeSource 的设置脚本,这次使用新版本的 URL (例如 setup_22.x):
      bash
      curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
    • 最后,重新安装 Node.js:
      bash
      sudo yum install nodejs -y
      # 或 sudo dnf install nodejs -y

这种方法的优缺点:

  • 优点:
    • 可以方便地安装最新或特定的 LTS Node.js 版本。
    • 安装过程相对简单,利用了 yum/dnf 包管理器。
    • 提供了官方推荐的二进制包,稳定性较好。
  • 缺点:
    • 仍然是系统全局安装,无法方便地在不同 Node.js 版本之间快速切换。
    • 添加了第三方仓库,需要信任 NodeSource。
  • 适用场景:
    • 需要安装特定、较新的 Node.js 版本(例如某个 LTS 版本)。
    • 系统上主要运行依赖于特定或较新 Node.js 版本的应用。
    • 偏好使用系统包管理器进行安装和更新,但官方/EPEL 版本过旧。

方法三:使用 NVM (Node Version Manager) 安装

NVM 是一个专门用于管理 Node.js 版本的命令行工具。它允许您在同一个用户账户下安装多个 Node.js 版本,并轻松地在它们之间进行切换。这对于开发者来说非常有用,尤其是当您需要在不同的项目中使用不同 Node.js 版本时。

NVM 通常安装在用户的主目录下,不会影响系统全局的 Node.js 安装(如果存在的话),因此它更加灵活和独立。

步骤 1:安装 NVM 的依赖

NVM 的安装脚本和其自身运行需要一些基本的工具,如 curl (用于下载) 和 git (用于克隆 NVM 仓库)。在 CentOS 上,您可以使用 yumdnf 安装它们:

bash
sudo yum install curl git -y

或者对于 CentOS 8+/dnf:
bash
sudo dnf install curl git -y

步骤 2:下载并安装 NVM

使用 curl 命令从 NVM 的 GitHub 仓库下载并运行安装脚本。建议访问 NVM 的 GitHub 页面 (https://github.com/nvm-sh/nvm) 查看最新版本的安装脚本 URL,以确保您安装的是最新版本的 NVM。

以下是安装最新稳定版本 NVM 的示例命令 (请替换 v0.39.7 为当前最新的 NVM 版本号):

bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

  • curl -o- ... | bash: 下载脚本并直接通过管道符传递给 bash 执行。-o- 表示将输出写入标准输出。

这个脚本会将 NVM 仓库克隆到您的用户主目录下的 .nvm 目录中,并在您的 shell 配置文件 (如 ~/.bashrc, ~/.zshrc, ~/.profile 等) 中添加加载 NVM 的配置。

步骤 3:加载 NVM 到当前会话

安装脚本通常会提示您关闭并重新打开终端,或者运行特定的命令来加载 NVM 到当前 shell 会话。这是因为 NVM 的配置需要被 shell 执行才能生效。您可以通过 sourcing 配置文件来立即加载:

“`bash
source ~/.bashrc

或者根据你的shell,可能是 source ~/.profile 或 source ~/.zshrc 等

“`

如果脚本修改了其他文件(例如 .profile),您可能需要根据脚本的输出调整 source 命令。

步骤 4:验证 NVM 安装

加载配置后,您可以验证 NVM 是否成功安装并可以执行:

bash
command -v nvm

如果命令输出了 nvm,则表示 NVM 已成功安装并可以在当前 shell 中使用。

步骤 5:使用 NVM 安装 Node.js

现在您可以使用 nvm 命令来安装 Node.js 了。

  • 安装最新的 LTS 版本:
    bash
    nvm install --lts
  • 安装最新的 Current 版本:
    bash
    nvm install node
  • 安装特定版本 (例如 v18.17.1):
    bash
    nvm install 18.17.1

    您可以通过 nvm ls-remote 命令查看所有可用的 Node.js 版本列表。

安装完成后,NVM 会自动将刚安装的版本设置为当前使用的版本。

步骤 6:验证 Node.js 安装 (使用 NVM)

安装完成后,再次检查 Node.js 和 npm 的版本。这次输出的版本号应该是您通过 NVM 安装的版本。

bash
node -v
npm -v

使用 NVM 管理 Node.js 版本:

NVM 提供了丰富的命令来管理您安装的 Node.js 版本:

  • 列出已安装的版本:
    bash
    nvm ls

    这将列出所有通过 NVM 安装的 Node.js 版本,并用箭头 (->) 指示当前正在使用的版本。
  • 切换到指定版本:
    bash
    nvm use <version>

    例如:nvm use 18.17.1
  • 设置默认版本: 您可以将某个版本设置为每次打开新终端时自动使用的版本:
    bash
    nvm alias default <version>

    例如:nvm alias default --ltsnvm alias default 20.1.0
  • 卸载指定版本:
    bash
    nvm uninstall <version>

    例如:nvm uninstall 14.21.3

这种方法的优缺点:

  • 优点:
    • 极高的灵活性,可以轻松安装和切换多个 Node.js 版本。
    • 安装在用户目录下,不影响系统全局环境,避免潜在冲突。
    • 非常适合需要测试不同版本兼容性或开发多个使用不同 Node.js 版本项目的开发者。
  • 缺点:
    • 安装和使用略复杂于直接通过包管理器安装。
    • 每个需要使用 Node.js 的用户都需要单独安装和配置 NVM(或者进行特殊处理实现全局可用,但这通常不是 NVM 的典型用法)。
    • Node.js 和 npm 的可执行文件路径 ($PATH) 会由 NVM 在 shell 启动时动态设置,这在使用定时任务 (cron jobs) 或特定服务脚本时需要特别注意,可能需要显式 sourcing NVM 环境。
  • 适用场景:
    • 开发者,需要在不同项目中使用不同 Node.js 版本。
    • 需要频繁升级或降级 Node.js 版本进行测试。
    • 希望 Node.js 环境与系统其他部分隔离。

从源码编译安装 Node.js

从源码编译安装 Node.js 是最灵活的方法,您可以完全控制构建过程,包括配置选项。但它也是最复杂和耗时的方法,需要安装编译工具和各种依赖库,且后续的更新和维护也比较繁琐。对于大多数用户而言,前三种方法已经足够,因此不建议普通用户采用此方法。

简单概述步骤 (不提供详细代码,因为篇幅和复杂性):

  1. 安装编译所需的工具和依赖库(如 gcc, gcc-c++, make, python3, openssl-devel 等)。
  2. 从 Node.js 官网下载最新或指定版本的源码压缩包。
  3. 解压源码包。
  4. 进入源码目录,运行配置脚本 (./configure),可以指定安装路径、特性等。
  5. 运行 make 命令进行编译。
  6. 运行 sudo make install 将编译好的 Node.js 安装到指定位置(默认为 /usr/local)。
  7. 验证安装。

这种方法非常底层,如果依赖库版本不对或配置有误,很容易遇到各种编译错误。除非您有特殊的定制需求或深入了解编译过程,否则请优先考虑使用包管理器或 NVM。


安装后的常见任务和配置

安装 Node.js 后,您可能会进行以下操作:

  1. 使用 npm 安装模块:
    • 安装全局模块 (对所有用户或当前 NVM 环境可用):
      bash
      npm install -g <module-name>

      注意: 如果您使用 NVM 安装的 Node.js,npm install -g 通常不会产生权限问题,因为 NVM 会设置好目录权限。如果您是通过 sudo 使用 yum/dnf 安装的 Node.js,直接运行 npm install -g 可能会因为普通用户没有 /usr/lib/node_modules 或类似目录的写入权限而失败。切勿简单地使用 sudo npm install -g,这会导致 npm 使用 root 权限运行,污染文件权限并可能引发后续问题。推荐的解决方案是使用 NVM,或者修改 npm 的全局模块安装目录,或者使用 NodeSource 仓库(它们通常会配置好权限)。
    • 安装项目本地模块 (在项目目录下):
      bash
      cd /path/to/your/project
      npm install <module-name>

      这会在项目目录下的 node_modules 子目录中安装模块。这是推荐的方式,以便每个项目拥有独立的依赖环境。
  2. 更新 npm: 尽管 npm 通常随 Node.js 一起安装,但有时您可以独立更新 npm 到最新版本:
    bash
    npm install -g npm@latest

    注意: 这可能会更新当前 Node.js 版本自带的 npm,但如果使用 NVM,这次更新只影响当前 nvm use 的 Node.js 版本。
  3. 配置 npm 镜像: 由于网络原因,从 npm 官方仓库下载模块可能很慢。您可以配置使用国内的 npm 镜像源来加速下载,例如淘宝镜像:
    bash
    npm config set registry https://registry.npmmirror.com/
    # 验证配置
    npm config get registry

    如果您想恢复到官方源:
    bash
    npm config set registry https://registry.npmjs.org/

    这个配置可以是全局的(使用 -g 参数),也可以是用户级别的(默认)。
  4. 运行 Node.js 脚本:
    • 执行单个文件: node your_script.js
    • 执行项目启动脚本 (如果在 package.json 中配置了 start 脚本): npm start
  5. 设置服务自启动: 如果您在 CentOS 上部署 Node.js 应用作为服务,您通常会使用 systemd 来管理和控制应用的启动、停止、重启和自启动。这涉及到创建一个 .service 文件,并配置 systemd 来运行您的 Node.js 应用。这部分内容本身可以构成一篇独立文章,此处不再详细展开,但请注意这是生产环境中常见的部署方式。

故障排除

在 CentOS 上安装或使用 Node.js 可能会遇到一些问题:

  • node: command not foundnpm: command not found:
    • 检查 Node.js 和 npm 是否确实已安装。
    • 检查您的用户账户的 $PATH 环境变量是否包含 Node.js 和 npm 的安装路径。
      • 对于 yum/dnf 安装,它们通常在 /usr/bin/usr/local/bin 中,这些目录通常在 $PATH 中。
      • 对于 NVM 安装,请确保您已经成功 source 了 NVM 的配置文件,并且当前 shell 会话是通过 nvm use <version> 或 NVM 默认设置激活了 Node.js 版本。运行 echo $PATHcommand -v node 来诊断路径问题。
  • npm install -g 权限错误: 如果不是使用 NVM 安装 Node.js,且直接使用 npm install -g 遇到 EACCES 权限错误,请不要使用 sudo npm install -g。正确的做法是修改 npm 的全局安装目录权限,或者配置 npm 将全局模块安装到您有权限的目录,或者使用 NVM。
  • 安装依赖时编译失败 (node-gyp 错误): 某些 Node.js 模块包含需要编译的 C++ 代码。这需要系统中安装有 C++ 编译器和相关的开发工具。如果遇到这类错误,通常需要安装 build-essential (或 CentOS/RHEL 上的 Development Tools 组) 和 Python:
    bash
    sudo yum groupinstall 'Development Tools' -y
    sudo yum install python3 -y # 或 python2,取决于模块要求
  • 网络问题: 在下载 Node.js 或 npm 模块时,网络不稳定或防火墙设置可能导致下载失败。检查您的网络连接和防火墙设置。
  • EPEL/NodeSource 仓库问题: 如果在使用 yumdnf 从这些仓库安装时遇到错误,可能是仓库配置有问题,GPG 密钥未导入,或者仓库暂时不可用。检查错误信息,有时需要手动导入仓库的 GPG 密钥。

选择合适的安装方法

根据您的需求,选择最合适的安装方法:

  • 对于生产环境,只需要特定版本的 Node.js 且不经常切换: 推荐使用 NodeSource 仓库 方法。它可以方便地获取较新或 LTS 版本,并与系统包管理器集成,便于管理和更新。
  • 对于开发者,需要在不同项目中使用不同 Node.js 版本: NVM 是最佳选择。它提供了极大的灵活性和隔离性。
  • 对于只需要一个基础 Node.js 版本来运行简单脚本或旧应用: CentOS 官方/EPEL 仓库 方法最简单,但版本可能较旧。
  • 除非有特殊需求,否则不推荐从源码编译安装。

总结

本文详细介绍了在 CentOS 系统上安装 Node.js 的三种主要方法:通过系统包管理器 (yum/dnf) 配合 EPEL 仓库、通过 NodeSource 官方仓库、以及使用 Node Version Manager (NVM)。每种方法都有其独特的优缺点和适用场景。

使用 yum/dnf 从 EPEL 安装适用于追求简单且对版本要求不高的场景;使用 NodeSource 仓库是获取特定新版本 Node.js 的常用且推荐方式,方便系统级的安装和管理;而 NVM 则为开发者提供了在多个 Node.js 版本之间自由切换的能力,极具灵活性。

选择适合您需求的方法,按照本文提供的详细步骤操作,您就能在 CentOS 系统上成功搭建 Node.js 环境。安装完成后,别忘了验证安装,并根据需要进行一些基本的配置,如设置 npm 镜像,以优化您的开发和部署体验。

希望这篇详细指南能帮助您顺利地在 CentOS 上迈出 Node.js 的第一步!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部