星链版 · 部署指南文档
星链版部署指南
Section titled “星链版部署指南”覆盖 Linux 生产环境的服务器准备、Docker 容器化、Nginx 反向代理和 SSL。推荐全程 Docker,避免本机 JDK 版本不一致。文中域名、IP、密码均为示例,上线前必须替换。
1. 生产环境组件
Section titled “1. 生产环境组件”| 组件 | 版本 |
|---|---|
| JDK(镜像内) | 17 |
| MySQL | 8.0 |
| Redis | 5.0+ |
| Elasticsearch | 7.x |
| XXL-JOB | 3.0.0 |
| Docker / Compose | 当前稳定版 |
先在开发机把后端打好包,再放到生产机。服务器需已安装 docker 与 docker compose。
2. 部署目录
Section titled “2. 部署目录”以模板目录 mall4j-shop(文档里也称 yami-shop)为根,上传到服务器后结构如下:
mall4j-shop├─ mysql/initdb # 初始化 SQL├─ mysql/my.cnf├─ mysql/data # 数据卷,禁止删除├─ yami-shop-api # 用户端 jar + Dockerfile├─ yami-shop-multishop # 商家端 jar├─ yami-shop-platform # 平台端 jar├─ nginx/conf.d # 各站点反代├─ nginx/html # 前端 dist(h5 / pc / vs / vp)├─ nginx/ssl # pem/crt + key├─ redis /└─ docker-compose.yml
放入什么文件
Section titled “放入什么文件”- MySQL:将后端仓库
db中0schema.sql、1mall4j_b2b2b.sql、2area.sql、3xxl_job.sql拷到mysql/initdb。Compose 首次启动会自动导入,不必手工进库。其余日期补丁只在升级时执行。 - Java:
mvn clean package -DskipTests后放入三个 jar:yami-shop-api/target/yami-shop-api-0.0.1-SNAPSHOT.jaryami-shop-multishop/target/yami-shop-multishop-0.0.1-SNAPSHOT.jaryami-shop-platform/target/yami-shop-platform-0.0.1-SNAPSHOT.jar
- Nginx:
conf.d放站点配置;html放下面对应前端构建产物;ssl放证书。 - Redis / ES:模板已带,一般不用额外交文件。
打包前改 Docker 环境变量(Compose 优先于 yml 文件),例如:
environment: - MYSQL_HOST=mall4j-mysql - MYSQL_PORT=3306 - MYSQL_DATABASE=mall4j_b2b2b - MYSQL_USERNAME=root - MYSQL_PASSWORD=<生产密码> - REDIS_HOST=mall4j-redis - REDIS_PORT=6379 - REDIS_PASSWORD=<生产密码> - ELASTIC_ADDRESS=http://mall4j-elasticsearch:9200 - WUKONGIM_ADDRESS=http://mall4j-wukongim:5001非 Docker 时改各模块 application-prod.yml 与 logback-prod.xml 的 PROJECT_PATH。
3. 启动容器
Section titled “3. 启动容器”cd mall4j-shopdocker compose up -d --build
只把 80、443 映射到公网。MySQL、Redis、ES、WuKongIM 管理端口不要暴露。上线前全局搜索模板密码 hn02le.34lkdLKD 并全部替换。
4. Nginx 反向代理与 SSL
Section titled “4. Nginx 反向代理与 SSL”每个前端一个 server_name。80 永久跳 443;443 开启 http2,证书放 nginx/ssl(容器内常挂载为 /ssl/)。
站点与反代关系(域名请改成自己的):
| conf | 域名示例 | 作用 |
|---|---|---|
b2b2b-api.conf |
b2b2b-api.mall4j.com |
反代用户端 jar :8112 |
b2b2b-multishop.conf |
b2b2b-multishop.mall4j.com |
商家后台静态 + /apis → :8113 |
b2b2b-platform.conf |
b2b2b-platform.mall4j.com |
平台后台静态 + /apis → 平台 jar |
b2b2b-h5.conf |
h5... |
uni-app H5,root html/h5,需 HTTPS 才能定位 |
b2b2b-pc.conf |
PC 商城 | root html/pc,history 模式 try_files |
b2b2b-im.conf / b2b2b-minio.conf / xxl-job.conf |
IM、对象存储、任务台 | 按模板启用 |
商家后台 HTTPS 示例:
server { listen 80; server_name b2b2b-multishop.mall4j.com; location / { return 301 https://$host$request_uri; }}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name b2b2b-multishop.mall4j.com;
ssl_certificate ssl/your-cert.pem; ssl_certificate_key ssl/your-cert.key; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_protocols TLSv1.2 TLSv1.3;
location / { add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; proxy_pass http://mall4j-b2b2b-vs; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
location /apis { rewrite ^/apis/(.*)$ /$1 break; proxy_pass http://mall4j-b2b2b-multishop:8113; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_cookie_path / "/; httponly; secure; SameSite=Lax"; }
location /apis/doc.html { return 404; }}用户端 API 只反代 Java,不托管静态页:
location / { proxy_pass http://127.0.0.1:8112; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;}H5 / PC 用 root + try_files $uri $uri/ /;,Docker 里物理目录对应 Compose 的 ./nginx/html:/usr/share/nginx/html。
5. 前端产物
Section titled “5. 前端产物”- uni-app:Node ≥ 18.12,推荐 20;
pnpm install后改.env.production的接口域名,发行 H5 到nginx/html/h5。 - PC / 商家后台 / 平台后台:改生产环境 API 后
pnpm build(或仓库脚本),dist 拷到html/pc、html/multishop、html/platform。 - 小程序不走 Nginx,在公众平台配置 request 合法域名(必须 HTTPS)。
6. 不使用 Docker 时
Section titled “6. 不使用 Docker 时”不推荐。若必须裸 jar:
mkdir -p /opt/projects/yami-b2b2b/logjava -jar -Xmx1024m -Xss256k -Dspring.profiles.active=prod \ /opt/projects/yami-b2b2b/yami-shop-api-0.0.1-SNAPSHOT.jar \ > /opt/projects/yami-b2b2b/log/api-console.log &# 商家端、平台端同样启动,内存可按 512M~1G 调整XXL-JOB 需另行部署。Nginx 的 proxy_pass 改为服务器内网 IP。