service.sh
Sosyabot Docker yok, docker-compose yok, container yok ile gelir — projenin CLAUDE.md kurallarına göre. Her operasyonel eylem repo kökündeki tek bir shell script üzerinden gider: service.sh.
Yönetilen bileşenler
service.sh dört uzun-süreli bileşeni orkestre eder:
| Ad | Çalışma dizini | Komut (etkin) | Varsayılan port |
|---|---|---|---|
api | backend/ | node dist/server.js | PORT=4200 |
worker | backend/ | node dist/worker.js | (port yok) |
landing | landing/ | pnpm vite preview --port ${LANDING_PORT:-4201} | 4201 |
docs | docs/ | pnpm vitepress preview content --port ${DOCS_PORT:-4202} | 4202 |
Frontend (kimlik doğrulanmış uygulama) ayrı bir süreç değildir — ./service.sh build, Vite çıktısını backend/dist/public'e kopyalar ve API onu /'tan sunar.
Komutlar
./service.sh install # kökte pnpm install (workspaces)
./service.sh build # backend tsc + frontend vite (→ backend/dist/public) + landing vite + docs vitepress
./service.sh start # her bileşeni başlat, PID'leri .run/'a yaz
./service.sh stop # SIGTERM tree, sonra 5 sn sonra SIGKILL; pnpm → vite child süreçlerini yönetir
./service.sh restart # stop sonra start
./service.sh status # bileşen başına "running (pid)" / "stopped" yazdır
./service.sh logs <name> # .logs/<name>.log'u takip et; <name> ∈ api | worker | landing | docs
./service.sh health # her bileşenin sağlık probe'unu curl ile dene ve raporlaSüreç denetimi
- Her bileşen
setsidaltında başlatılır, böylece tüm tree (pnpm→vite preview) kendi süreç grubunda çalışır. - PID'ler
.run/<component>.pid'de saklanır; loglar.logs/<component>.log'da. stop_one()torun tree'sinde dolaşır ve 5 sn sonraSIGKILL'e düşmeden önce her PID'yeSIGTERMgönderir.
NODE_BIN pin
Sistem Node'un 18'den eskiyse, .env'de NODE_BIN'i doğru node ve pnpm binary'lerini içeren bir dizine ayarla (örn. /root/.nvm/versions/node/v22.22.2/bin). service.sh bu dizini her oluşturulan süreç için PATH'e prepend eder.
Sağlık kontrolleri
./service.sh health dört bileşen endpoint'ini curl ile dener ve herhangi biri başarısız olursa non-zero çıkar:
http://127.0.0.1:${PORT:-4200}/health— backend liveness.http://127.0.0.1:${LANDING_PORT:-4201}/— landing index.http://127.0.0.1:${DOCS_PORT:-4202}/— docs index.
Worker'ın portu yoktur; PID dosyası canlı bir sürece işaret ediyorsa sağlıklı kabul edilir. Doğrulamak için status komutunu kullan.