Debian 系统中 Node.js 配置步骤
一 安装方式选择
- 使用 NodeSource 二进制分发库:适合在系统范围内安装并维护特定版本的 Node.js,步骤简洁、与 APT 生态兼容好。
- 使用 NVM(Node Version Manager):适合在同一台机器上管理多个 Node.js 版本,开发/测试环境切换方便。
- 从源码编译安装:适合需要特定构建选项或深度定制的场景,过程相对复杂。
以上三种方式均为常见且可靠的安装途径,可按用途选择其一。
二 方法一 NodeSource 安装与系统级配置
- 更新索引并安装必要工具:
sudo apt update && sudo apt install -y ca-certificates curl gnupg
- 添加 NodeSource 仓库(示例为 20.x,可按需替换为 18.x/22.x 等):
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
- 安装 Node.js 与 npm:
sudo apt install -y nodejs
- 验证安装:
node -v
npm -v
- 可选 全局包目录与权限:
- 建议将全局包安装到用户目录,避免系统目录权限问题:
mkdir -p ~/.npm-global
npm config set prefix ‘~/.npm-global’
- 将全局 bin 目录加入 PATH(写入 ~/.bashrc 或 ~/.zshrc):
echo ‘export PATH=$HOME/.npm-global/bin:$PATH’ >> ~/.bashrc
source ~/.bashrc
- 验证:npm config get prefix。
三 方法二 NVM 安装与多版本管理
- 安装 NVM(示例版本 v0.39.7):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
- 加载 NVM(或重新打开终端):
source ~/.bashrc
- 安装与切换版本:
- 安装最新 LTS:nvm install --lts
- 安装指定版本:nvm install 18.18.2
- 使用版本:nvm use 18.18.2;设为默认:nvm alias default 18.18.2
- 验证:
node -v
npm -v
- 说明:NVM 安装的 Node.js 位于用户目录,通常无需额外配置系统级 PATH。
四 环境变量与多版本切换
- 使用 NVM 时的 Shell 配置(确保每次登录可用):
echo ‘export NVM_DIR=“$HOME/.nvm”’ >> ~/.bashrc
echo ‘[ -s “$NVM_DIR/nvm.sh” ] && . “$NVM_DIR/nvm.sh”’ >> ~/.bashrc
source ~/.bashrc
- 系统级 PATH 调整(仅在非 NVM 场景或自定义安装路径时需要):
- 编辑全局环境:sudo nano /etc/environment(在 PATH 末尾追加如 /usr/local/bin)
- 或编辑用户环境:echo ‘export PATH=$PATH:/usr/local/bin’ >> ~/.bashrc && source ~/.bashrc
- 多版本共存与切换(不使用 NVM 时可选):
sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 100
sudo update-alternatives --install /usr/bin/npm npm /usr/bin/npm 100
sudo update-alternatives --config node
sudo update-alternatives --config npm
五 部署与运行最佳实践
- 使用 PM2 守护进程:
sudo npm install -g pm2
pm2 start app.js --name my-app
pm2 startup # 按提示生成 systemd 服务,随系统自启
pm2 save
- 使用 Nginx 反向代理(示例将 80 端口转发到 3000):
sudo apt install -y nginx
sudo tee /etc/nginx/sites-available/node <<‘EOF’
server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/node /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
- 防火墙放行(如使用 UFW):
sudo ufw allow ‘Nginx Full’
sudo ufw enable