Compare commits
2 Commits
b95fcdeb8c
...
dfcfb477c5
| Author | SHA1 | Date | |
|---|---|---|---|
| dfcfb477c5 | |||
| b69dde0f7e |
@@ -288,6 +288,20 @@ echo "构建 web 前端 -> deploy/web/dist ..."
|
||||
run_sudo docker run --rm -v "$ROOT/web:/app" -v "$ROOT/deploy/web/dist:/out" -w /app \
|
||||
"${REGISTRY_MIRROR}node:20-alpine" sh -c "rm -rf /out/* 2>/dev/null; (npm ci --legacy-peer-deps 2>/dev/null || npm install --legacy-peer-deps) && npm run build && cp -r dist/. /out/"
|
||||
|
||||
# 官网访问的是 Nginx 根目录 deploy/web/dist,不是源码 web/;必须把 /promotion/ 静态资源拷进 dist,否则 social、logo 等一律 404
|
||||
echo "同步 web/promotion -> deploy/web/dist/promotion(排除 .mov,大视频请走后台 API)..."
|
||||
mkdir -p "$ROOT/deploy/web/dist/promotion"
|
||||
if command -v rsync >/dev/null 2>&1; then
|
||||
rsync -a --exclude='*.mov' --exclude='*.MOV' --exclude='_pptx_extract/' \
|
||||
"$ROOT/web/promotion/" "$ROOT/deploy/web/dist/promotion/"
|
||||
else
|
||||
mkdir -p "$ROOT/deploy/web/dist/promotion/social"
|
||||
cp -a "$ROOT/web/promotion/social/." "$ROOT/deploy/web/dist/promotion/social/" 2>/dev/null || true
|
||||
[ -f "$ROOT/web/promotion/logo.png" ] && cp -a "$ROOT/web/promotion/logo.png" "$ROOT/deploy/web/dist/promotion/" || true
|
||||
[ -f "$ROOT/web/promotion/index.html" ] && cp -a "$ROOT/web/promotion/index.html" "$ROOT/deploy/web/dist/promotion/" || true
|
||||
echo "提示: 未检测到 rsync,仅复制了 social/logo 等;完整 promotion 请安装 rsync 后重跑本脚本。" >&2
|
||||
fi
|
||||
|
||||
echo "构建 admin 前端 -> deploy/admin/dist ..."
|
||||
# admin 的 vite 别名 @yh-web -> ../web/src,须挂载项目根,否则容器内无 web 目录会报 BlockRenderer.vue ENOENT
|
||||
run_sudo docker run --rm -v "$ROOT:/repo" -v "$ROOT/deploy/admin/dist:/out" -w /repo/admin \
|
||||
|
||||
@@ -9,7 +9,15 @@
|
||||
|
||||
## 生产部署
|
||||
|
||||
1. **前端构建产物**(`dist/`)不包含本目录。除视频外请把需要的素材 **复制** 到站点根下 `promotion/`(如 `social/`、宣传册相关),或通过 Nginx alias。**视频**推荐仅通过后台上传到 API 存储目录,无需再拷 `.mov` 到静态服务器。
|
||||
1. **关键**:线上 Docker/Nginx 的文档根是 **`deploy/web/dist/`**,浏览器请求 `https://域名/promotion/social/xxx.png` 实际读的是 **`deploy/web/dist/promotion/social/xxx.png`**。仅把文件放在源码 **`web/promotion/`**(例如 `/www/yh_web/web/promotion/`)**不会出现**,必须同步进 `dist`(`pull-and-restart.sh` 在 `npm run build` 后会自动 `rsync web/promotion` → `deploy/web/dist/promotion`,并排除 `.mov`)。
|
||||
2. **权限**:若手动拷贝,目录建议 `755`、文件至少 `644`,避免 `root` 拥有且 `640` 导致 Nginx(非 root 用户)读不到。
|
||||
3. **视频**:推荐 **后台上传** 到 `data/uploads/.../promotion/`,由 `/api/web/sites/.../promotion-media/` 提供;勿只放在源码目录指望自动对外访问。
|
||||
|
||||
---
|
||||
|
||||
(以下为原 Nginx alias 说明,可与上面 dist 同步二选一)
|
||||
|
||||
1. **前端构建产物**(`dist/`)默认不含本目录时,除脚本自动同步外,也可把素材 **复制** 到站点根下 `promotion/`,或通过 Nginx alias。**视频**推荐仅通过后台上传到 API 存储目录。
|
||||
2. 或使用 Nginx:
|
||||
|
||||
```nginx
|
||||
|
||||
@@ -213,7 +213,7 @@
|
||||
<section class="video-section" id="videos">
|
||||
<div class="section-title">
|
||||
<h2>产品视频</h2>
|
||||
<p>视频由后台上传至 <code class="social-code">promotion/视频发布/</code>,需勾选「保留原文件名」;未上传时本地开发可走 <code class="social-code">/promotion/…</code></p>
|
||||
<p>以下为产品介绍视频,点击即可播放</p>
|
||||
</div>
|
||||
<div class="video-container">
|
||||
<div class="video-wrapper">
|
||||
|
||||
Reference in New Issue
Block a user