58 lines
2.4 KiB
Bash
Executable File
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)"
|