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: 120HTTPS का उपयोग करना
सुरक्षित कनेक्शन के लिए (प्रोडक्शन के लिए अनुशंसित):
yaml
server:
host: 0.0.0.0
port: 443
ssl:
cert: /path/to/cert.pem
key: /path/to/key.pemGunicorn के साथ चलाना
बेहतर प्रदर्शन और विश्वसनीयता के लिए:
bash
gunicorn "potato.server:create_app('config.yaml')" \
--workers 4 \
--bind 0.0.0.0:8000 \
--timeout 120SSL के साथ
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 -deletecrontab में जोड़ें:
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.comDocker 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 चल रहा है और सही पोर्ट से बाउंड है
सत्र समस्याएं: सुनिश्चित करें कि सीक्रेट की रीस्टार्ट के दौरान सुसंगत है
धीमा प्रदर्शन: वर्कर काउंट बढ़ाएं या डेटाबेस बैकएंड जोड़ें
अगले कदम
- MySQL Backend - डेटाबेस स्टोरेज
- Crowdsourcing - Prolific/MTurk एकीकरण
- User Management - एक्सेस कंट्रोल