8.0 KiB
Yargı MCP Server Dağıtım Rehberi
Bu rehber, Yargı MCP Server'ın ASGI web servisi olarak çeşitli dağıtım seçeneklerini kapsar.
İçindekiler
- Hızlı Başlangıç
- Yerel Geliştirme
- Production Dağıtımı
- Cloud Dağıtımı
- Docker Dağıtımı
- Güvenlik Hususları
- İzleme
Hızlı Başlangıç
1. Bağımlılıkları Yükleyin
# ASGI sunucusu için uvicorn yükleyin
pip install uvicorn
# Veya tüm bağımlılıklarla birlikte yükleyin
pip install -e .
pip install uvicorn
2. Sunucuyu Çalıştırın
# Temel başlatma
python run_asgi.py
# Veya doğrudan uvicorn ile
uvicorn asgi_app:app --host 0.0.0.0 --port 8000
Sunucu şu adreslerde kullanılabilir olacak:
- MCP Endpoint:
http://localhost:8000/mcp/ - Sağlık Kontrolü:
http://localhost:8000/health - API Durumu:
http://localhost:8000/status
Yerel Geliştirme
Otomatik Yeniden Yükleme ile Geliştirme Sunucusu
python run_asgi.py --reload --log-level debug
FastAPI Entegrasyonunu Kullanma
Ek REST API endpoint'leri için:
uvicorn fastapi_app:app --reload
Bu şunları sağlar:
/docsadresinde interaktif API dokümantasyonu/api/toolsadresinde araç listesi/api/databasesadresinde veritabanı bilgileri
Ortam Değişkenleri
.env.example dosyasını temel alarak bir .env dosyası oluşturun:
cp .env.example .env
Temel değişkenler:
HOST: Sunucu host adresi (varsayılan: 127.0.0.1)PORT: Sunucu portu (varsayılan: 8000)ALLOWED_ORIGINS: CORS kökenleri (virgülle ayrılmış)LOG_LEVEL: Log seviyesi (debug, info, warning, error)
Production Dağıtımı
1. Uvicorn ile Çoklu Worker Kullanımı
python run_asgi.py --host 0.0.0.0 --port 8000 --workers 4
2. Gunicorn Kullanımı
pip install gunicorn
gunicorn asgi_app:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000
3. Nginx Reverse Proxy ile
- Nginx'i yükleyin
- Sağlanan
nginx.confdosyasını kullanın:
sudo cp nginx.conf /etc/nginx/sites-available/yargi-mcp
sudo ln -s /etc/nginx/sites-available/yargi-mcp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
4. Systemd Servisi
/etc/systemd/system/yargi-mcp.service dosyasını oluşturun:
[Unit]
Description=Yargı MCP Server
After=network.target
[Service]
Type=exec
User=www-data
WorkingDirectory=/opt/yargi-mcp
Environment="PATH=/opt/yargi-mcp/venv/bin"
ExecStart=/opt/yargi-mcp/venv/bin/uvicorn asgi_app:app --host 0.0.0.0 --port 8000 --workers 4
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Etkinleştirin ve başlatın:
sudo systemctl enable yargi-mcp
sudo systemctl start yargi-mcp
Cloud Dağıtımı
Heroku
Procfileoluşturun:
web: uvicorn asgi_app:app --host 0.0.0.0 --port $PORT
- Dağıtın:
heroku create uygulama-isminiz
git push heroku main
Railway
railway.jsonekleyin:
{
"build": {
"builder": "NIXPACKS"
},
"deploy": {
"startCommand": "uvicorn asgi_app:app --host 0.0.0.0 --port $PORT"
}
}
- Railway CLI veya GitHub entegrasyonu ile dağıtın
Google Cloud Run
- Container oluşturun:
docker build -t yargi-mcp .
docker tag yargi-mcp gcr.io/PROJE_ADINIZ/yargi-mcp
docker push gcr.io/PROJE_ADINIZ/yargi-mcp
- Dağıtın:
gcloud run deploy yargi-mcp \
--image gcr.io/PROJE_ADINIZ/yargi-mcp \
--platform managed \
--region us-central1 \
--allow-unauthenticated
AWS Lambda (Mangum kullanarak)
- Mangum'u yükleyin:
pip install mangum
lambda_handler.pyoluşturun:
from mangum import Mangum
from asgi_app import app
handler = Mangum(app, lifespan="off")
- AWS SAM veya Serverless Framework kullanarak dağıtın
Docker Dağıtımı
Tek Container
# Oluşturun
docker build -t yargi-mcp .
# Çalıştırın
docker run -p 8000:8000 --env-file .env yargi-mcp
Docker Compose
# Geliştirme
docker-compose up
# Nginx ile Production
docker-compose --profile production up
# Redis önbellekleme ile
docker-compose --profile with-cache up
Kubernetes
Deployment YAML oluşturun:
apiVersion: apps/v1
kind: Deployment
metadata:
name: yargi-mcp
spec:
replicas: 3
selector:
matchLabels:
app: yargi-mcp
template:
metadata:
labels:
app: yargi-mcp
spec:
containers:
- name: yargi-mcp
image: yargi-mcp:latest
ports:
- containerPort: 8000
env:
- name: HOST
value: "0.0.0.0"
- name: PORT
value: "8000"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
periodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
name: yargi-mcp-service
spec:
selector:
app: yargi-mcp
ports:
- port: 80
targetPort: 8000
type: LoadBalancer
Güvenlik Hususları
1. Kimlik Doğrulama
API_TOKEN ortam değişkenini ayarlayarak token kimlik doğrulamasını etkinleştirin:
export API_TOKEN=gizli-token-degeri
Ardından isteklere ekleyin:
curl -H "Authorization: Bearer gizli-token-degeri" http://localhost:8000/api/tools
2. HTTPS/SSL
Production için her zaman HTTPS kullanın:
- SSL sertifikası edinin (Let's Encrypt vb.)
- Nginx veya cloud sağlayıcıda yapılandırın
ALLOWED_ORIGINSdeğerini https:// kullanacak şekilde güncelleyin
3. Rate Limiting (Hız Sınırlama)
Sağlanan Nginx yapılandırması rate limiting içerir:
- API endpoint'leri: 10 istek/saniye
- MCP endpoint: 100 istek/saniye
4. CORS Yapılandırması
Production için belirli kaynaklara izin verin:
ALLOWED_ORIGINS=https://app.sizindomain.com,https://www.sizindomain.com
İzleme
Sağlık Kontrolleri
/health endpoint'ini izleyin:
curl http://localhost:8000/health
Yanıt:
{
"status": "healthy",
"timestamp": "2024-12-26T10:00:00",
"uptime_seconds": 3600,
"tools_operational": true
}
Loglama
Ortam değişkeni ile log seviyesini yapılandırın:
LOG_LEVEL=info # veya debug, warning, error
Loglar şuraya yazılır:
- Konsol (stdout)
logs/mcp_server.logdosyası
Metrikler (Opsiyonel)
OpenTelemetry desteği için:
pip install opentelemetry-instrumentation-fastapi
Ortam değişkenlerini ayarlayın:
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_SERVICE_NAME=yargi-mcp-server
Sorun Giderme
Port Zaten Kullanımda
# 8000 portunu kullanan işlemi bulun
lsof -i :8000
# İşlemi sonlandırın
kill -9 <PID>
İzin Hataları
Dosya izinlerinin doğru olduğundan emin olun:
chmod +x run_asgi.py
chown -R www-data:www-data /opt/yargi-mcp
Bellek Sorunları
Büyük belge işleme için worker belleğini artırın:
# systemd servisinde
Environment="PYTHONMALLOC=malloc"
LimitNOFILE=65536
Zaman Aşımı Sorunları
Zaman aşımlarını ayarlayın:
- Uvicorn:
--timeout-keep-alive 75 - Nginx:
proxy_read_timeout 300s; - Cloud sağlayıcılar: Platform özel zaman aşımı ayarlarını kontrol edin
Performans Ayarlama
1. Worker İşlemleri
- Geliştirme: 1 worker
- Production: CPU çekirdeği başına 2-4 worker
2. Bağlantı Havuzlama
Sunucu varsayılan olarak httpx ile bağlantı havuzlama kullanır.
3. Önbellekleme (Gelecek Geliştirme)
Redis önbellekleme docker-compose ile etkinleştirilebilir:
docker-compose --profile with-cache up
4. Veritabanı Zaman Aşımları
.env dosyasında veritabanı başına zaman aşımlarını ayarlayın:
YARGITAY_TIMEOUT=60
DANISTAY_TIMEOUT=60
ANAYASA_TIMEOUT=90
Destek
Sorunlar ve sorular için:
- GitHub Issues: https://github.com/saidsurucu/yargi-mcp/issues
- Dokümantasyon: README.md dosyasına bakın