微信小程序开发完成后,如何部署上线是许多开发者面临的第一个挑战。本文将详细介绍一个典型的微信小程序项目(前端 + SpringBoot 后端 + PostgreSQL 数据库)从服务器环境准备到最终发布上线的完整流程。
项目架构本文以 miniprogram-demo 项目为例,项目结构如下:
1234567891011miniprogram-demo/├── miniprogram/ # 微信小程序前端│ ├── app.js # 小程序入口│ ├── app.json # 小程序配置│ ├── pages/ # 页面目录│ └── utils/ # 工具类├── backend/ # SpringBoot 后端│ ├── src/│ └── pom.xml└── docs/ └── sql/ # 数据库初始化脚本
技术栈:
前端:微信小程序原生开发
后端:SpringBoot 2.7 + MyBatis-Plus
数据库:PostgreSQL
部署:Nginx + HTTPS
第一部分:服务器环境准备1. 确认服务器配置部署微信小程序需要以下环境:
Java 11+(推荐 JDK 17)
PostgreSQL 12+
Nginx(用于反向代理和 HTTPS)
已备案的域名(微信强制要求)
检查已安装的组件:
123java -versionpsql --versionnginx -v
2. 安装缺失组件Ubuntu/Debian 系统:
12sudo apt updatesudo apt install openjdk-17-jdk postgresql nginx -y
CentOS/RHEL 系统:
1sudo yum install java-17-openjdk postgresql-server nginx -y
第二部分:数据库初始化3. 创建数据库和用户登录 PostgreSQL:
1sudo -u postgres psql
执行以下 SQL 命令:
1234567891011-- 创建数据库用户CREATE USER demo WITH PASSWORD 'your_secure_password';-- 创建数据库CREATE DATABASE demo_db OWNER demo;-- 授权GRANT ALL PRIVILEGES ON DATABASE demo_db TO demo;-- 退出\q
4. 初始化数据库表结构项目使用了 Liquibase 进行数据库版本管理,启动应用时会自动创建表结构。如果需要手动初始化:
1psql -U demo -d demo_db -f docs/sql/init.sql
第三部分:后端部署5. 配置生产环境重要提示:生产环境的配置文件不要提交到 Git,避免泄露敏感信息。
在服务器上创建配置目录:
1mkdir -p /opt/demo/config
创建生产环境配置文件 /opt/demo/config/application.yml:
12345678910111213141516171819202122232425262728293031323334server: port: 8080spring: datasource: url: jdbc:postgresql://localhost:5432/demo_db username: demo password: your_secure_password driver-class-name: org.postgresql.Driver hikari: minimum-idle: 5 maximum-pool-size: 10 connection-timeout: 30000 liquibase: enabled: true change-log: classpath:db/changelog-master.xml drop-first: falsemybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml type-aliases-package: com.demo.entitywechat: appid: your_wechat_appid secret: your_wechat_secret code2session-url: https://api.weixin.qq.com/sns/jscode2sessionjwt: secret: generate_a_complex_random_secret_key_here expiration: 604800000 # 7天logging: level: com.demo: info
关键配置项说明:
wechat.appid 和 wechat.secret:在微信小程序后台获取
jwt.secret:生成一个复杂的随机密钥
生产环境日志级别改为 info,去掉调试输出
6. 编译打包在本地开发环境编译:
12cd backendmvn clean package -DskipTests
打包完成后,JAR 文件位于:backend/target/miniprogram-demo-1.0.0-SNAPSHOT.jar
7. 上传到服务器使用 scp 命令上传文件:
12345# 上传 JAR 包scp backend/target/miniprogram-demo-1.0.0-SNAPSHOT.jar user@server:/opt/demo/# 上传配置文件scp /opt/demo/config/application.yml user@server:/opt/demo/config/
8. 创建系统服务(推荐)为了让后端服务开机自启并支持崩溃自动重启,创建 systemd 服务:
1sudo vim /etc/systemd/system/demo.service
写入以下内容:
12345678910111213[Unit]Description=Demo Backend ServiceAfter=postgresql.service[Service]User=your_userWorkingDirectory=/opt/demoExecStart=/usr/bin/java -jar /opt/demo/miniprogram-demo-1.0.0-SNAPSHOT.jar --spring.config.location=/opt/demo/config/application.ymlRestart=alwaysRestartSec=10[Install]WantedBy=multi-user.target
启动服务:
1234sudo systemctl daemon-reloadsudo systemctl enable demo # 开机自启sudo systemctl start demo # 启动服务sudo systemctl status demo # 查看状态
常用管理命令:
123sudo systemctl stop demo # 停止服务sudo systemctl restart demo # 重启服务journalctl -u demo -f # 查看实时日志
第四部分:配置 HTTPS微信小程序强制要求后端接口必须使用 HTTPS,这一步至关重要。
9. 申请 SSL 证书方式一:使用 Let’s Encrypt(免费,推荐)
12345# 安装 certbotsudo apt install certbot python3-certbot-nginx# 申请证书并自动配置 Nginxsudo certbot --nginx -d your-domain.com
方式二:使用已有证书
如果已有 SSL 证书,将其放到服务器指定位置:
123sudo mkdir -p /etc/ssl/certssudo mkdir -p /etc/ssl/private# 将证书文件复制到上述目录
10. 配置 Nginx 反向代理创建 Nginx 配置文件:
1sudo vim /etc/nginx/sites-available/demo
写入以下内容:
123456789101112131415161718192021222324252627282930313233# HTTPS 配置server { listen 443 ssl; server_name your-domain.com; ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; # SSL 优化 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8080; 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_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; }}# HTTP 重定向到 HTTPSserver { listen 80; server_name your-domain.com; return 301 https://$host$request_uri;}
启用配置并重启 Nginx:
123sudo ln -s /etc/nginx/sites-available/demo /etc/nginx/sites-enabled/sudo nginx -t # 测试配置是否正确sudo systemctl reload nginx
11. 验证后端接口1curl https://your-domain.com/api/user/profile
应该返回 JSON 响应(未登录会返回错误码,说明后端正常运行)。
第五部分:微信小程序配置12. 修改小程序后端地址编辑 miniprogram/app.js,将 baseUrl 改为生产环境域名:
12345678App({ globalData: { baseUrl: 'https://your-domain.com', // 改为 HTTPS 域名 token: '', userInfo: null }, // ... 其他代码});
注意:小程序正式环境必须使用 HTTPS,不能使用 HTTP 或 IP 地址。
13. 配置服务器域名登录 微信公众平台,进入:
开发管理 → 开发设置 → 服务器域名
在 request 合法域名 中添加:https://your-domain.com
重要提示:
域名必须已完成 ICP 备案
域名必须支持 HTTPS
配置后需要等待几分钟生效
14. 获取微信小程序 AppID 和 Secret在微信公众平台:
开发管理 → 开发设置 → 开发者ID
复制 AppID 和 AppSecret(Secret 只显示一次,务必保存)
将这两个值填入后端配置文件:
123wechat: appid: wx1234567890abcdef secret: your_appsecret_here
然后重启后端服务:
1sudo systemctl restart demo
第六部分:小程序发布15. 使用微信开发者工具上传
打开微信开发者工具
下载地址:微信开发者工具
导入项目
选择 miniprogram/ 目录
填入正确的 AppID
本地测试
点击「编译」按钮
在模拟器中测试所有功能
使用「真机调试」在手机上测试
上传代码
点击右上角「上传」按钮
填写版本号(如 1.0.0)
填写版本说明
16. 提交审核并发布登录微信公众平台:
进入 版本管理
找到刚上传的「开发版本」
点击「提交审核」
填写审核说明(功能介绍、测试账号等)
等待审核(通常 1-3 个工作日)
审核通过后,点击「发布」
第七部分:验证清单发布前请逐项检查:
PostgreSQL 正常运行,数据库可连接
后端服务启动正常(systemctl status demo)
HTTPS 可访问(curl https://your-domain.com/)
微信后台已配置合法域名
小程序 baseUrl 已改为 HTTPS 域名
AppID 和 Secret 已正确填写
本地测试功能正常
真机测试功能正常
小程序已上传、审核通过并发布
常见问题解答Q1: 小程序真机调试报 “不在以下 request 合法域名列表中”解决方法:登录微信公众平台 → 开发管理 → 开发设置 → 服务器域名,添加你的域名。配置后需要等待几分钟生效。
Q2: 后端启动报数据库连接失败排查步骤:
检查 PostgreSQL 是否运行:sudo systemctl status postgresql
检查数据库用户名密码是否正确
检查数据库是否已创建:psql -U postgres -l | grep demo_db
检查数据库连接 URL 是否正确
Q3: 小程序调用 wx.getUserProfile 报错原因:该接口在 2022 年后已被废弃。
解决方法:改用「头像昵称填写组件」,参考 微信官方文档。
Q4: 域名没有备案解决方案:
通过域名服务商提交备案申请
备案审核通常需要 7-20 个工作日
备案期间可以先使用测试号进行开发调试
Q5: 服务器内存不足(2GB 小型服务器)优化建议:
PostgreSQL + Java 大约需要 800MB-1.2GB 内存
配置 Swap 空间防止 OOM:12345sudo fallocate -l 2G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfileecho '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
调整 JVM 内存参数:在启动命令中添加 -Xmx512m -Xms256m
Q6: HTTPS 证书过期解决方法:Let’s Encrypt 证书有效期为 90 天,需要定期续期:
12sudo certbot renew --dry-run # 测试续期sudo certbot renew # 实际续期
建议设置定时任务自动续期:
123sudo crontab -e# 添加以下行(每天凌晨 3 点检查续期)0 3 * * * certbot renew --quiet && systemctl reload nginx
总结微信小程序的部署涉及多个环节:服务器环境搭建、数据库配置、后端部署、HTTPS 配置、小程序配置和最终发布。整个流程看似复杂,但只要按步骤逐一完成,就能顺利上线。
关键要点:
域名必须已备案且支持 HTTPS
生产环境配置要独立管理,不要提交到 Git
使用 systemd 管理服务,实现开机自启和崩溃重启
小程序发布前务必进行充分的真机测试
定期续期 SSL 证书,确保服务稳定
希望本文能帮助你顺利完成微信小程序的部署上线!如果遇到问题,欢迎在评论区交流讨论。
相关文章推荐:
Spring Security 方法级权限控制详解
PostgreSQL 外部表性能优化指南
MAT JVM 内存分析工具使用教程