跳到主要内容
Linux 下 Node.js 安装方法与最佳实践 | 极客日志
JavaScript Node.js 大前端
Linux 下 Node.js 安装方法与最佳实践 在 Linux 系统上安装 Node.js 的五种主要方法,包括官方仓库、NodeSource、NVM、Snap 包及二进制包。内容涵盖安装前准备、环境验证、NPM 配置优化、版本管理工具(NVM/N)的使用、卸载步骤以及生产环境的安全与性能最佳实践。通过对比不同方法的优缺点,帮助开发者根据实际需求选择合适的安装方案,并提供常见问题解决方案。
内存管理 发布于 2026/3/30 更新于 2026/5/24 32 浏览1. 简介:为什么 Linux 是 Node.js 的理想平台?
Linux 作为服务器操作系统的首选,与 Node.js 的事件驱动架构完美契合:
性能优势 :Linux 内核的高效 I/O 处理能力
稳定性 :Linux 系统的长期稳定性和可靠性
资源效率 :更少的系统开销,更高的并发处理能力
开源生态 :完善的工具链和社区支持
2. 安装前准备
2.1 系统要求
CPU :x86_64 或 ARM 架构
内存 :至少 512MB RAM(推荐 2GB+)
存储 :至少 200MB 可用空间
网络 :稳定的互联网连接(下载依赖)
2.2 确认 Linux 发行版
cat /etc/os-release
uname -m
lscpu | grep "Architecture"
2.3 安装必要工具
sudo apt update
sudo apt install -y curl wget build-essential
sudo yum update
sudo yum install -y curl wget gcc-c++ make
sudo zypper refresh
sudo zypper install -y curl wget gcc-c++ make
3. Node.js 安装方法详解
3.1 方法一:使用官方仓库(最简单)
适用于 Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v
npm -v
适用于 CentOS/RHEL/Fedora
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
node -v
npm -v
优点:
简单快捷,适合初学者
自动处理依赖关系
包含 npm 包管理器
缺点:
仓库中的版本可能不是最新
需要管理员权限
版本切换不够灵活
3.2 方法二:使用 NodeSource 仓库(推荐) NodeSource 提供最新版本的 Node.js,支持多个版本选择:
curl -o- https://raw.githubusercontent.com/nodesource/distributions/master/distributions.txt | grep -E '^[^[:space:]]' | cut -f 1 -d ' '
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
支持的版本:
LTS(长期支持) :18.x (氢)、16.x (镓)
Current(最新) :19.x
优点:
缺点:
3.3 方法三:使用 NVM(Node 版本管理器) NVM (Node Version Manager) 允许在同一系统上安装和管理多个 Node.js 版本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
source ~/.bashrc
nvm --version
nvm install --lts
nvm install 18.13.0
nvm use 18.13.0
nvm alias default 18.13.0
nvm ls
nvm uninstall 16.13.0
优点:
多版本并行管理
无需管理员权限(用户级安装)
版本切换简单
支持 .nvmrc 文件(项目级版本控制)
缺点:
项目级版本控制:
echo "18.13.0" > .nvmrc
cdnvm () {
cd "$@ "
nvm_path=$(nvm_find_up .nvmrc | tr -d '\n' )
if [[ ! $nvm_path =~ ^[^[:space:]]*$ ]]; then
declare default_version
default_version=$(nvm version default)
if [[ $default_version == "N/A" ]]; then
nvm install default
fi
if [[ $(nvm current) != $default_version ]]; then
nvm use default
fi
elif [[ -s $nvm_path /.nvmrc && -r $nvm_path /.nvmrc ]]; then
declare nvm_version
nvm_version=$(<"$nvm_path /.nvmrc" )
declare locally_resolved_nvm_version
locally_resolved_nvm_version=$(nvm version "$nvm_version " )
if [[ $locally_resolved_nvm_version == "N/A" ]]; then
nvm install "$nvm_version "
elif [[ $(nvm current) != "$locally_resolved_nvm_version " ]]; then
nvm use "$nvm_version "
fi
fi
}
alias cd ='cdnvm'
3.4 方法四:使用 Snap 包 适用于支持 Snap 的 Linux 发行版(Ubuntu 18.04+ 等):
sudo snap install node --classic
sudo snap install node --channel=18/stable --classic
sudo snap refresh node --channel=19/stable
node -v
npm -v
优点:
缺点:
不是所有发行版都支持 Snap
snap 包可能比原生安装稍慢
3.5 方法五:使用二进制包(手动安装)
wget https://nodejs.org/dist/v18.13.0/node-v18.13.0-linux-x64.tar.xz
tar -xvf node-v18.13.0-linux-x64.tar.xz
sudo mv node-v18.13.0-linux-x64 /usr/local/node
echo 'export NODE_HOME=/usr/local/node' >> ~/.bashrc
echo 'export PATH=$NODE_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
sudo ln -s /usr/local/node/bin/node /usr/bin/node
sudo ln -s /usr/local/node/bin/npm /usr/bin/npm
node -v
npm -v
优点:
缺点:
4. 验证 Node.js 安装
4.1 基本验证
node -v
npm -v
which node
which npm
4.2 功能验证
echo 'console.log("Node.js is running:", process.version);' > test.js
node test.js
4.3 npm 功能验证
mkdir test-npm && cd test-npm
npm init -y
npm install express
ls node_modules/
5. NPM 配置优化
5.1 全局配置
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
npm config get prefix
5.2 镜像配置(中国用户)
npm config set registry https://registry.npmmirror.com
npm config get registry
npm install express --registry https://registry.npmjs.org
5.3 权限配置
npm config set prefix ~/.npm-global
npx create-react-app my-app
sudo chown -R $(whoami ) $(npm config get prefix)/{lib/node_modules,bin,share}
6. Node.js 版本管理
6.1 使用 NVM 管理版本
nvm ls-remote
nvm ls
nvm install --lts
nvm install 18.13.0
nvm use 18.13.0
nvm alias default 18.13.0
nvm exec 18.13.0 node app.js
6.2 使用 N 管理版本
npm install -g n
n lts
n latest
n 18.13.0
n use 18.13.0
n ls
n rm 16.13.0
6.3 版本选择建议 场景 推荐版本 说明 生产环境 LTS (如 18.x) 稳定,长期支持 开发环境 LTS 或最新 新功能,多版本测试 测试环境 特定版本 (如 16.x/18.x) 兼容性验证
7. 卸载 Node.js
7.1 从官方仓库卸载
sudo apt-get remove nodejs
sudo apt-get autoremove
sudo yum remove nodejs
sudo yum autoremove
7.2 从 NodeSource 卸载
sudo apt-get purge nodejs
sudo rm -r /etc/apt/sources.list.d/nodesource.list
sudo apt-get autoremove
sudo yum remove nodejs
sudo rm /etc/yum.repos.d/nodesource-el*.repo
sudo yum autoremove
7.3 从 NVM 卸载
nvm uninstall 18.13.0
rm -rf ~/.nvm
7.4 从 Snap 卸载
7.5 手动安装的卸载
sudo rm -rf /usr/local/node
sudo rm /usr/bin/node
sudo rm /usr/bin/npm
8. 常见问题与解决方案
8.1 权限问题
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
sudo chown -R $(whoami ) $(npm config get prefix)/{lib/node_modules,bin,share}
8.2 网络问题
npm config set registry https://registry.npmmirror.com
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
8.3 版本冲突
nvm ls
nvm use 18.13.0
echo 'export PATH="/path/to/preferred/node/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
8.4 缺少依赖
sudo apt-get install -y build-essential
sudo yum groupinstall -y "Development Tools"
sudo yum install -y python3
9. 生产环境最佳实践
9.1 安全配置
sudo useradd -m -s /bin/bash nodeuser
sudo su - nodeuser
sudo ufw allow 3000/tcp
sudo ufw allow 22/tcp
sudo ufw enable
9.2 性能优化
echo '* soft nofile 65536' >> /etc/security/limits.conf
echo '* hard nofile 65536' >> /etc/security/limits.conf
echo 'net.core.somaxconn = 65536' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_max_syn_backlog = 65536' >> /etc/sysctl.conf
sysctl -p
9.3 进程管理
npm install -g pm2
pm2 start app.js
pm2 startup
pm2 save
pm2 monit
9.4 日志管理
sudo nano /etc/logrotate.d/nodejs
/home/nodeuser/app/logs/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 644
nodeuser
nodeuser
}
10. 总结与选择建议
10.1 安装方法对比 安装方法 适用场景 易用性 灵活性 管理便捷性 官方仓库 快速部署,测试环境 ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐ NodeSource 生产环境,稳定版本 ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ NVM 开发环境,多版本管理 ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Snap 容器化,简化管理 ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐ 二进制包 离线环境,定制安装 ⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐
10.2 选择建议 graph TD
A[选择安装方法] --> B{环境类型}
B -->|生产环境| C[NodeSource 仓库]
B -->|开发环境| D[NVM]
B -->|测试环境| E[官方仓库]
B -->|离线环境| F[二进制包]
B -->|容器环境| G[Snap]
C -->|优点| H[稳定版本,官方维护]
D -->|优点| I[多版本切换,项目隔离]
E -->|优点| J[简单快速]
F -->|优点| K[无需网络,完全控制]
G -->|优点| L[自动更新,沙箱安全]
10.3 后续步骤
学习 Node.js 基础 :掌握事件循环、异步编程
探索 Express/Koa :了解 Web 框架
数据库集成 :连接 MongoDB、MySQL 等
部署实践 :使用 PM2、Docker 等
性能优化 :掌握集群、缓存等技巧
最终建议 :对于大多数用户,我们推荐使用 NVM 管理开发环境中的 Node.js 版本,使用 NodeSource 仓库 安装生产环境的 Node.js。这两种方法结合使用,可以提供最大的灵活性和稳定性,满足各种场景的需求。
相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online