#!/bin/bash set -e echo "=== 巡樓 Production 啟動 ===" # 1. 確認 nginx 不會被 default site 搶走 echo "[1/7] 確保 nginx config..." if [ -f /etc/nginx/sites-enabled/default ]; then sudo rm /etc/nginx/sites-enabled/default fi # 2. 起 infra (Mongo + Redis) echo "[2/7] 啟動 Mongo + Redis..." docker compose -f infra/docker-compose.yml --env-file infra/.env up -d # 3. 確保 Playwright 瀏覽器已安裝 echo "[3/7] 確認 Playwright chromium..." if [ ! -d /opt/haixun/.cache/ms-playwright/chromium-1228 ]; then sudo -u haixun bash -c 'cd /opt/haixun/node-worker && npx playwright install chromium' fi # 4. 清除 systemd 失敗計數(之前 crash loop 的話需要 reset) echo "[4/7] 重置 systemd 狀態..." for svc in haixun-gateway haixun-worker haixun-node-worker; do sudo systemctl reset-failed "$svc" 2>/dev/null || true done # 5. 啟動 systemd 服務 echo "[5/7] 啟動 backend gateway..." sudo systemctl start haixun-gateway echo "[5/7] 啟動 worker..." sudo systemctl start haixun-worker echo "[5/7] 啟動 node worker..." sudo systemctl start haixun-node-worker # 6. 初始化 DB(indexes + admin,冪等) echo "[6/7] 初始化 DB(admin: admin@30cm.net)..." set -a; source /opt/haixun/etc/haixun.env; set +a sudo -E /opt/haixun/bin/tool init -f /opt/haixun/etc/gateway.prod.yaml # 7. 確認 nginx 執行 + reload config echo "[7/7] 確認 nginx..." sudo nginx -t && sudo systemctl start nginx && sudo systemctl reload nginx echo "" echo "=== 啟動完成 ===" echo " nginx: $(systemctl is-active nginx)" echo " gateway: $(systemctl is-active haixun-gateway)" echo " worker: $(systemctl is-active haixun-worker)" echo " node-wkr: $(systemctl is-active haixun-node-worker)" echo " docker: $(docker compose -f infra/docker-compose.yml ps --status running 2>/dev/null | wc -l) containers running" echo "" echo "健康檢查:" echo " curl http://localhost/api/v1/health" echo "" echo "查看日誌:" echo " journalctl -u haixun-gateway -n 50 --no-pager -f" echo " journalctl -u haixun-worker -n 50 --no-pager -f" echo " docker compose -f infra/docker-compose.yml logs -f"