在腾讯云轻量应用服务器(Lighthouse)上部署微信小游戏后端,核心逻辑其实就三步:环境准备、代码运行、网络打通。
很多新手容易踩的坑在于混淆了“开发环境”和“生产环境”,或者搞不定域名备案和HTTPS证书。下面我把流程拆解得尽量细一点,按实际操作顺序来。
1. 前置条件确认(别跳过这步)
微信小游戏后端强制要求使用 HTTPS 协议,且域名必须经过 ICP 备案。如果你连这个都没搞定,后面代码写得再好也跑不通。
- 域名:确保你的域名已经在腾讯云完成备案。
- 服务器选择:轻量应用服务器非常适合个人开发者或小团队。建议直接购买带 LNMP(Linux+Nginx+MySQL+PHP/Python)或 LAMP 镜像的应用,这样省去了手动安装依赖的痛苦。如果追求性能和控制权,可以选纯净 CentOS 或 Ubuntu 镜像,自己装环境。
- 内存:小游戏后端通常不需要超大内存,2GB 起步足够支撑几百人同时在线的逻辑处理。
2. 环境搭建(以 Node.js + Express 为例)
目前主流的小游戏后端多用 Node.js、Go 或 Java。这里以 Node.js 为例,因为它生态丰富,社区教程多。
A. 登录服务器
通过 SSH 连接到你的轻量应用服务器。
B. 安装基础环境
如果使用官方 LNMP 镜像,Nginx 和 MySQL 已经装好。你只需要装 Node.js。
# 以 Ubuntu 为例
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
如果是 CentOS,可以用 yum 或者直接使用 nvm 管理版本。
C. 初始化项目
在你的服务器上创建一个目录,比如 /home/game_backend,然后初始化项目:
mkdir game_backend
cd game_backend
npm init -y
npm install express body-parser mysql2 cors
这里安装了 express(Web框架)、mysql2(数据库连接)、cors(处理跨域问题,虽然小程序请求不走浏览器,但调试时很有用)。
3. 编写后端代码
写一个简单的 API 接口,模拟获取用户数据或排行榜。
创建 index.js:
const express = require('express');
const app = express();
const port = 3000;
// 中间件解析 JSON
app.use(express.json());
// 模拟数据库查询
app.get('/api/userInfo', (req, res) => {
// 实际生产中请替换为真实的 DB 查询
res.json({
code: 0,
data: {
nickname: 'TestUser',
score: 100
}
});
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
启动服务测试一下:node index.js,然后用本地浏览器访问 http://127.0.0.1:3000/api/userInfo 看是否有返回。
4. Nginx 反向XX与 HTTPS 配置(关键步骤)
微信小程序后台配置服务器域名时,只允许填写域名,不允许填 IP 和端口。所以我们需要用 Nginx 做反向XX,把 80/443 端口的流量转发到你 Node.js 运行的 3000 端口。
A. 修改 Nginx 配置
找到 Nginx 配置文件(通常在 /etc/nginx/conf.d/default.conf 或 /usr/local/nginx/conf/nginx.conf,取决于你的镜像类型)。
添加如下 server 块:
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
B. 配置 SSL 证书
微信强制 HTTPS。你需要在腾讯云控制台申请一个免费的 DV SSL 证书(或者上传自己的证书)。
下载证书后,将 .pem 和 .key 文件上传到服务器的某个目录,比如 /etc/nginx/ssl/。
修改 Nginx 配置,监听 443 端口并启用 SSL:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/nginx/ssl/yourdomain.pem;
ssl_certificate_key /etc/nginx/ssl/yourdomain.key;
# 建议开启 HSTS 和安全相关头
add_header Strict-Transport-Security "max-age=31536000" always;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
注意:记得在防火墙规则中放行 80 和 443 端口。轻量应用服务器控制台里有一个“安全组”或“防火墙”设置,务必检查。
重启 Nginx:
nginx -t # 检查配置语法
systemctl restart nginx
5. 微信开发者工具配置
打开微信开发者工具,进入“详情” -> “本地设置”,勾选“不校验合法域名…”。这一步是为了方便开发调试,上线前必须取消勾选。
在代码中,将请求地址改为你的域名:
wx.request({
url: 'https://yourdomain.com/api/userInfo',
method: 'GET',
success: function(res) {
console.log(res.data);
}
})
6. 后台配置服务器域名
登录 微信公众平台:
- 进入“开发” -> “开发管理” -> “开发设置”。
- 找到“服务器域名”部分。
- 在“request 合法域名”中,填入
https://yourdomain.com。 - 保存并提交审核(通常即时生效)。
常见问题排查
- CORS 错误:如果你在本地调试时发现跨域问题,确保 Node.js 代码中引入了
cors模块,并在 Nginx 层面也配置了正确的Access-Control-Allow-Origin头。 - 502 Bad Gateway:通常是 Nginx 无法连接到后端的 3000 端口。检查 Node.js 服务是否正在运行(可以用
pm2 start index.js来守护进程,防止服务挂掉)。 - SSL 证书报错:确保证书文件路径正确,且权限允许 Nginx 读取。
- 数据库连接失败:如果在轻量应用服务器上装了 MySQL,确保防火墙放行了 3306 端口(或者只允许 localhost 访问,更安全),并且代码中的数据库账号密码正确。
总结
在轻量应用服务器上部署小游戏后端,本质上就是 Node.js 提供业务逻辑 + Nginx 处理 HTTPS 和反向XX + MySQL 存储数据。整个过程不难,难点在于对网络配置和证书管理的熟悉程度。一旦跑通一次,后续维护会非常轻松。
如果需要更高并发或更复杂的微服务架构,再考虑迁移到腾讯云的 CVM 容器服务或 Serverless SCF,但对于大多数小游戏初期阶段,轻量应用服务器完全够用且性价比极高。
云技术博客