在轻量服务器上搭建微信小程序的 Node.js 后端是一个常见且实用的需求。以下是详细的步骤指南,适用于腾讯云、阿里云等平台的轻量应用服务器(如 1核2G 配置)。
✅ 一、准备工作
1. 购买并登录轻量服务器
- 推荐系统:Ubuntu 20.04 / 22.04 LTS
- 登录方式:SSH(使用终端或 PuTTY)
ssh root@你的服务器IP
✅ 二、安装 Node.js 和 npm
方法一:使用 nvm(推荐)
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 重新加载 shell 配置
source ~/.bashrc
# 安装最新稳定版 Node.js(如 v18.x)
nvm install 18
# 设置默认版本
nvm use 18
nvm alias default 18
验证安装:
node -v # 应输出 v18.x
npm -v # 应输出 8.x 或以上
✅ 三、创建项目目录并初始化 Node.js 项目
mkdir wechat-backend
cd wechat-backend
npm init -y
✅ 四、安装必要的依赖
npm install express cors dotenv axios mongoose
npm install --save-dev nodemon
express: Web 框架cors: 处理跨域请求(小程序需要)dotenv: 管理环境变量axios: 发送 HTTP 请求(用于微信接口)mongoose: MongoDB ORM(可选,用于数据库)nodemon: 开发时自动重启服务
✅ 五、编写基础后端代码
1. 创建 app.js
// app.js
const express = require('express');
const cors = require('cors');
require('dotenv').config();
const app = express();
const PORT = process.env.PORT || 3000;
app.use(cors());
app.use(express.json());
// 健康检查接口
app.get('/api/health', (req, res) => {
res.json({ message: 'Server is running!', time: new Date() });
});
// 示例:获取微信 openid(需配合前端 code)
app.post('/api/login', async (req, res) => {
const { code } = req.body;
const appId = process.env.WX_APPID;
const secret = process.env.WX_SECRET;
if (!code) {
return res.status(400).json({ error: 'Missing code' });
}
try {
const tokenUrl = `https://api.weixin.qq.com/sns/jscode2session`;
const params = `appid=${appId}&secret=${secret}&js_code=${code}&grant_type=authorization_code`;
const response = await require('axios').get(`${tokenUrl}?${params}`);
const data = response.data;
if (data.errcode) {
return res.status(400).json({ error: data.errmsg });
}
// 此处可保存 openid 到数据库
res.json({
openid: data.openid,
session_key: data.session_key,
unionid: data.unionid || null
});
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Failed to get session info' });
}
});
app.listen(PORT, '0.0.0.0', () => {
console.log(`Server running on http://0.0.0.0:${PORT}`);
});
✅ 六、配置环境变量
创建 .env 文件:
WX_APPID=your_appid_from_wechat_mp
WX_SECRET=your_app_secret
PORT=3000
⚠️ 注意:
.env不要提交到 Git,加到.gitignore
✅ 七、配置启动脚本(package.json)
修改 package.json 的 scripts:
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
}
✅ 八、使用 PM2 守护进程(生产环境必备)
npm install -g pm2
# 启动应用
pm2 start app.js --name "wechat-api"
# 设置开机自启
pm2 startup
pm2 save
常用命令:
pm2 logs # 查看日志
pm2 restart app # 重启
pm2 list # 查看状态
✅ 九、配置 Nginx 反向X_X(可选但推荐)
1. 安装 Nginx
sudo apt update
sudo apt install nginx -y
2. 配置站点(替换为你的域名或 IP)
sudo nano /etc/nginx/sites-available/wechat
内容:
server {
listen 80;
server_name your-domain.com; # 或服务器IP
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/wechat /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
小程序 request 域名填写:
http://your-domain.com或http://服务器IP
✅ 十、微信小程序端调用示例
在小程序中:
wx.login({
success: res => {
wx.request({
url: 'http://your-server-ip/api/login',
method: 'POST',
data: { code: res.code },
success: (res) => {
console.log('OpenID:', res.data.openid);
}
});
}
});
✅ 十一、安全建议
- 不要暴露敏感信息(如
WX_SECRET) - 使用 HTTPS(可通过 Let’s Encrypt 免费申请 SSL 证书)
- 配置防火墙(只开放 80、443 端口)
- 定期更新系统和软件包
✅ 总结
| 步骤 | 内容 |
|---|---|
| 1 | 登录轻量服务器 |
| 2 | 安装 Node.js |
| 3 | 初始化项目,安装依赖 |
| 4 | 编写 Express 后端逻辑 |
| 5 | 使用 PM2 守护进程 |
| 6 | 配置 Nginx 反向X_X |
| 7 | 小程序调用接口 |
如果你希望我提供一个完整的 GitHub 示例项目结构,也可以告诉我,我可以生成模板代码打包下载。
祝你部署顺利!🚀
CLOUD云枢