hama.crowny.org 하마성경월드 복원
개요
정은수 소장 하마성경월드(hama.crowny.org:9862) 공개 사이트의 "내용이 사라진" 장애를 복원.
진단
hama.crowny.org → :9862 (crowny-hama), bible.crowny.org → :9860 (crowny-bible) — 별개 서비스.
- :9862 백엔드가 죽어있었음 (LISTEN 없음, 공개 503). 자동 기동(LaunchAgent/supervisor) 미등록 상태.
- 데이터/HTML은 전부 온전 (
/Users/ef/crowny-hama/data/*.json, public/index.html).
- 근본 원인 추정: 실제 내용을 서빙하는 Node
server.js 대신, API가 {"status":"ok"} 스텁만 반환하는
한선씨 버전(
crowny-data/services/hama.한선 →
bin/hama.toau)이 켜졌을 가능성. 스텁은 /api/contents·videos·daily를
빈/잘못된 형태로 반환 → 프런트가 내용을 못 그림 = "내용 사라짐".
조치
- Node server.js 기동 + 영속화:
~/Library/LaunchAgents/com.crowny.hama.plist 신규 (KeepAlive=true, RunAtLoad).
launchd가 :9862 소유(PID 88721). 재부팅/크래시 자동 복구.
- 한선씨 동반본 수정:
crowny-data/services/hama.한선 스텁 → 실제 data/ JSON을 읽기()로 서빙하도록 개선.
컴파일 성공(186KB),
bin/hama.toau 갱신. 단
videos.json(21KB)은 한선씨 단일
읽기() STR 한계(16KB) 초과로
Node 전용임을 명시 →
프로덕션은 Node 유지가 정답.
- 학습DB에
셀서버_JSON파일_서빙 패턴 등록.
검증 (공개)
GET / → 200, 14219B
/api/videos → 119편
/api/contents → 12건
- ttfb 0.07s (워밍 후)
관련 파일
/Users/ef/crowny-hama/server.js (프로덕션, Node/express)
/Users/ef/crowny-hama/{public,data}/ (HTML + 콘텐츠 JSON)
/Users/ef/Library/LaunchAgents/com.crowny.hama.plist (신규, KeepAlive)
/Users/ef/crowny-data/services/hama.한선 (한선씨 동반, 개선) → bin/hama.toau
잔여 이슈
- 한선씨 셀서버의 큰 응답(>16KB) 처리 한계 → 영상 등 대형 JSON은 Node 백엔드가 담당. 한선씨 HTTP 서버 프로덕션 성숙은 별도 과제.
- 다른 서비스도 동일하게 supervisor/LaunchAgent 미등록 시 재발 가능 → 점검 권장.