Skip to content
Questa pagina non è ancora disponibile nella tua lingua. Viene mostrata la versione in inglese.

प्रोडक्शन सेटअप

एकाधिक उपयोगकर्ताओं के साथ प्रोडक्शन एनोटेशन के लिए Potato तैनात करें।

प्रोडक्शन सेटअप

एकाधिक उपयोगकर्ताओं, डेटा दृढ़ता और उचित सुरक्षा के साथ वास्तविक दुनिया के एनोटेशन कार्यों के लिए Potato तैनात करें।

सर्वर कॉन्फ़िगरेशन

बुनियादी प्रोडक्शन कॉन्फ़िग

yaml
server:
  host: 0.0.0.0
  port: 8000
  workers: 4
  timeout: 120

HTTPS का उपयोग करना

सुरक्षित कनेक्शन के लिए (प्रोडक्शन के लिए अनुशंसित):

yaml
server:
  host: 0.0.0.0
  port: 443
  ssl:
    cert: /path/to/cert.pem
    key: /path/to/key.pem

Gunicorn के साथ चलाना

बेहतर प्रदर्शन और विश्वसनीयता के लिए:

bash
gunicorn "potato.server:create_app('config.yaml')" \
  --workers 4 \
  --bind 0.0.0.0:8000 \
  --timeout 120

SSL के साथ

bash
gunicorn "potato.server:create_app('config.yaml')" \
  --workers 4 \
  --bind 0.0.0.0:443 \
  --certfile /path/to/cert.pem \
  --keyfile /path/to/key.pem

रिवर्स प्रॉक्सी सेटअप

Nginx कॉन्फ़िगरेशन

nginx
upstream potato {
    server 127.0.0.1:8000;
}
 
server {
    listen 80;
    server_name annotation.example.com;
    return 301 https://$server_name$request_uri;
}
 
server {
    listen 443 ssl;
    server_name annotation.example.com;
 
    ssl_certificate /etc/letsencrypt/live/annotation.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/annotation.example.com/privkey.pem;
 
    location / {
        proxy_pass http://potato;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
 
    # Increase timeouts for long annotation sessions
    proxy_read_timeout 300;
    proxy_connect_timeout 300;
    proxy_send_timeout 300;
}

Apache कॉन्फ़िगरेशन

apache
<VirtualHost *:443>
    ServerName annotation.example.com
 
    SSLEngine on
    SSLCertificateFile /path/to/cert.pem
    SSLCertificateKeyFile /path/to/key.pem
 
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8000/
    ProxyPassReverse / http://127.0.0.1:8000/
 
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
</VirtualHost>

Docker तैनाती

Dockerfile

dockerfile
FROM python:3.10-slim
 
WORKDIR /app
 
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
 
COPY . .
 
EXPOSE 8000
 
CMD ["gunicorn", "potato.server:create_app('config.yaml')", \
     "--workers", "4", "--bind", "0.0.0.0:8000"]

Docker Compose

yaml
version: '3.8'
 
services:
  potato:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - ./data:/app/data
      - ./annotations:/app/annotations
    environment:
      - POTATO_DEBUG=false
    restart: unless-stopped
 
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./certs:/etc/ssl/certs
    depends_on:
      - potato
    restart: unless-stopped

उपयोगकर्ता प्रमाणीकरण

प्रतिबंधित पहुंच

yaml
allow_all_users: false
authorized_users:
  - user1@example.com
  - user2@example.com
  - user3@example.com

एडमिन पहुंच

yaml
admin_users:
  - admin@example.com
 
admin_dashboard:
  enabled: true
  path: /admin

सत्र प्रबंधन

yaml
session:
  secret_key: "your-secure-secret-key-here"
  timeout: 3600  # 1 hour
  secure_cookie: true  # Requires HTTPS

डेटा दृढ़ता

फ़ाइल-आधारित स्टोरेज

yaml
output:
  path: /var/potato/annotations/
  format: json
  backup_interval: 3600  # Hourly backups

डेटाबेस बैकएंड

बड़े तैनाती के लिए, MySQL का उपयोग करें:

yaml
database:
  type: mysql
  host: localhost
  port: 3306
  name: potato_db
  user: potato
  password: ${DB_PASSWORD}  # Use environment variable

विवरण के लिए MySQL Backend देखें।

निगरानी

हेल्थ चेक एंडपॉइंट

yaml
monitoring:
  health_check: /health
  metrics: /metrics

लॉगिंग कॉन्फ़िगरेशन

yaml
logging:
  level: INFO
  file: /var/log/potato/app.log
  max_size: 100MB
  backup_count: 5
  format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"

Prometheus मेट्रिक्स

yaml
monitoring:
  prometheus:
    enabled: true
    port: 9090

स्केलिंग

हॉरिजॉन्टल स्केलिंग

उच्च-ट्रैफिक तैनाती के लिए:

yaml
# docker-compose.yml
services:
  potato:
    deploy:
      replicas: 3
    # ... rest of config
 
  nginx:
    # Load balancer
    volumes:
      - ./nginx-lb.conf:/etc/nginx/nginx.conf

लोड बैलेंसर कॉन्फ़िग

nginx
upstream potato_cluster {
    least_conn;
    server potato_1:8000;
    server potato_2:8000;
    server potato_3:8000;
}

बैकअप रणनीति

स्वचालित बैकअप

bash
#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/var/backups/potato
 
# Backup annotations
tar -czf $BACKUP_DIR/annotations_$DATE.tar.gz /var/potato/annotations/
 
# Backup config
cp /var/potato/config.yaml $BACKUP_DIR/config_$DATE.yaml
 
# Keep only last 7 days
find $BACKUP_DIR -mtime +7 -delete

crontab में जोड़ें:

bash
0 2 * * * /var/potato/backup.sh

सुरक्षा चेकलिस्ट

  • वैध SSL प्रमाणपत्र के साथ HTTPS का उपयोग करें
  • मजबूत सत्र सीक्रेट की सेट करें
  • authorized_users के साथ उपयोगकर्ता पहुंच प्रतिबंधित करें
  • Potato और डिपेंडेंसी अपडेट रखें
  • संवेदनशील डेटा के लिए पर्यावरण चर का उपयोग करें
  • फ़ायरवॉल नियम कॉन्फ़िगर करें
  • लॉगिंग और निगरानी सक्षम करें
  • नियमित बैकअप सेट करें
  • प्रोडक्शन के लिए डेटाबेस बैकएंड का उपयोग करें
  • एडमिन पहुंच नियमित रूप से समीक्षा करें

पर्यावरण चर

bash
# .env file
POTATO_SECRET_KEY=your-super-secret-key
POTATO_DB_PASSWORD=database-password
POTATO_ADMIN_EMAIL=admin@example.com

Docker Compose में लोड करें:

yaml
services:
  potato:
    env_file:
      - .env

समस्या निवारण

लॉग जांचें

bash
# Gunicorn logs
journalctl -u potato -f
 
# Docker logs
docker-compose logs -f potato

सामान्य समस्याएं

502 Bad Gateway: जांचें कि Potato चल रहा है और सही पोर्ट से बाउंड है

सत्र समस्याएं: सुनिश्चित करें कि सीक्रेट की रीस्टार्ट के दौरान सुसंगत है

धीमा प्रदर्शन: वर्कर काउंट बढ़ाएं या डेटाबेस बैकएंड जोड़ें

अगले कदम