fix(nginx): add hololake-frontend→guanghulab root path migration, sandbox routes, and _shared dir
ZY-NGINX-ROOTFIX-2026-0325-001 · DEV-004 之之诊断 - deploy-to-server.yml: add hololake-frontend root path fix in Nginx migration - deploy-to-server.yml: add sandbox alias routes (DEV-004, DEV-005) via snippet - deploy-to-server.yml: auto-create /var/www/_shared directory - deploy-to-server.yml: add defensive root path verification - deploy/nginx/hololake.conf: add DEV-004, DEV-005 sandbox location blocks - data/nginx-rootfix-report-20260325.json: fix report Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com> Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/486292a1-798d-400e-ad49-660f3e64b6aa
This commit is contained in:
parent
3bcedfbd6a
commit
fc741b0864
|
|
@ -355,15 +355,34 @@ jobs:
|
||||||
# 一次性迁移:更新 root 路径(从旧的 status-board 子目录改为站点根目录)
|
# 一次性迁移:更新 root 路径(从旧的 status-board 子目录改为站点根目录)
|
||||||
if grep -q 'root.*guanghulab/status-board' /etc/nginx/sites-available/default 2>/dev/null || \
|
if grep -q 'root.*guanghulab/status-board' /etc/nginx/sites-available/default 2>/dev/null || \
|
||||||
grep -q 'root.*guanghulab/status-board' /etc/nginx/conf.d/*.conf 2>/dev/null; then
|
grep -q 'root.*guanghulab/status-board' /etc/nginx/conf.d/*.conf 2>/dev/null; then
|
||||||
echo '🔄 更新 Nginx root 路径...'
|
echo '🔄 更新 Nginx root 路径(status-board → 站点根)...'
|
||||||
sudo sed -i 's|root.*guanghulab/status-board[^;]*|root ${{ secrets.DEPLOY_PATH }}|g' \
|
sudo sed -i 's|root.*guanghulab/status-board[^;]*|root ${{ secrets.DEPLOY_PATH }}|g' \
|
||||||
/etc/nginx/sites-available/default 2>/dev/null || true
|
/etc/nginx/sites-available/default 2>/dev/null || true
|
||||||
sudo sed -i 's|root.*guanghulab/status-board[^;]*|root ${{ secrets.DEPLOY_PATH }}|g' \
|
sudo sed -i 's|root.*guanghulab/status-board[^;]*|root ${{ secrets.DEPLOY_PATH }}|g' \
|
||||||
/etc/nginx/conf.d/*.conf 2>/dev/null || true
|
/etc/nginx/conf.d/*.conf 2>/dev/null || true
|
||||||
NGINX_CHANGED=true
|
NGINX_CHANGED=true
|
||||||
echo '✅ Nginx root 路径已更新'
|
echo '✅ Nginx root 路径已更新(status-board 迁移)'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 一次性迁移:修正 root 路径(从旧残留 hololake-frontend 改为 guanghulab)
|
||||||
|
# 根因:ZY-NGINX-ROOTFIX-2026-0325-001 · DEV-004 之之诊断
|
||||||
|
if grep -q 'root.*/var/www/hololake-frontend' /etc/nginx/sites-available/default 2>/dev/null || \
|
||||||
|
grep -q 'root.*/var/www/hololake-frontend' /etc/nginx/conf.d/*.conf 2>/dev/null; then
|
||||||
|
echo '🔄 更新 Nginx root 路径(hololake-frontend → guanghulab)...'
|
||||||
|
sudo sed -i 's|root /var/www/hololake-frontend|root ${{ secrets.DEPLOY_PATH }}|g' \
|
||||||
|
/etc/nginx/sites-available/default 2>/dev/null || true
|
||||||
|
sudo sed -i 's|root /var/www/hololake-frontend|root ${{ secrets.DEPLOY_PATH }}|g' \
|
||||||
|
/etc/nginx/conf.d/*.conf 2>/dev/null || true
|
||||||
|
NGINX_CHANGED=true
|
||||||
|
echo '✅ Nginx root 路径已更新(hololake-frontend → guanghulab)'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 验证 root 路径确实正确(防御性检查)
|
||||||
|
if ! grep -q "root ${{ secrets.DEPLOY_PATH }}" /etc/nginx/conf.d/*.conf 2>/dev/null && \
|
||||||
|
! grep -q "root ${{ secrets.DEPLOY_PATH }}" /etc/nginx/sites-available/default 2>/dev/null; then
|
||||||
|
echo '⚠️ Nginx root 路径可能未正确设置,请手动检查'
|
||||||
else
|
else
|
||||||
echo '✅ Nginx root 路径正确,无需修改'
|
echo '✅ Nginx root 路径正确,指向 ${{ secrets.DEPLOY_PATH }}'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 配置 API + WebSocket 反向代理
|
# 配置 API + WebSocket 反向代理
|
||||||
|
|
@ -480,6 +499,49 @@ jobs:
|
||||||
echo '✅ API 反向代理已存在,无需修改'
|
echo '✅ API 反向代理已存在,无需修改'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 补建 _shared 目录(沙盒共享资源)
|
||||||
|
if [ ! -d /var/www/_shared ]; then
|
||||||
|
sudo mkdir -p /var/www/_shared
|
||||||
|
sudo chmod 755 /var/www/_shared
|
||||||
|
echo '✅ _shared 目录已创建'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 沙盒 alias 路由补充(DEV-004, DEV-005)
|
||||||
|
# 根因:ZY-NGINX-ROOTFIX-2026-0325-001 · 沙盒模块需通过域名访问
|
||||||
|
SANDBOX_CONF='/etc/nginx/snippets/guanghulab-sandbox.conf'
|
||||||
|
if [ ! -f \"\$SANDBOX_CONF\" ]; then
|
||||||
|
printf '%s\n' \
|
||||||
|
'# guanghulab 沙盒路由(由 CD 工作流自动生成)' \
|
||||||
|
'' \
|
||||||
|
'# DEV-004 之之 · 沙盒路由' \
|
||||||
|
'location /DEV-004/ {' \
|
||||||
|
' alias /var/www/DEV-004/;' \
|
||||||
|
' index index.html;' \
|
||||||
|
' try_files \$uri \$uri/ =404;' \
|
||||||
|
'}' \
|
||||||
|
'' \
|
||||||
|
'# DEV-005 小草莓 · 沙盒路由' \
|
||||||
|
'location /DEV-005/ {' \
|
||||||
|
' alias /var/www/DEV-005/;' \
|
||||||
|
' index index.html;' \
|
||||||
|
' try_files \$uri \$uri/ =404;' \
|
||||||
|
'}' \
|
||||||
|
| sudo tee \"\$SANDBOX_CONF\" > /dev/null
|
||||||
|
|
||||||
|
# 在 server 块中加入 sandbox include 指令
|
||||||
|
NGINX_MAIN=\$(grep -rl 'server_name' /etc/nginx/sites-available/ 2>/dev/null | head -1)
|
||||||
|
if [ -z \"\$NGINX_MAIN\" ]; then
|
||||||
|
NGINX_MAIN='/etc/nginx/sites-available/default'
|
||||||
|
fi
|
||||||
|
if [ -f \"\$NGINX_MAIN\" ] && ! grep -q 'guanghulab-sandbox' \"\$NGINX_MAIN\" 2>/dev/null; then
|
||||||
|
sudo sed -i '/server_name/a\\ include /etc/nginx/snippets/guanghulab-sandbox.conf;' \"\$NGINX_MAIN\" 2>/dev/null && \
|
||||||
|
NGINX_CHANGED=true && echo '✅ 沙盒路由已自动配置' || \
|
||||||
|
echo '⚠️ 沙盒路由自动配置失败,请手动添加'
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo '✅ 沙盒路由配置已存在'
|
||||||
|
fi
|
||||||
|
|
||||||
# 如果有变更,验证并重新加载 Nginx
|
# 如果有变更,验证并重新加载 Nginx
|
||||||
if [ \"\$NGINX_CHANGED\" = true ]; then
|
if [ \"\$NGINX_CHANGED\" = true ]; then
|
||||||
sudo nginx -t && sudo systemctl reload nginx && echo '✅ Nginx 配置已重新加载' || \
|
sudo nginx -t && sudo systemctl reload nginx && echo '✅ Nginx 配置已重新加载' || \
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"instruction_id": "ZY-NGINX-ROOTFIX-2026-0325-001",
|
||||||
|
"executed_at": "2026-03-25T05:04:00Z",
|
||||||
|
"executor": "AG-ZY-01 铸渊",
|
||||||
|
"root_cause": "Nginx root 指向 /var/www/hololake-frontend(旧残留),实际部署目录为 /var/www/guanghulab",
|
||||||
|
"diagnosis_by": "DEV-004 之之",
|
||||||
|
"fixes_applied": [
|
||||||
|
"Nginx root 路径修正: deploy-to-server.yml 增加 hololake-frontend → guanghulab 迁移逻辑",
|
||||||
|
"Nginx 模板更新: deploy/nginx/hololake.conf 添加 DEV-004, DEV-005 沙盒 alias 路由",
|
||||||
|
"沙盒 alias 路由补充: deploy-to-server.yml 自动生成 guanghulab-sandbox.conf snippet",
|
||||||
|
"API 反向代理确认: /api/, /api/ps/ 已在模板和工作流中配置",
|
||||||
|
"_shared 目录补建: deploy-to-server.yml 自动创建 /var/www/_shared",
|
||||||
|
"PM2 errored 进程: 需在服务器上手动执行 pm2 restart --only-errored"
|
||||||
|
],
|
||||||
|
"changes_in_repo": [
|
||||||
|
".github/workflows/deploy-to-server.yml — 增加 hololake-frontend root 路径迁移、沙盒路由配置、_shared 目录创建",
|
||||||
|
"deploy/nginx/hololake.conf — 添加 DEV-004, DEV-005 沙盒 alias 路由",
|
||||||
|
"data/nginx-rootfix-report-20260325.json — 本修复回执"
|
||||||
|
],
|
||||||
|
"verification": {
|
||||||
|
"note": "修复已提交到仓库,下次部署到服务器时将自动应用。服务器验证需在部署后通过 Phase 5 脚本确认。",
|
||||||
|
"expected_fix_on_deploy": [
|
||||||
|
"Nginx root 路径从 hololake-frontend 修正为 guanghulab",
|
||||||
|
"/var/www/_shared 目录自动创建",
|
||||||
|
"沙盒路由 /DEV-004/ 和 /DEV-005/ 自动配置"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"nginx_test": "将在下次部署时自动执行 nginx -t",
|
||||||
|
"status": "COMMITTED_PENDING_DEPLOY"
|
||||||
|
}
|
||||||
|
|
@ -133,6 +133,20 @@ server {
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ── DEV-004 之之 · 沙盒路由 ──
|
||||||
|
location /DEV-004/ {
|
||||||
|
alias /var/www/DEV-004/;
|
||||||
|
index index.html;
|
||||||
|
try_files $uri $uri/ =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ── DEV-005 小草莓 · 沙盒路由 ──
|
||||||
|
location /DEV-005/ {
|
||||||
|
alias /var/www/DEV-005/;
|
||||||
|
index index.html;
|
||||||
|
try_files $uri $uri/ =404;
|
||||||
|
}
|
||||||
|
|
||||||
# ── 错误页面 ──
|
# ── 错误页面 ──
|
||||||
error_page 404 /404.html;
|
error_page 404 /404.html;
|
||||||
error_page 500 502 503 504 /50x.html;
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue