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

在轻量应用服务器(Lightweight Application Server,简称“轻服”)上搭建 Node.js 后端服务,核心在于利用其预装环境、一键部署或基础 Linux 命令行能力。国内主流云厂商(如腾讯云、阿里云、华为云等)的轻服通常基于 Debian 或 CentOS 系统,流程高度标准化。

以下是基于通用 Linux 环境的实操方案,以CentOS 7/8Debian/Ubuntu为例,涵盖从环境安装到服务上线的全过程。

一、环境准备与登录

  1. 获取连接信息:登录云控制台,找到你的轻量应用服务器实例,记录公网 IP、端口(默认 SSH 22)、用户名(通常为 rootcentos/ubuntu)及密码。
  2. SSH 连接
    • Windows 用户可使用 PowerShell 或 PuTTY。
    • Mac/Linux 用户直接使用终端。
      ssh root@<你的公网IP>
      # 首次连接需确认指纹,输入 yes 后输入密码

二、安装 Node.js 运行环境

轻服通常不预装最新版的 Node.js,建议通过官方源或包管理器安装,避免使用过时的系统自带版本。

方案 A:使用 NVM(推荐,灵活控制版本)

适合需要多版本共存或特定版本管理的场景。

# 1. 安装 curl (若未安装)
yum install -y curl   # CentOS
apt update && apt install -y curl  # Debian/Ubuntu

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

# 3. 使环境变量生效(退出重连或执行 source)
source ~/.bashrc

# 4. 安装指定版本的 Node.js (例如 LTS 版 v18)
nvm install 18
nvm use 18
nvm alias default 18

# 5. 验证
node -v
npm -v

方案 B:使用官方仓库(适合生产环境稳定版)

直接安装最新版或指定大版本,无需 NVM 管理。

  • CentOS/RHEL:
    yum install -y epel-release
    yum install -y nodejs npm
    # 如需更新到新版,可配置 NodeSource 源
    curl -fsSL https://rpm.nodesource.com/setup_18.x | bash -
    yum install -y nodejs
  • Debian/Ubuntu:
    curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
    apt-get install -y nodejs

三、代码部署与初始化

假设你已有本地项目代码,可通过 Git 拉取或 SCP 上传。

  1. 创建项目目录
    mkdir -p /opt/my-node-app
    cd /opt/my-node-app
  2. 传输代码
    • Git 方式git clone <你的代码仓库地址>
    • SCP 方式(在本地终端执行):
      scp -r ./dist/* root@<你的公网IP>:/opt/my-node-app/
  3. 安装依赖
    npm install --production
    # 注意:生产环境建议使用 --production 跳过 devDependencies,减小体积
  4. 配置启动脚本
    如果项目没有 package.json 中的 start 命令,需手动指定入口文件(如 index.js)。

四、进程守护与服务化(关键步骤)

Node.js 是单线程事件循环模型,直接用 node app.js 运行,一旦窗口关闭或服务崩溃,程序即停止。必须引入进程管理工具。

方案 A:使用 PM2(最流行,功能强大)

PM2 提供进程守护、日志管理、负载均衡等功能。

# 全局安装 PM2
npm install pm2 -g

# 启动应用
pm2 start index.js --name "my-backend"

# 设置开机自启
pm2 startup
# 根据提示执行输出的命令(通常是 env init systemd ...)

# 查看状态
pm2 status

# 查看实时日志
pm2 logs my-backend

方案 B:Systemd(原生 Linux 服务管理)

适合对容器化无需求,希望完全融入系统服务管理的场景。

  1. 创建服务文件 /etc/systemd/system/my-node-app.service

    [Unit]
    Description=My Node.js App
    After=network.target
    
    [Service]
    Type=simple
    User=root
    WorkingDirectory=/opt/my-node-app
    ExecStart=/usr/bin/node index.js
    Restart=always
    Environment="NODE_ENV=production"
    
    [Install]
    WantedBy=multi-user.target
  2. 启用并启动服务:
    systemctl daemon-reload
    systemctl enable my-node-app
    systemctl start my-node-app
    systemctl status my-node-app

五、防火墙与安全组配置

这是新手最容易忽略导致“连不上”的环节。

  1. 服务器内部防火墙
    • CentOS (firewalld):
      firewall-cmd --permanent --add-port=3000/tcp
      firewall-cmd --reload
    • Ubuntu (ufw):
      ufw allow 3000/tcp
      ufw reload
  2. 云平台安全组(重中之重)
    • 登录云厂商控制台 -> 找到轻量应用服务器 -> 防火墙/安全组规则。
    • 添加一条入方向规则:
      • 协议:TCP
      • 端口:3000 (或你的服务端口)
      • 授权对象:0.0.0.0/0 (允许所有 IP,生产环境建议限制为特定 IP 段)
    • 保存生效。

六、生产环境进阶优化

在正式对外提供服务前,建议进行以下加固:

  1. 反向X_X
    不要直接暴露 Node 端口。安装 Nginx 作为反向X_X,处理静态资源、SSL 证书和域名解析。

    • 安装 Nginx:yum install nginxapt install nginx
    • 配置 /etc/nginx/conf.d/myapp.conf,将域名请求转发至 http://localhost:3000
    • 重启 Nginx:systemctl restart nginx
    • 此时只需在安全组开放 80/443 端口。
  2. HTTPS 加密
    使用 Certbot 免费申请 Let’s Encrypt 证书,配合 Nginx 实现全站 HTTPS,提升安全性与 SEO。

  3. 日志轮转
    配置 logrotate 防止 Node.js 日志文件无限增长占满磁盘空间。

  4. 监控告警
    利用云厂商自带的轻量应用服务器监控面板,观察 CPU、内存和网络带宽使用情况,设置阈值告警。

总结

在轻量应用服务器上部署 Node.js 的核心路径是:NVM 安装环境 -> PM2 守护进程 -> 安全组放行端口 -> Nginx 反向X_X。这套组合拳既保证了服务的稳定性(PM2),又兼顾了安全性和扩展性(Nginx+ 安全组),是目前国内云环境下性价比最高且运维成本最低的架构方案。

未经允许不得转载:CLOUD云枢 » 如何在轻量应用服务器上搭建Node.js后端服务?