在轻量应用服务器(Lightweight Application Server,简称“轻服”)上搭建 Node.js 后端服务,核心在于利用其预装环境、一键部署或基础 Linux 命令行能力。国内主流云厂商(如腾讯云、阿里云、华为云等)的轻服通常基于 Debian 或 CentOS 系统,流程高度标准化。
以下是基于通用 Linux 环境的实操方案,以CentOS 7/8和Debian/Ubuntu为例,涵盖从环境安装到服务上线的全过程。
一、环境准备与登录
- 获取连接信息:登录云控制台,找到你的轻量应用服务器实例,记录公网 IP、端口(默认 SSH 22)、用户名(通常为
root或centos/ubuntu)及密码。 - 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 上传。
- 创建项目目录:
mkdir -p /opt/my-node-app cd /opt/my-node-app - 传输代码:
- Git 方式:
git clone <你的代码仓库地址> - SCP 方式(在本地终端执行):
scp -r ./dist/* root@<你的公网IP>:/opt/my-node-app/
- Git 方式:
- 安装依赖:
npm install --production # 注意:生产环境建议使用 --production 跳过 devDependencies,减小体积 - 配置启动脚本:
如果项目没有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 服务管理)
适合对容器化无需求,希望完全融入系统服务管理的场景。
-
创建服务文件
/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 - 启用并启动服务:
systemctl daemon-reload systemctl enable my-node-app systemctl start my-node-app systemctl status my-node-app
五、防火墙与安全组配置
这是新手最容易忽略导致“连不上”的环节。
- 服务器内部防火墙:
- CentOS (firewalld):
firewall-cmd --permanent --add-port=3000/tcp firewall-cmd --reload - Ubuntu (ufw):
ufw allow 3000/tcp ufw reload
- CentOS (firewalld):
- 云平台安全组(重中之重):
- 登录云厂商控制台 -> 找到轻量应用服务器 -> 防火墙/安全组规则。
- 添加一条入方向规则:
- 协议:TCP
- 端口:
3000(或你的服务端口) - 授权对象:
0.0.0.0/0(允许所有 IP,生产环境建议限制为特定 IP 段)
- 保存生效。
六、生产环境进阶优化
在正式对外提供服务前,建议进行以下加固:
-
反向X_X:
不要直接暴露 Node 端口。安装 Nginx 作为反向X_X,处理静态资源、SSL 证书和域名解析。- 安装 Nginx:
yum install nginx或apt install nginx - 配置
/etc/nginx/conf.d/myapp.conf,将域名请求转发至http://localhost:3000。 - 重启 Nginx:
systemctl restart nginx - 此时只需在安全组开放 80/443 端口。
- 安装 Nginx:
-
HTTPS 加密:
使用 Certbot 免费申请 Let’s Encrypt 证书,配合 Nginx 实现全站 HTTPS,提升安全性与 SEO。 -
日志轮转:
配置logrotate防止 Node.js 日志文件无限增长占满磁盘空间。 -
监控告警:
利用云厂商自带的轻量应用服务器监控面板,观察 CPU、内存和网络带宽使用情况,设置阈值告警。
总结
在轻量应用服务器上部署 Node.js 的核心路径是:NVM 安装环境 -> PM2 守护进程 -> 安全组放行端口 -> Nginx 反向X_X。这套组合拳既保证了服务的稳定性(PM2),又兼顾了安全性和扩展性(Nginx+ 安全组),是目前国内云环境下性价比最高且运维成本最低的架构方案。
CLOUD云枢