环宇版 · 部署指南文档
环宇版部署指南
Section titled “环宇版部署指南”覆盖 Linux 生产环境的服务器准备、Docker 容器化、Nginx 反向代理和 SSL。SaaS 单商户版:Docker 部署后端与中间件,Nginx 按租户/端域名做反代和 SSL。推荐全程 Docker。文中域名、IP、密码均为示例,上线前必须替换。
1. 生产环境组件
Section titled “1. 生产环境组件”| 组件 | 版本 |
|---|---|
| JDK(镜像内) | 17 |
| MySQL | 8.0 |
| Redis | 5.0+ |
| Elasticsearch | 7.x |
| XXL-JOB | 2.4.1 |
| Docker / Compose | 当前稳定版 |
先在开发机把后端打好包,再放到生产机。服务器需已安装 docker 与 docker compose。
2. 部署目录
Section titled “2. 部署目录”mall4j-shop├─ mysql/initdb # SaaS 初始化 SQL├─ mysql/my.cnf├─ mysql/data # 数据卷,禁止删除├─ yami-shop-api # 用户端 jar├─ yami-shop-multishop # 商家端 jar├─ yami-shop-admin # 平台端 jar(默认 8090)├─ nginx/conf.d # 平台、商家、H5、PC、门店├─ nginx/html / ssl└─ docker-compose.yml
放入什么文件
Section titled “放入什么文件”- MySQL:将
mall4j-saas仓库db中编号脚本拷到mysql/initdb。Compose 首次启动会自动导入。 - Java:
mvn clean package -DskipTests后放入三个 jar(api / multishop / admin)。 - Nginx:
conf.d放站点配置;html放各端 dist;ssl放证书。租户自定义域名只需增加server_name,upstream 不变。
Compose 注入数据源与 Redis(优先于 yml):
environment: - MYSQL_HOST=mall4j-mysql - MYSQL_PORT=3306 - MYSQL_USERNAME=root - MYSQL_PASSWORD=<生产密码> - REDIS_HOST=mall4j-redis - REDIS_PORT=6379 - REDIS_PASSWORD=<生产密码> - ELASTIC_ADDRESS=http://mall4j-elasticsearch:9200非 Docker 时改 application-prod.yml。mysql/data 禁止删除。租户域名不要用文档示例。
3. 启动容器
Section titled “3. 启动容器”cd mall4j-shopdocker compose up -d --build
只把 80、443 映射到公网。中间件端口不暴露。上线前全局搜索模板密码并全部替换。
4. Nginx 反向代理与 SSL
Section titled “4. Nginx 反向代理与 SSL”每个端一个 server:80 跳 443,证书在 nginx/ssl。静态资源进 html/<端>;后台 /apis rewrite 后反代到商家或平台 jar。H5 必须 HTTPS。门店端 mall4s 同样走独立站点 + 证书。屏蔽 swagger doc.html。
server { listen 80; server_name saas-mini-multishop.example.com; location / { return 301 https://$host$request_uri; }}server { listen 443 ssl http2; server_name saas-mini-multishop.example.com; ssl_certificate ssl/your-cert.pem; ssl_certificate_key ssl/your-cert.key; ssl_protocols TLSv1.2 TLSv1.3;
location / { add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; proxy_pass http://mall4j-saas-vs; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location /apis { rewrite ^/apis/(.*)$ /$1 break; proxy_pass http://mall4j-saas-multishop:8113; proxy_cookie_path / "/; httponly; secure; SameSite=Lax"; } location /apis/doc.html { return 404; }}H5 / PC 用 root + try_files $uri $uri/ /;。Docker 中 html 对应 ./nginx/html:/usr/share/nginx/html。
5. 前端产物
Section titled “5. 前端产物”各仓 .env.production 指向 HTTPS 网关/API 域名后构建,dist 拷入对应 html 目录。小程序 request 合法域名同步更新。
6. 不使用 Docker 时
Section titled “6. 不使用 Docker 时”不推荐。若必须裸 jar,分别启动 api / multishop / admin,-Dspring.profiles.active=prod。Nginx proxy_pass 改为内网 IP;XXL-JOB 单独部署。