如何在轻量应用服务器上搭建Node.js后端服务?

在轻量应用服务器(如腾讯云 Lighthouse、阿里云轻量应用服务器等)上搭建 Node.js 后端服务,通常包括以下步骤。以下以 Ubuntu 22.04 LTS 为例(其他发行版类似),假设你已购买服务器并拥有 SSH 登录权限:


✅ 一、连接服务器

ssh root@<你的服务器IP>
# 或使用密钥登录
ssh -i /path/to/key.pem root@<你的服务器IP>

✅ 二、安装 Node.js & npm

方法1:使用官方 NodeSource 仓库(推荐,获取最新 LTS 版本)

# 安装 curl(若未安装)
apt update && apt install -y curl

# 添加 NodeSource 源(以 Node.js 20.x LTS 为例)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

# 安装 Node.js
apt install -y nodejs

# 验证安装
node -v  # 应输出 v20.x.x
npm -v   # 应输出 10.x.x

💡 提示:如需特定版本(如 v18),将 setup_20.x 改为 setup_18.x

方法2:使用系统包管理器(较旧版本,不推荐生产环境)

apt update
apt install -y nodejs npm

✅ 三、创建项目目录并初始化

mkdir -p ~/my-node-app
cd ~/my-node-app
npm init -y

安装基础依赖(示例 Express 项目):

npm install express
npm install --save-dev nodemon  # 开发时自动重启

创建 app.js

// app.js
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.send('Hello from Node.js on Lightweight Server!');
});

app.listen(PORT, '0.0.0.0', () => {
  console.log(`Server running at http://localhost:${PORT}`);
});

✅ 四、启动服务(测试用)

node app.js
# 或带 nodemon 热重载
npx nodemon app.js

此时访问 http://<服务器IP> 应看到响应。

⚠️ 注意:直接 node app.js 后进程会占用终端,按 Ctrl+C 停止。需后台运行才能持续服务。


✅ 五、部署为后台服务(生产推荐:PM2)

安装 PM2

npm install -g pm2

启动应用

pm2 start app.js --name my-backend
pm2 save          # 保存当前进程列表
pm2 startup       # 生成 systemd 启动命令(按提示执行)

✅ 验证状态:

pm2 list
pm2 logs my-backend

现在即使断开 SSH,服务也会持续运行,并在服务器重启后自动启动。


✅ 六、配置防火墙与域名(可选但重要)

1. 开放端口(根据云服务商控制台操作)

  • 登录云厂商控制台 → 找到“安全组”或“防火墙规则”
  • 添加入站规则:允许 TCP 3000(或你使用的端口)从 0.0.0.0/0 访问
    (生产环境建议限制为特定 IP 段)

2. 绑定域名(进阶)

  • 在 DNS 管理中添加 A 记录,指向服务器 IP
  • 使用 Nginx 反向X_X(可选):

    apt install -y nginx
    # 编辑 /etc/nginx/sites-available/myapp
    server {
      listen 80;
      server_name your-domain.com;
    
      location / {
          proxy_pass http://localhost: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;
      }
    }
    ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
    nginx -t && systemctl restart nginx

🔐 安全建议

  • 避免硬编码密码/密钥:使用环境变量(.env + dotenv
  • 启用 HTTPS(可用 Let’s Encrypt + certbot)
  • 定期更新系统:apt update && apt upgrade -y
  • 限制 SSH 登录(禁用 root 远程登录,改用普通用户 + sudo)

需要我提供:

  • Docker 化部署方案?
  • TypeScript 项目模板?
  • CI/CD 自动化部署流程(GitHub Actions)?
  • 数据库集成示例(如 MySQL/PostgreSQL)?

欢迎告诉我你的具体需求 😊