thread-master/start-prod.sh

60 lines
2.1 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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. 初始化 DBindexes + admin冪等
echo "[6/7] 初始化 DBadmin: 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"