1. 在阿里云服务器上安装 Node.js, 有以下几种常用方法:

方法一:使用 NodeSource 仓库(推荐)

对于 Ubuntu/Debian 系统:

# 安装 curl(如果未安装)
sudo apt update
sudo apt install -y curl

# 添加 NodeSource 仓库(以 LTS 版本为例)
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

# 安装 Node.js(包含 npm)
sudo apt-get install -y nodejs

# 验证安装
node --version
npm --version

对于 CentOS/RHEL 系统:

# 添加 NodeSource 仓库
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -

# 安装 Node.js
sudo yum install -y nodejs

# 验证安装
node --version
npm --version

方法二:使用 NVM(Node Version Manager)

NVM 可以管理多个 Node.js 版本,非常灵活:

# 安装 NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# 重新加载 bashrc 或重新登录
source ~/.bashrc

# 安装最新的 LTS 版本
nvm install --lts

# 使用该版本
nvm use --lts

# 设置默认版本
nvm alias default node

# 验证安装
node --version
npm --version

方法三:使用包管理器直接安装

Ubuntu/Debian:

sudo apt update
sudo apt install -y nodejs npm

CentOS/RHEL:

sudo yum install -y nodejs npm

方法四:从源码编译安装(高级用户)

# 安装编译工具
sudo apt update
sudo apt install -y curl python3 make g++

# 下载源码(以 Node.js 18 为例)
cd /tmp
curl -O https://nodejs.org/dist/v18.17.0/node-v18.17.0.tar.gz
tar xzf node-v18.17.0.tar.gz
cd node-v18.17.0

# 编译安装
./configure
make -j$(nproc)
sudo make install

方法五:使用二进制包

# 下载二进制包
cd /tmp
wget https://nodejs.org/dist/v18.17.0/node-v18.17.0-linux-x64.tar.xz

# 解压
tar -xf node-v18.17.0-linux-x64.tar.xz

# 移动到系统目录
sudo mv node-v18.17.0-linux-x64 /usr/local/nodejs

# 创建软链接
sudo ln -sf /usr/local/nodejs/bin/node /usr/local/bin/node
sudo ln -sf /usr/local/nodejs/bin/npm /usr/local/bin/npm
sudo ln -sf /usr/local/nodejs/bin/npx /usr/local/bin/npx

安装后的配置

1. 配置 npm 全局安装路径(避免使用 sudo)

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

2. 更新 npm 到最新版本

npm install -g npm@latest

3. 安装常用工具

# 安装 yarn
npm install -g yarn

# 安装 pm2(进程管理)
npm install -g pm2

# 安装 express-generator
npm install -g express-generator

验证安装

# 检查 Node.js 版本
node --version

# 检查 npm 版本
npm --version

# 检查安装位置
which node
which npm

4. 配置防火墙(如果需要)

# 如果 Node.js 应用需要监听端口,开放相应端口
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload

推荐方案

  • 新手推荐: 方法一(NodeSource 仓库)

  • 开发推荐: 方法二(NVM),便于管理多个项目使用的不同 Node.js 版本

  • 生产环境: 方法一或方法五,确保版本稳定

选择哪种方法取决于你的具体需求,如果是生产环境建议使用 LTS(长期支持)版本。

遇到的问题

我尝试在centOs系统下安装node22版本,发现安装失败。原因是 CentOS 系统版本较老(CentOS 7),glibc 版本是 2.17,而 Node.js 22 需要 glibc >= 2.28。

# 查看 CentOS 版本
cat /etc/redhat-release
# 输出:
CentOS Linux release 7.9.2009 (Core)

# 查看 glibc 版本
ldd --version
# 查看系统架构
uname -m

安装nodejs18也不行,所以我尝试选择用nvm安装nodejs 16版本

# 1. 安装 NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# 2. 重新加载环境变量
source ~/.bashrc

# 3. 验证 NVM 安装
nvm --version

发现安装失败,原因是网络连接有问题,无法从 GitHub 下载 NVM 安装脚本。这是因为国内的服务器访问 GitHub 经常遇到网络问题。其他方法:

方法一:使用国内镜像安装 NVM

# 使用 gitee 镜像安装 NVM
curl -o- https://gitee.com/mirrors/nvm/raw/v0.39.0/install.sh | bash

# 或者使用 jsdelivr CDN
curl -o- https://cdn.jsdelivr.net/gh/nvm-sh/nvm@v0.39.0/install.sh | bash

方法二:手动下载安装 NVM

# 1. 手动创建 NVM 目录
mkdir -p ~/.nvm

# 2. 手动下载安装脚本(如果上面的镜像不行,可以本地创建)
cat > /tmp/install_nvm.sh << 'EOF'
#!/bin/bash
{
nvm_install_dir="$HOME/.nvm"
nvm_repo_url="https://gitee.com/mirrors/nvm.git"
git clone $nvm_repo_url "$nvm_install_dir"
cd "$nvm_install_dir"
git checkout v0.39.0
} > /dev/null 2>&1

echo "export NVM_DIR=\"$HOME/.nvm\"" >> ~/.bashrc
echo "[ -s \"\$NVM_DIR/nvm.sh\" ] && \\. \"\$NVM_DIR/nvm.sh\"" >> ~/.bashrc
echo "[ -s \"\$NVM_DIR/bash_completion\" ] && \\. \"\$NVM_DIR/bash_completion\"" >> ~/.bashrc

echo "NVM 安装完成,请重新登录或运行: source ~/.bashrc"
EOF

# 3. 运行安装脚本
bash /tmp/install_nvm.sh

# 4. 重新加载环境变量
source ~/.bashrc

方法三:直接下载 Node.js 二进制包(推荐,最稳定)

# 1. 下载 Node.js 16 二进制包(使用国内镜像)
cd /tmp
wget https://npmmirror.com/mirrors/node/v16.20.2/node-v16.20.2-linux-x64.tar.xz

# 如果上面的镜像不行,尝试这个:
# wget https://cdn.npmmirror.com/binaries/node/v16.20.2/node-v16.20.2-linux-x64.tar.xz

# 2. 解压
tar -xf node-v16.20.2-linux-x64.tar.xz

# 3. 移动到系统目录
sudo mv node-v16.20.2-linux-x64 /usr/local/nodejs

# 4. 创建软链接
sudo ln -sf /usr/local/nodejs/bin/node /usr/local/bin/node
sudo ln -sf /usr/local/nodejs/bin/npm /usr/local/bin/npm
sudo ln -sf /usr/local/nodejs/bin/npx /usr/local/bin/npx

# 5. 添加到环境变量
echo 'export PATH=/usr/local/nodejs/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 6. 验证安装
node --version
npm --version

方法四:使用 EPEL 仓库的旧版本 Node.js

# 1. 安装 EPEL 仓库
sudo yum install -y epel-release

# 2. 查看可用的 Node.js 版本
yum list available nodejs*

# 3. 安装 Node.js(EPEL 中的版本可能较旧,但稳定)
sudo yum install -y nodejs npm

# 4. 验证安装
node --version
npm --version

方法五:使用华为云镜像

# 使用华为云镜像安装 Node.js 16
cd /tmp
wget https://mirrors.huaweicloud.com/nodejs/v16.20.2/node-v16.20.2-linux-x64.tar.xz

# 后续步骤同方法三
tar -xf node-v16.20.2-linux-x64.tar.xz
sudo mv node-v16.20.2-linux-x64 /usr/local/nodejs
sudo ln -sf /usr/local/nodejs/bin/node /usr/local/bin/node
sudo ln -sf /usr/local/nodejs/bin/npm /usr/local/bin/npm
sudo ln -sf /usr/local/nodejs/bin/npx /usr/local/bin/npx
echo 'export PATH=/usr/local/nodejs/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
node --version

推荐操作顺序

  1. 首先尝试方法三(直接下载二进制包) - 最可靠,不受网络影响

  2. 如果方法三失败,尝试方法五(华为云镜像)

  3. 最后尝试方法四(EPEL 仓库)

最终我通过方法三成功安装了nodejs16版本

2. 将nodejs项目部署到阿里云服务器上

上传前的注意事项

为什么要删除 node_modules
主要原因:

  1. 文件数量巨大:node_modules 通常包含成千上万个文件,上传极其缓慢
  2. 平台兼容性问题:Windows 编译的依赖可能在 Linux 服务器上无法运行
  3. 版本冲突:本地开发环境与服务器环境可能存在差异
  4. 浪费磁盘空间:重复上传不必要的文件

本地清理

# 在本地项目目录执行清理(linux系统)
rm -rf node_modules
rm -rf dist
# 或者使用 npm 脚本清理(如果 package.json 中有定义)
npm run clean

# window环境,vscode编辑器中PowerShell专用清理命令
# 在项目目录打开 PowerShell
# 删除 node_modules 文件夹
Remove-Item -Recurse -Force node_modules
# 删除 dist 文件夹
Remove-Item -Recurse -Force dist
# 如果有 logs 文件夹也要删除
Remove-Item -Recurse -Force logs

上传项目文件

方式 适用场景 具体操作
Git克隆 适合代码已在Git仓库,便于后续更新 cd /home && git clone 你的项目地址
FTP/SFTP工具 适合从本地直接上传,直观方便 使用FileZilla、Xftp等工具连接服务器后上传
宝塔面板 适合不熟悉命令行的用户 安装宝塔面板后,通过网页界面进行文件上传和管理

安装项目依赖

1. 进入项目目录:

cd /home/你的项目目录

2. 安装依赖:

如果你的服务器在国内,访问npm官方源可能较慢,可以考虑使用国内镜像源

# 使用npm官方源安装
npm install

# 或者使用淘宝镜像安装
npm install --registry=https://registry.npmmirror.com

构建项目

你的项目是TypeScript编写的,需要先编译为JavaScript才能运行

npm run build

这个命令会执行你在package.json中定义的build脚本,使用TypeScript编译器(tsc)将src目录下的.ts文件编译到dist目录。

启动项目

在服务器上运行Node.js项目,不建议直接使用node或npm start命令,因为这样启动的进程在终端关闭后会自动退出。建议使用进程管理工具。

使用PM2(推荐用于生产环境)

1.全局安装PM2

npm install -g pm2

2. 使用PM2启动项目:

你可以直接启动编译后的JavaScript文件:

pm2 start dist/app.js --name "bookmark-backend"

或者,如果你在package.json中配置了start脚本,也可以这样启动:

pm2 start npm --name "bookmark-backend" -- run start

3. 设置PM2开机自启

为了让应用在服务器重启后能自动运行,需要让PM2生成开机自启脚本:

pm2 startup
pm2 save

PM2常用命令

命令 说明
pm2 list 查看所有由PM2管理的应用状态
pm2 logs bookmark-backend 查看你的后端应用日志
pm2 restart bookmark-backend 重启应用
pm2 stop bookmark-backend 停止应用
pm2 delete bookmark-backend 从PM2列表中删除应用

使用nohup(临时测试)

如果只是想快速测试,可以使用nohup命令让进程在后台运行,即使退出终端也不会停止:

nohup node dist/app.js > nohup.log 2>&1 &

注意: 这种方式不适合生产环境,因为进程异常退出时无法自动重启。

重要提醒

  • 检查环境变量:确保你的项目依赖的环境变量(如数据库连接信息、JWT密钥等)在服务器上已正确配置。你可以在服务器上创建一个.env文件,内容与你本地开发时的一致。

  • 安全组配置:登录阿里云控制台,检查你的服务器安全组规则,确保已经放行了你的Node.js应用监听的端口(例如3000)

完成以上步骤后,你应该就能通过http://你的服务器IP:端口号访问你的服务了。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐