在轻量服务器上搭建微信小程序的 Node.js 后端是一个常见且实用的开发需求。以下是详细的步骤指南,帮助你从零开始完成部署。
一、准备工作
1. 购买并配置轻量服务器
- 推荐使用腾讯云轻量应用服务器(Lighthouse)、阿里云轻量服务器等。
- 操作系统建议选择 Ubuntu 20.04/22.04 LTS 或 CentOS 7+。
- 确保开放以下端口:
22(SSH)80(HTTP)443(HTTPS)3000或其他自定义端口(Node.js 应用)
2. 获取服务器访问权限
通过 SSH 登录服务器:
ssh root@你的服务器IP
二、安装 Node.js 和 npm
1. 更新系统包
sudo apt update && sudo apt upgrade -y
2. 安装 Node.js(推荐使用 nvm)
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 重新加载 shell 配置
source ~/.bashrc
# 安装最新长期支持版 Node.js(如 v18.x)
nvm install 18
nvm use 18
验证安装:
node -v
npm -v
三、创建 Node.js 后端项目
1. 创建项目目录
mkdir wechat-backend
cd wechat-backend
npm init -y
2. 安装依赖
npm install express cors dotenv mysql2 axios
npm install --save-dev nodemon
常用库说明:
express: Web 框架cors: 处理跨域mysql2: 连接数据库(可替换为 MongoDB、PostgreSQL 等)axios: 发送 HTTP 请求(用于微信 API)nodemon: 开发时热重载
3. 编写简单服务示例
创建 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/user', (req, res) => {
res.json({ message: 'Hello from WeChat Mini Program Backend!', time: new Date() });
});
// 微信登录接口示例(需调用微信 API)
app.post('/api/login', async (req, res) => {
const { code } = req.body;
const appId = process.env.WX_APPID;
const appSecret = process.env.WX_SECRET;
try {
const tokenUrl = `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${appSecret}&js_code=${code}&grant_type=authorization_code`;
const response = await require('axios').get(tokenUrl);
res.json(response.data);
} catch (error) {
res.status(500).json({ error: 'Failed to get session key' });
}
});
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
4. 创建 .env 文件(存储敏感信息)
WX_APPID=your-wechat-appid
WX_SECRET=your-wechat-app-secret
PORT=3000
⚠️ 注意:
.env文件不要提交到 Git。
四、运行 Node.js 应用
1. 开发模式(带热重载)
npx nodemon app.js
2. 生产环境运行(使用 PM2)
安装 PM2 进程管理器:
npm install -g pm2
pm2 start app.js --name "wechat-api"
pm2 save
pm2 startup # 设置开机自启
常用命令:
pm2 status
pm2 logs
pm2 restart wechat-api
五、配置反向X_X(Nginx)
1. 安装 Nginx
sudo apt install nginx -y
2. 配置站点(/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
✅ 小程序请求域名必须备案并支持 HTTPS(后续可加 SSL)。
六、配置 HTTPS(Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
Certbot 会自动修改 Nginx 配置启用 HTTPS。
七、小程序端调用示例(wx.request)
在微信开发者工具中:
wx.request({
url: 'https://your-domain.com/api/user',
method: 'GET',
success(res) {
console.log(res.data);
}
});
// 登录示例
wx.login({
success(res) {
wx.request({
url: 'https://your-domain.com/api/login',
method: 'POST',
data: { code: res.code },
success(loginRes) {
console.log(loginRes.data); // openid, session_key
}
});
}
});
八、安全与优化建议
- 域名备案:国内服务器需域名备案才能网络访问。
- 防火墙设置:确保云平台安全组开放 80/443 端口。
- 环境变量保护:不要硬编码 AppID/Secret。
- 日志监控:使用
pm2 logs或结合 ELK。 - 数据库连接:生产环境建议使用云数据库(如腾讯云 CDB)。
总结
✅ 你已完成:
- 在轻量服务器上部署 Node.js
- 搭建 Express 后端服务
- 配置 Nginx 反向X_X + HTTPS
- 实现微信登录接口
- 小程序可安全调用后端 API
如有需要,我可以提供完整的 GitHub 项目模板或 Docker 部署方案。欢迎继续提问!
云服务器