在腾讯云轻量应用服务器(Lighthouse)上部署小程序的 Node.js 后端,是一个常见且轻量高效的方案。以下是完整、安全、可落地的部署指南(以 Ubuntu 22.04 为例,Node.js + Express + Nginx + PM2 + 域名/HTTPS),适用于微信小程序后端(如用户登录、数据接口等):
✅ 一、前期准备
| 项目 | 说明 |
|---|---|
| 轻量服务器配置 | 推荐 ≥ 1C2G(开发/测试够用;生产建议2C4G+) |
| 系统镜像 | Ubuntu 22.04 LTS(推荐)或 CentOS 7+(本文以 Ubuntu 为例) |
| 已备案域名 | 小程序 request 域名必须已备案(腾讯云备案 → https://cloud.tencent.com/product/icp) |
| 安全组规则 | 开放端口:80(HTTP)、443(HTTPS)、22(SSH)—— ❌ 禁止开放 3000/8080 等 Node 端口给公网! |
⚠️ 注意:微信小程序
wx.request仅支持https协议,且域名需在小程序后台【开发管理 → 服务器域名】中配置(request合法域名)。
✅ 二、服务器初始化(SSH 登录后执行)
# 1. 更新系统
sudo apt update && sudo apt upgrade -y
# 2. 安装基础工具
sudo apt install -y curl wget git vim htop
# 3. 创建部署用户(非 root,更安全)
sudo adduser deploy
sudo usermod -aG sudo deploy
# 切换并设置 SSH 密钥(推荐)或密码登录
su - deploy
✅ 三、安装 Node.js(推荐使用 nvm,便于多版本管理)
# 以 deploy 用户执行(不要用 sudo!)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
# 安装 LTS 版本(如 20.x)
nvm install --lts
nvm use --lts
node -v # v20.x.x
npm -v # ≥ 10.x
✅ 四、上传 & 配置你的 Node.js 后端代码
方式 1:Git 克隆(推荐,便于更新)
mkdir -p ~/myapp && cd ~/myapp
git clone https://your-git-repo.com/your-miniprogram-backend.git .
# 或直接上传 zip 后解压
方式 2:本地上传(通过 SFTP / scp)
# 本地终端执行(替换 IP 和路径)
scp -r ./backend/* deploy@YOUR_SERVER_IP:/home/deploy/myapp/
✅ 关键检查项(务必确认):
- ✅
package.json存在,含"start": "node server.js"或类似脚本 - ✅
server.js/app.js中监听0.0.0.0:3000(不是 127.0.0.1!) - ✅ 数据库连接(如 MySQL/MongoDB)地址改为内网 IP 或云数据库地址(勿用 localhost)
- ✅ 环境变量:使用
.env文件(用dotenv加载),不要硬编码密钥!
示例 server.js 片段:
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.get('/api/test', (req, res) => {
res.json({ code: 0, data: 'Hello from Tencent Lighthouse!' });
});
// 监听所有网络接口(关键!)
app.listen(PORT, '0.0.0.0', () => {
console.log(`Server running on http://0.0.0.0:${PORT}`);
});
安装依赖:
cd ~/myapp
npm install --production # 生产环境不装 devDependencies
✅ 五、使用 PM2 管理进程(守护、自动重启、日志)
# 全局安装 PM2
npm install -g pm2
# 启动应用(--name 可自定义)
pm2 start server.js --name "miniprogram-api" --watch --ignore-watch="node_modules"
# 设置开机自启(重要!)
pm2 startup
pm2 save
# 查看状态
pm2 status
pm2 logs miniprogram-api # 实时日志
✅ 此时 Node 进程已在后台运行(默认
localhost:3000),但尚未对外暴露。
✅ 六、配置 Nginx 反向X_X(暴露 HTTPS 服务)
1. 安装 Nginx
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
2. 配置反向X_X(替换 your-domain.com)
sudo vim /etc/nginx/sites-available/miniprogram-api
内容如下(支持 HTTP → HTTPS 自动跳转 + WebSocket 支持):
server {
listen 80;
server_name your-domain.com;
# 强制 HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL 证书(见下一步)
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
# 日志
access_log /var/log/nginx/miniprogram-api-access.log;
error_log /var/log/nginx/miniprogram-api-error.log;
location / {
proxy_pass http://127.0.0.1:3000; # 转发到 Node
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
# 微信小程序登录等接口常需 CORS(后端已处理则可省略)
# add_header 'Access-Control-Allow-Origin' '*';
# add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
}
3. 启用站点 & 测试配置
sudo ln -sf /etc/nginx/sites-available/miniprogram-api /etc/nginx/sites-enabled/
sudo nginx -t # 检查语法
sudo systemctl reload nginx
4. ✅ 获取免费 HTTPS 证书(Let’s Encrypt)
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
# 按提示选择自动重定向(选 2)
# ✅ 自动配置 SSL 并加入定时续期(certbot 自带 cron)
🔐 证书路径即上文 Nginx 配置中的
/etc/letsencrypt/live/...
✅ 七、小程序端配置(关键!)
-
登录 微信公众平台 → 小程序后台
-
【开发管理】→ 【开发设置】→ 【服务器域名】
-
在 request 合法域名 中添加:
✅https://your-domain.com(必须是 HTTPS,且已备案)
❌ 不要加http://、www.(除非你额外配置了该子域)、端口号 -
代码中调用示例:
wx.request({ url: 'https://your-domain.com/api/login', method: 'POST', data: { code: res.code }, success(res) { console.log(res.data); } });
✅ 八、安全加固(生产必备)
| 项目 | 操作 |
|---|---|
| 防火墙 | sudo ufw allow OpenSSH && sudo ufw allow 'Nginx Full' && sudo ufw enable |
| 禁用 root SSH | sudo vim /etc/ssh/sshd_config → PermitRootLogin no → sudo systemctl restart sshd |
| 定期更新 | sudo apt update && sudo apt upgrade -y(可设为自动) |
| 数据库安全 | 若自建 MySQL,绑定 127.0.0.1,禁用远程 root,创建专用账号 |
| PM2 日志轮转 | pm2 install pm2-logrotate |
✅ 九、排错常用命令
# 查看 Node 进程是否运行
pm2 status
# 查看实时日志
pm2 logs miniprogram-api
# 查看 Nginx 错误日志
sudo tail -f /var/log/nginx/miniprogram-api-error.log
# 检查端口占用(确认 3000 是否被监听)
sudo ss -tulnp | grep :3000
# 测试本地访问 Node(应返回 JSON)
curl http://127.0.0.1:3000/api/test
# 测试 Nginx X_X(应返回相同结果)
curl https://your-domain.com/api/test
✅ 十、进阶建议(按需)
- 🌐 负载均衡:流量大时,可用腾讯云 CLB + 多台轻量服务器
- 🗄️ 数据库:直接使用 腾讯云 CDB for MySQL(免运维、高可用)
- 📦 Docker 化:封装为 Docker 镜像,用
docker-compose管理(适合复杂架构) - 🔄 CI/CD:GitHub Actions / 腾讯云 CODING 自动部署(推送即上线)
- 📊 监控告警:接入 腾讯云可观测平台 或 Prometheus + Grafana
✅ 至此,你的小程序 Node.js 后端已在腾讯轻量服务器稳定、安全、HTTPS 地运行!
如需我帮你:
🔹 审查你的 server.js / package.json 配置
🔹 写一个最小可运行 demo(含 .env + Express + 微信登录逻辑)
🔹 生成自动化部署脚本(一键安装)
🔹 配置 MongoDB / MySQL 连接示例
欢迎随时贴出你的具体需求 👇
祝你开发顺利,小程序早日上线!🚀
云知识