Skip to content

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 diziniKomut (etkin)Varsayılan port
apibackend/node dist/server.jsPORT=4200
workerbackend/node dist/worker.js(port yok)
landinglanding/pnpm vite preview --port ${LANDING_PORT:-4201}4201
docsdocs/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 raporla

Süreç denetimi

  • Her bileşen setsid altında başlatılır, böylece tüm tree (pnpmvite 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 sonra SIGKILL'e düşmeden önce her PID'ye SIGTERM gö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.

İlgili