小程序迁移到服务器

微信小程序云函数、云数据库、云存储三大核心模块,全部迁移到阿里云服务器

  • 云数据库 → MongoDB 数据库**
  • 云函数 → Node.js + Express 服务(微信云函数本身就是 Node.js 语法编写,直接迁移改造即可)
  • 云存储 → 阿里云 OSS 对象存储(推荐)/ 宝塔本地存储(备选)(阿里云 OSS 完美适配小程序,稳定无容量限制;本地存储适合小体量项目)
  • 服务部署 → 宝塔面板一键管理 Node 服务 + MongoDB +Nginx+SSL,全程可视化操作,无需手动敲 Linux 命令

前置准备

安装好宝塔 Linux

1.阿里云服务器「安全组」放行端口(重中之重)

阿里云控制台 → 你的服务器 → 防火墙 → 配置规则 → 放行以下端口(宝塔 + 业务必须)

  • 宝塔面板端口:默认8888(你的面板端口如果改过就放行对应端口)
  • HTTP/HTTPS:80443(小程序强制 HTTPS,必须放行)
  • Node 服务端口:3000(默认,可自定义)
  • MongoDB 端口:27017(数据库默认端口)
  • 规则方向:入方向,授权对象:0.0.0.0/0

2. 宝塔面板「安全」放行端口

宝塔面板 → 安全 → 防火墙 → 放行上述所有端口(阿里云安全组 + 宝塔防火墙双重放行,缺一不可,90% 的连接失败都是这个原因)

3. 宝塔一键安装核心运行环境

宝塔面板 → 软件商店 → 搜索安装以下软件(全部一键安装,无需配置)

  • 数据库:MongoDB 4.4/5.0(推荐 4.4,和微信云数据库内核版本一致,兼容性满分)
  • 后端运行:Node.js 16.x(安装 PM2 管理器(必装,自带 Node.js 环境))
  • 反向代理:Nginx 1.20+(必装,做域名反向代理 + HTTPS 配置)
  • 服务守护:PM2管理器 5.5(必装,守护 Node 服务,防止服务挂掉,自动重启)

一、微信云数据库 → 阿里云 MongoDB 迁移

微信小程序云开发的数据库,底层就是 MongoDB,你数据库里的集合、文档、索引、查询语法完全一致,迁移后后端代码无需修改数据库语法,这是本次迁移最省心的模块,没有之一!

1.导出微信云数据库所有数据

  1. 打开微信开发者工具 → 打开你的小程序项目 → 点击左侧【云开发】→ 进入云开发控制台
  2. 点击左侧【数据库】→ 会看到你所有的集合(表),逐个集合导出
  3. 导出方式:选中集合 → 右上角【更多】→ 【导出】→ 选择导出格式为 JSON → 下载到本地电脑

2.阿里云服务器 原生安装 MongoDB(稳定版,适配微信云,复制命令即可)

前置命令:切换到 root 超级用户(获取最高权限)

1
su -

命令 1:配置 MongoDB 官方 yum 源

1
2
3
4
5
6
7
8
cat > /etc/yum.repos.d/mongodb-org-4.4.repo << 'EOF'
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF

命令 2:安装 MongoDB(一键安装,自动配置环境变量)

1
2
3
4
5
6
7
8
cat > /etc/yum.repos.d/mongodb-org-4.4.repo << 'EOF'
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF
1
2
3
4
5
6
# 清理缓存
yum clean all
# 生成新缓存
yum makecache
# 重新安装MongoDB客户端工具
yum install -y mongodb-org-shell

命令 3:一键生成完整的mongod.conf配置文件

cat > /etc/mongod.conf << ‘EOF’ # mongod.conf 完整配置,已包含所有你需要的核心设置 storage: dbPath: /data/mongodb journal: enabled: true systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log net: port: 27017 bindIp: 0.0.0.0 # 允许所有IP远程访问,已改好 security: authorization: enabled # 开启用户名密码认证,已改好 processManagement: fork: true pidFilePath: /var/run/mongodb/mongod.pid EOF

验证配置文件是否创建成功

1
cat /etc/mongod.conf

命令 4:创建 MongoDB 数据 / 日志目录(授权最高权限,避免启动报错)

mkdir -p /var/run/mongodb && chmod -R 777 /data/mongodb /var/log/mongodb /var/run/mongodb

命令 5:创建 MongoDB 的 systemd 服务文件(完整配置,一键生成)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cat > /etc/systemd/system/mongod.service << 'EOF'
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target

[Service]
User=mongod
Group=mongod
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
PIDFile=/var/run/mongodb/mongod.pid
Restart=always
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target
EOF

命令 6:重新加载 systemd 配置(让系统识别新服务文件)

1
systemctl daemon-reload

命令7:创建mongod用户和组

1
2
3
4
# 创建mongod组
groupadd mongod
# 创建mongod用户(仅用于运行服务,无登录权限)
useradd -r -g mongod -s /sbin/nologin mongod

命令8:修复所有 MongoDB 相关目录的权限

1
2
3
4
# 把数据、日志、pid目录的所属者改为mongod:mongod
chown -R mongod:mongod /data/mongodb /var/log/mongodb /var/run/mongodb
# 确保目录权限为755(必要的读写执行权限)
chmod -R 755 /data/mongodb /var/log/mongodb /var/run/mongodb

命令9:

1
2
3
4
# 重启服务
systemctl restart mongod
# 查看运行状态(出现绿色active(running)即为成功)
systemctl status mongod

✅正常启动后,命令行会显示 active (running) 绿色状态,MongoDB 服务就彻底跑起来了!

接下来:继续创建 MongoDB 数据库 + 用户名 + 密码(和之前流程一致,复制执行)

  1. 进入 MongoDB 命令行客户端

    1
    mongo
  2. 创建你的数据库(和微信云一致:小锋单证生成工具)

1
use 小锋单证生成工具
  1. 创建超级权限用户 + 密码(替换成你自己的用户名和密码,记好!)

    1
    db.createUser({user: "yzf522", pwd: "Qq2107127731", roles: [{role: "dbOwner", db: "小锋单证生成工具"}]})

    ✅ 执行成功会提示:Successfully added user,用户创建完成!

  2. 退出 MongoDB 客户端

    1
    exit

3.下载 MongoDB Compass

打开 MongoDB Compass 后,在连接框中输入:

1
mongodb://yzf522:密码@你的阿里云公网IP:27017/小锋单证生成工具

4.导入数据

步骤 1:创建与微信云一致的「集合」(对应微信云的 “集合”)

  1. 点击界面右上角的 「Create collection」按钮
  2. 在弹出的输入框中,填写「集合名」(必须和微信云导出的集合名完全一致);
  3. 点击「Create」,完成集合创建。

步骤 2:导入微信云的 JSON 数据(原生格式完美兼容)

  1. 点击刚创建的集合名称,进入集合详情页;
  2. 选择 「Import File」,在本地文件中找到你从微信云导出的 JSON 文件;
  3. 点击「Import」,等待几秒后,微信云的所有数据就会完整导入到该集合中(无需修改任何内容,布尔值、中文、表情等都能完美保留)。

二、微信云函数 → 阿里云 Node.js (Express) 服务 迁移

微信云函数本质:就是一个个独立的 Node.js 异步函数,语法都是 exports.main = async (event, context) => {},入参event是前端传参,context里包含用户 openid 等信息。

迁移本质:把这些独立的云函数,整合到一个 Node.js+Express 项目中,改造成 HTTP 接口,原来调用云函数的逻辑,变成小程序调用后端接口,90% 的业务代码可以直接复用,只需要做 3 处小改造!

核心前提

微信云函数里的所有代码(业务逻辑、数据库查询、数据处理)都是 Node.js 语法,完全不用重写,只是修改「运行载体」和「数据库连接方式」。

步骤 1:本地搭建 Node.js+Express 项目(本地开发调试)

  1. 本地电脑新建项目文件夹(比如wxapp-server),执行初始化命令:
1
2
npm init -y
npm install express mongoose cors body-parser jsonwebtoken --save
  • express:轻量后端框架,快速搭建接口
  • mongoose:MongoDB 的 Node.js 驱动,和微信云数据库语法一致
  • cors:解决跨域问题
  • body-parser:解析前端传参
  • jsonwebtoken:小程序用户登录鉴权(替代微信云的 openid 自动获取)

0