#!/bin/bash # Django ve Celery servislerini başlatma scripti # Kullanım: ./start-services.sh set -e echo "🚀 Django ve Celery servisleri başlatılıyor..." # Renk kodları GREEN='\033[0;32m' BLUE='\033[0;34m' RED='\033[0;31m' NC='\033[0m' # No Color # PID dosyaları için dizin PID_DIR="./pids" mkdir -p $PID_DIR # Django PID DJANGO_PID="$PID_DIR/django.pid" # Celery Worker PID CELERY_WORKER_PID="$PID_DIR/celery_worker.pid" # Cleanup fonksiyonu - Script sonlandığında çağrılır cleanup() { echo -e "\n${RED}🛑 Servisler durduruluyor...${NC}" if [ -f "$DJANGO_PID" ]; then DJANGO_PID_VALUE=$(cat $DJANGO_PID) if ps -p $DJANGO_PID_VALUE > /dev/null 2>&1; then echo -e "${BLUE}Django sunucusu durduruluyor (PID: $DJANGO_PID_VALUE)${NC}" kill -TERM $DJANGO_PID_VALUE 2>/dev/null || true fi rm -f $DJANGO_PID fi if [ -f "$CELERY_WORKER_PID" ]; then CELERY_PID_VALUE=$(cat $CELERY_WORKER_PID) if ps -p $CELERY_PID_VALUE > /dev/null 2>&1; then echo -e "${BLUE}Celery worker durduruluyor (PID: $CELERY_PID_VALUE)${NC}" kill -TERM $CELERY_PID_VALUE 2>/dev/null || true fi rm -f $CELERY_WORKER_PID fi # Celery process'lerini temizle pkill -f "celery worker" 2>/dev/null || true echo -e "${GREEN}✅ Tüm servisler durduruldu${NC}" exit 0 } # SIGINT (Ctrl+C) ve SIGTERM sinyallerini yakala trap cleanup SIGINT SIGTERM # Eski PID dosyalarını temizle rm -f $DJANGO_PID $CELERY_WORKER_PID echo -e "${BLUE}📦 Migrasyonlar kontrol ediliyor...${NC}" python manage.py migrate --noinput echo -e "${BLUE}📁 Static dosyalar toplaniyor...${NC}" python manage.py collectstatic --noinput echo -e "${GREEN}✅ Hazırlık tamamlandı${NC}\n" # Django sunucusunu başlat echo -e "${BLUE}🌐 Django development sunucusu başlatılıyor...${NC}" python manage.py runserver 0.0.0.0:8000 > ./logs/django.log 2>&1 & DJANGO_PID_VALUE=$! echo $DJANGO_PID_VALUE > $DJANGO_PID echo -e "${GREEN}✅ Django sunucusu başlatıldı (PID: $DJANGO_PID_VALUE)${NC}" echo -e "${GREEN} URL: http://localhost:8000${NC}\n" # Celery worker'ı başlat echo -e "${BLUE}⚙️ Celery worker başlatılıyor...${NC}" celery -A core worker --loglevel=info > ./logs/celery.log 2>&1 & CELERY_PID_VALUE=$! echo $CELERY_PID_VALUE > $CELERY_WORKER_PID echo -e "${GREEN}✅ Celery worker başlatıldı (PID: $CELERY_PID_VALUE)${NC}\n" echo -e "${GREEN}========================================${NC}" echo -e "${GREEN}🎉 Tüm servisler başarıyla başlatıldı!${NC}" echo -e "${GREEN}========================================${NC}" echo -e "${BLUE}Django Server:${NC} http://localhost:8000" echo -e "${BLUE}Loglar:${NC}" echo -e " - Django: ./logs/django.log" echo -e " - Celery: ./logs/celery.log" echo -e "\n${RED}Durdurmak için Ctrl+C tuşlarına basın${NC}\n" # Logları takip et tail -f ./logs/django.log ./logs/celery.log & TAIL_PID=$! # Sonsuz döngü - servisler çalışmaya devam etsin wait $DJANGO_PID_VALUE $CELERY_PID_VALUE