Files
justice/scripts/deploy-www.sh
T
2026-05-01 08:04:36 +00:00

58 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Deploy tracked web files from repo -> /var/www/html (ไม่ลบ node_modules บนเซิร์ฟเวอร์)
# ใช้ทุกครั้งหลังแก้ www/html ใน repo แล้วต้องการให้เว็บจริงตรงกับ repo
set -euo pipefail
REPO="$(cd "$(dirname "$0")/.." && pwd)"
SRC="$REPO/www/html/"
DST="/var/www/html/"
GAME_SERVER_JS="$DST/Game/server.js"
if [[ "$(id -u)" -ne 0 ]]; then
echo "Run as root: sudo $0" >&2
exit 1
fi
# ถ้า Game/server.js เปลี่ยนหลัง deploy — Node ต้องรีโหลดโค้ด (systemd: game-zep.service)
hash_game_server_js() {
local f="$1"
[[ -f "$f" ]] || { echo ""; return 0; }
sha256sum "$f" | awk '{print $1}'
}
GAME_SRV_HASH_BEFORE="$(hash_game_server_js "$GAME_SERVER_JS")"
rsync -a \
--checksum \
--exclude 'node_modules' \
"$SRC" "$DST"
chown -R www-data:www-data "$DST"
# รูปป้าย quiz_carry — ให้เขียน/ลบได้ชัดเจน (FTP/Node); setgid ให้ไฟล์ใหม่ได้กลุ่ม www-data
PLAQUE="$DST/Game/public/img/quiz-carry-plaque-assets"
mkdir -p "$PLAQUE"
chown www-data:www-data "$PLAQUE"
chmod 2775 "$PLAQUE"
GA="$DST/Game/public/img/gauntlet-assets"
mkdir -p "$GA"
chown www-data:www-data "$GA"
chmod 2775 "$GA"
# Jump Survival (Jumper) — โฟลเดอร์รูป; FTP มัก MKD ไม่ได้ถ้ายังไม่มีบนเซิร์ฟ
JUMPER="$DST/Game/public/img/Jumper"
mkdir -p "$JUMPER"
chown www-data:www-data "$JUMPER"
chmod 2775 "$JUMPER"
# Space shooter / Violent Crime — ชื่อโฟลเดอร์ไม่มีช่องว่าง (FTP MKD "Violent Crime" มัก 550)
VIOLENT_CRIME="$DST/Game/public/img/ViolentCrime"
mkdir -p "$VIOLENT_CRIME"
chown www-data:www-data "$VIOLENT_CRIME"
chmod 2775 "$VIOLENT_CRIME"
GAME_SRV_HASH_AFTER="$(hash_game_server_js "$GAME_SERVER_JS")"
if [[ -n "$GAME_SRV_HASH_AFTER" && "$GAME_SRV_HASH_BEFORE" != "$GAME_SRV_HASH_AFTER" ]]; then
if systemctl cat game-zep.service &>/dev/null; then
systemctl restart game-zep.service
echo "OK: restarted game-zep.service (Game/server.js changed)"
else
echo "WARN: Game/server.js changed but no game-zep.service — restart Node manually" >&2
fi
fi
echo "OK: deployed $SRC -> $DST (node_modules on server untouched)"