在轻量应用服务器(如腾讯云 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)?
欢迎告诉我你的具体需求 😊
云知识