DigitalOcean ๋ฐฐํฌ ๊ฐ์ด๋
๋ชฉ์ฐจ
- ์ฌ์ ์ค๋น์ฌํญ
- Droplet ์์ฑ
- ์๋ฒ ์ด๊ธฐ ์ค์
- Ollama ์ค์น ๋ฐ ์ค์
- ํ๋ก์ ํธ ๋ฐฐํฌ
- Nginx ์ค์
- SSL ์ธ์ฆ์ ์ค์
- systemd ์๋น์ค ์ค์
- ๋ฐฑ์ ์ค์
- ๋ชจ๋ํฐ๋ง ์ค์
- ๋ฌธ์ ํด๊ฒฐ
์ฌ์ ์ค๋น์ฌํญ
ํ์ํ ๊ฒ๋ค:
- DigitalOcean ๊ณ์ (https://www.digitalocean.com/)
- ๋๋ฉ์ธ (์ ํ์ฌํญ, ์์ผ๋ฉด ์ข์)
- GitHub/GitLab ์ ์ฅ์ (๋๋ ํ๋ก์ ํธ ํ์ผ)
- Gemini API ํค (์ฌ์ฉํ๋ ๊ฒฝ์ฐ)
์์ ๋น์ฉ:
- Droplet (8GB RAM): $48/์
- ๋๋ฉ์ธ: $10-15/๋ (์ ํ์ฌํญ)
- ์ด: ์ฝ $48-50/์
Droplet ์์ฑ
1. DigitalOcean ๋ก๊ทธ์ธ ๋ฐ Droplet ์์ฑ
- https://www.digitalocean.com/ ์ ์ ๋ฐ ๋ก๊ทธ์ธ
- "Create" โ "Droplets" ํด๋ฆญ
- ๋ค์ ์ค์ ์ ํ:
์ด๋ฏธ์ง:
- Ubuntu 22.04 (LTS) x64
ํ๋:
- Regular (์ผ๋ฐ)
- 8GB RAM / 4 vCPUs / 160GB SSD ($48/์) ์ถ์ฒ
- ๋๋ 4GB RAM / 2 vCPUs / 80GB SSD ($24/์) - ์ต์ ์ฌ์
๋ฐ์ดํฐ์ผํฐ ์ง์ญ:
- Singapore (์ฑ๊ฐํฌ๋ฅด) - ํ๊ตญ์์ ๊ฐ์ฅ ๊ฐ๊น์
- ๋๋ Seoul (์์ธ) - ๊ฐ๋ฅํ ๊ฒฝ์ฐ
์ธ์ฆ:
- SSH ํค ์ถ๊ฐ (๊ถ์ฅ)
- ๋๋ ๋น๋ฐ๋ฒํธ ์ค์
์ถ๊ฐ ์ต์ :
- Monitoring ํ์ฑํ
- Backups ํ์ฑํ (์ ํ์ฌํญ, ์ถ๊ฐ ๋น์ฉ)
- "Create Droplet" ํด๋ฆญ
2. ์๋ฒ ์ ์ ์ ๋ณด ํ์ธ
์์ฑ ์๋ฃ ํ ์ด๋ฉ์ผ๋ก IP ์ฃผ์์ ์ ์ ์ ๋ณด๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค.
- IP ์ฃผ์: ์)
123.45.67.89 - Root ๋น๋ฐ๋ฒํธ (๋น๋ฐ๋ฒํธ ๋ฐฉ์์ธ ๊ฒฝ์ฐ)
์๋ฒ ์ด๊ธฐ ์ค์
1. SSH๋ก ์๋ฒ ์ ์
Windows (PowerShell):
ssh root@YOUR_SERVER_IP
Mac/Linux:
ssh root@YOUR_SERVER_IP
2. ์์คํ ์ ๋ฐ์ดํธ
# ์์คํ
์
๋ฐ์ดํธ
apt update && apt upgrade -y
# ํ์ ํจํค์ง ์ค์น
apt install -y \
python3 \
python3-pip \
python3-venv \
git \
curl \
wget \
nginx \
certbot \
python3-certbot-nginx \
supervisor \
ufw \
htop \
nano \
build-essential \
libssl-dev \
libffi-dev \
python3-dev
3. ๋ฐฉํ๋ฒฝ ์ค์
# UFW ๋ฐฉํ๋ฒฝ ํ์ฑํ
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw allow 11434/tcp # Ollama ํฌํธ
ufw enable
ufw status
4. ์ฌ์ฉ์ ์์ฑ (์ ํ์ฌํญ, ๋ณด์์ ์ํด ๊ถ์ฅ)
# ์ ์ฌ์ฉ์ ์์ฑ
adduser deploy
usermod -aG sudo deploy
# SSH ํค ๋ณต์ฌ (๋ก์ปฌ์์)
# Windows: type C:\Users\YourName\.ssh\id_rsa.pub | ssh root@YOUR_SERVER_IP "cat >> /home/deploy/.ssh/authorized_keys"
# Mac/Linux: ssh-copy-id deploy@YOUR_SERVER_IP
# deploy ์ฌ์ฉ์๋ก ์ ํ
su - deploy
Ollama ์ค์น ๋ฐ ์ค์
1. Ollama ์ค์น
# Ollama ์ค์น ์คํฌ๋ฆฝํธ ์คํ
curl -fsSL https://ollama.com/install.sh | sh
# Ollama ์๋น์ค ํ์ธ
systemctl status ollama
# Ollama ์๋ ์์ ์ค์
systemctl enable ollama
2. Ollama ๋ชจ๋ธ ๋ค์ด๋ก๋
# ์ฌ์ฉํ ๋ชจ๋ธ ๋ค์ด๋ก๋ (์: llama2)
ollama pull llama2
# ๋๋ ๋ค๋ฅธ ๋ชจ๋ธ
# ollama pull mistral
# ollama pull qwen
# ์ค์น๋ ๋ชจ๋ธ ํ์ธ
ollama list
3. Ollama ์๋น์ค ํ์ธ
# Ollama๊ฐ ์ ์ ์๋ํ๋์ง ํ์ธ
curl http://localhost:11434/api/tags
# ์๋น์ค ์ฌ์์
systemctl restart ollama
ํ๋ก์ ํธ ๋ฐฐํฌ
1. ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ์์ฑ
# ํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋
cd ~
# ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ์์ฑ
mkdir -p /var/www
cd /var/www
# ์์ ๊ถ ์ค์ (deploy ์ฌ์ฉ์ ์ฌ์ฉ ์)
# chown -R deploy:deploy /var/www
2. ํ๋ก์ ํธ ํ์ผ ์ ๋ก๋
๋ฐฉ๋ฒ 1: Git ์ฌ์ฉ (๊ถ์ฅ)
# Git ์ ์ฅ์ ํด๋ก
git clone YOUR_REPOSITORY_URL "soy-nv-ai"
cd soy-nv-ai
# ๋๋ ์ง์ ํ์ผ ์
๋ก๋
# scp -r "D:\SOY NV AI\*" deploy@YOUR_SERVER_IP:/var/www/soy-nv-ai/
๋ฐฉ๋ฒ 2: SCP๋ก ํ์ผ ์ ์ก (Windows PowerShell)
# ํ๋ก์ ํธ ํด๋ ์ ์ฒด ์
๋ก๋
scp -r "D:\SOY NV AI\*" deploy@YOUR_SERVER_IP:/var/www/soy-nv-ai/
3. ๊ฐ์ํ๊ฒฝ ์ค์
cd /var/www/soy-nv-ai
# ๊ฐ์ํ๊ฒฝ ์์ฑ
python3 -m venv venv
# ๊ฐ์ํ๊ฒฝ ํ์ฑํ
source venv/bin/activate
# pip ์
๊ทธ๋ ์ด๋
pip install --upgrade pip
# ์์กด์ฑ ์ค์น
pip install -r requirements.txt
# ์ค์น ํ์ธ
python --version
pip list
4. ํ๊ฒฝ ๋ณ์ ์ค์
# .env ํ์ผ ์์ฑ
nano .env
.env ํ์ผ ๋ด์ฉ:
# Flask ์ค์
SECRET_KEY=your-super-secret-key-change-this-in-production
FLASK_ENV=production
FLASK_DEBUG=False
# ๋ฐ์ดํฐ๋ฒ ์ด์ค
DATABASE_URL=sqlite:///var/www/soy-nv-ai/instance/finance_analysis.db
# Ollama ์ค์
OLLAMA_BASE_URL=http://localhost:11434
# Gemini API (์ฌ์ฉํ๋ ๊ฒฝ์ฐ)
GEMINI_API_KEY=your-gemini-api-key-here
# ์
๋ก๋ ํด๋
UPLOAD_FOLDER=/var/www/soy-nv-ai/uploads
VECTOR_DB_PATH=/var/www/soy-nv-ai/vector_db
KNOWLEDGE_GRAPH_PATH=/var/www/soy-nv-ai/knowledge_graphs
# ์๋ฒ ๋ฉ ๋ชจ๋ธ
EMBEDDING_MODEL_NAME=sentence-transformers/all-MiniLM-L6-v2
RERANKER_MODEL_NAME=BAAI/bge-reranker-base
SECRET_KEY ์์ฑ ๋ฐฉ๋ฒ:
python3 -c "import secrets; print(secrets.token_hex(32))"
5. ๋๋ ํ ๋ฆฌ ๊ถํ ์ค์
# ํ์ํ ๋๋ ํ ๋ฆฌ ์์ฑ
mkdir -p instance uploads vector_db knowledge_graphs logs
# ๊ถํ ์ค์
chmod -R 755 /var/www/soy-nv-ai
chown -R deploy:deploy /var/www/soy-nv-ai # deploy ์ฌ์ฉ์ ์ฌ์ฉ ์
# ์
๋ก๋ ํด๋ ์ฐ๊ธฐ ๊ถํ
chmod -R 775 uploads
chmod -R 775 instance
chmod -R 775 vector_db
6. ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ
# ๊ฐ์ํ๊ฒฝ ํ์ฑํ
source venv/bin/activate
# ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ
python -c "from app import create_app; app = create_app(); app.app_context().push(); from app.database import db; db.create_all()"
# ์๋ฒ ํ
์คํธ ์คํ
python run.py
๋ค๋ฅธ ํฐ๋ฏธ๋์์ ํ ์คํธ:
curl http://localhost:5001
์ ์ ์๋ํ๋ฉด Ctrl+C๋ก ์ค์งํฉ๋๋ค.
Nginx ์ค์
1. Nginx ์ค์ ํ์ผ ์์ฑ
sudo nano /etc/nginx/sites-available/soy-nv-ai
์ค์ ํ์ผ ๋ด์ฉ:
server {
listen 80;
server_name YOUR_DOMAIN.com www.YOUR_DOMAIN.com;
# ๋๋ IP ์ฃผ์๋ง ์ฌ์ฉ: server_name YOUR_SERVER_IP;
# ๋ก๊ทธ ์ค์
access_log /var/log/nginx/soy-nv-ai-access.log;
error_log /var/log/nginx/soy-nv-ai-error.log;
# ํด๋ผ์ด์ธํธ ์ต๋ ์
๋ก๋ ํฌ๊ธฐ (100MB)
client_max_body_size 100M;
# ํ๋ก์ ์ค์
location / {
proxy_pass http://127.0.0.1:5001;
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;
# WebSocket ์ง์ (ํ์ํ ๊ฒฝ์ฐ)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# ํ์์์ ์ค์ (AI ์๋ต์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์)
proxy_connect_timeout 600s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
}
# ์ ์ ํ์ผ ์ง์ ์ ๊ณต (์ ํ์ฌํญ)
location /static {
alias /var/www/soy-nv-ai/static;
expires 30d;
add_header Cache-Control "public, immutable";
}
}
2. ์ค์ ํ์ผ ํ์ฑํ
# ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฑ
sudo ln -s /etc/nginx/sites-available/soy-nv-ai /etc/nginx/sites-enabled/
# ๊ธฐ๋ณธ ์ค์ ๋นํ์ฑํ (์ ํ์ฌํญ)
sudo rm /etc/nginx/sites-enabled/default
# Nginx ์ค์ ํ
์คํธ
sudo nginx -t
# Nginx ์ฌ์์
sudo systemctl restart nginx
sudo systemctl enable nginx
3. ๋ฐฉํ๋ฒฝ ํ์ธ
# Nginx ํฌํธ ํ์ธ
sudo ufw status
SSL ์ธ์ฆ์ ์ค์
1. Let's Encrypt SSL ์ธ์ฆ์ ์ค์น
๋๋ฉ์ธ์ด ์๋ ๊ฒฝ์ฐ:
# Certbot์ผ๋ก SSL ์ธ์ฆ์ ๋ฐ๊ธ
sudo certbot --nginx -d YOUR_DOMAIN.com -d www.YOUR_DOMAIN.com
# ์๋ ๊ฐฑ์ ํ
์คํธ
sudo certbot renew --dry-run
๋๋ฉ์ธ์ด ์๋ ๊ฒฝ์ฐ (IP๋ง ์ฌ์ฉ):
- SSL ์ธ์ฆ์๋ ๋ฐ๊ธํ ์ ์์ต๋๋ค
- HTTP๋ก๋ง ์ ์ ๊ฐ๋ฅ (๋ณด์์ ๊ถ์ฅํ์ง ์์)
- ๋ด๋ถ ๋คํธ์ํฌ๋ VPN ์ฌ์ฉ ๊ณ ๋ ค
2. ์๋ ๊ฐฑ์ ์ค์
# Certbot ์๋ ๊ฐฑ์ ์ ์ด๋ฏธ systemd ํ์ด๋จธ๋ก ์ค์ ๋จ
sudo systemctl status certbot.timer
systemd ์๋น์ค ์ค์
1. ์๋น์ค ํ์ผ ์์ฑ
sudo nano /etc/systemd/system/soy-nv-ai.service
์๋น์ค ํ์ผ ๋ด์ฉ:
[Unit]
Description=SOY NV AI Flask Application
After=network.target ollama.service
[Service]
Type=simple
User=deploy
Group=deploy
WorkingDirectory=/var/www/soy-nv-ai
Environment="PATH=/var/www/soy-nv-ai/venv/bin"
Environment="FLASK_ENV=production"
ExecStart=/var/www/soy-nv-ai/venv/bin/python /var/www/soy-nv-ai/run.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=soy-nv-ai
# ๋ฆฌ์์ค ์ ํ (์ ํ์ฌํญ)
LimitNOFILE=65535
MemoryLimit=6G
[Install]
WantedBy=multi-user.target
2. ์๋น์ค ํ์ฑํ ๋ฐ ์์
# systemd ์ฌ๋ก๋
sudo systemctl daemon-reload
# ์๋น์ค ํ์ฑํ (๋ถํ
์ ์๋ ์์)
sudo systemctl enable soy-nv-ai
# ์๋น์ค ์์
sudo systemctl start soy-nv-ai
# ์๋น์ค ์ํ ํ์ธ
sudo systemctl status soy-nv-ai
# ๋ก๊ทธ ํ์ธ
sudo journalctl -u soy-nv-ai -f
3. ์๋น์ค ๊ด๋ฆฌ ๋ช ๋ น์ด
# ์๋น์ค ์์
sudo systemctl start soy-nv-ai
# ์๋น์ค ์ค์ง
sudo systemctl stop soy-nv-ai
# ์๋น์ค ์ฌ์์
sudo systemctl restart soy-nv-ai
# ์๋น์ค ์ํ ํ์ธ
sudo systemctl status soy-nv-ai
# ๋ก๊ทธ ํ์ธ
sudo journalctl -u soy-nv-ai -n 50
sudo journalctl -u soy-nv-ai -f # ์ค์๊ฐ ๋ก๊ทธ
๋ฐฑ์ ์ค์
1. ๋ฐฑ์ ์คํฌ๋ฆฝํธ ์์ฑ
nano /var/www/soy-nv-ai/backup.sh
๋ฐฑ์ ์คํฌ๋ฆฝํธ ๋ด์ฉ:
#!/bin/bash
# ๋ฐฑ์
๋๋ ํ ๋ฆฌ
BACKUP_DIR="/var/backups/soy-nv-ai"
DATE=$(date +%Y%m%d_%H%M%S)
# ๋ฐฑ์
๋๋ ํ ๋ฆฌ ์์ฑ
mkdir -p $BACKUP_DIR
# ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์
cp /var/www/soy-nv-ai/instance/finance_analysis.db $BACKUP_DIR/db_$DATE.db
# ์
๋ก๋ ํ์ผ ๋ฐฑ์
tar -czf $BACKUP_DIR/uploads_$DATE.tar.gz /var/www/soy-nv-ai/uploads
# ๋ฒกํฐ DB ๋ฐฑ์
tar -czf $BACKUP_DIR/vector_db_$DATE.tar.gz /var/www/soy-nv-ai/vector_db
# ์ค๋๋ ๋ฐฑ์
์ญ์ (30์ผ ์ด์)
find $BACKUP_DIR -type f -mtime +30 -delete
echo "Backup completed: $DATE"
2. ๋ฐฑ์ ์คํฌ๋ฆฝํธ ์คํ ๊ถํ ๋ถ์ฌ
chmod +x /var/www/soy-nv-ai/backup.sh
3. Cron์ผ๋ก ์๋ ๋ฐฑ์ ์ค์
# Crontab ํธ์ง
crontab -e
# ๋งค์ผ ์๋ฒฝ 2์์ ๋ฐฑ์
์คํ
0 2 * * * /var/www/soy-nv-ai/backup.sh >> /var/log/soy-nv-ai-backup.log 2>&1
๋ชจ๋ํฐ๋ง ์ค์
1. ์๋ฒ ๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง
# htop ์ค์น (์ด๋ฏธ ์ค์น๋จ)
htop
# ๋๋ ๊ธฐ๋ณธ top
top
2. ๋์คํฌ ์ฌ์ฉ๋ ํ์ธ
df -h
du -sh /var/www/soy-nv-ai/*
3. ์ธ๋ถ ๋ชจ๋ํฐ๋ง ์๋น์ค (์ ํ์ฌํญ)
Uptime Robot (๋ฌด๋ฃ):
- https://uptimerobot.com/
- 5๋ถ๋ง๋ค ์๋ฒ ์ํ ํ์ธ
- ๋ค์ดํ์ ์๋ฆผ
Pingdom:
- https://www.pingdom.com/
- ๋ ์์ธํ ๋ชจ๋ํฐ๋ง
๋ฌธ์ ํด๊ฒฐ
1. ์๋น์ค๊ฐ ์์๋์ง ์๋ ๊ฒฝ์ฐ
# ์๋น์ค ์ํ ํ์ธ
sudo systemctl status soy-nv-ai
# ๋ก๊ทธ ํ์ธ
sudo journalctl -u soy-nv-ai -n 100
# ์๋ ์คํ์ผ๋ก ์ค๋ฅ ํ์ธ
cd /var/www/soy-nv-ai
source venv/bin/activate
python run.py
2. Ollama ์ฐ๊ฒฐ ์ค๋ฅ
# Ollama ์๋น์ค ์ํ ํ์ธ
sudo systemctl status ollama
# Ollama ์ฌ์์
sudo systemctl restart ollama
# Ollama ๋ก๊ทธ ํ์ธ
sudo journalctl -u ollama -n 50
# Ollama ํฌํธ ํ์ธ
netstat -tlnp | grep 11434
3. Nginx ์ค๋ฅ
# Nginx ์ค์ ํ
์คํธ
sudo nginx -t
# Nginx ๋ก๊ทธ ํ์ธ
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/soy-nv-ai-error.log
4. ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ
# ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ํ์ธ
free -h
# ํ๋ก์ธ์ค๋ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
ps aux --sort=-%mem | head
# ํ์์ ์๋ฒ ์ฌ์์
sudo reboot
5. ๋์คํฌ ๊ณต๊ฐ ๋ถ์กฑ
# ๋์คํฌ ์ฌ์ฉ๋ ํ์ธ
df -h
# ํฐ ํ์ผ ์ฐพ๊ธฐ
du -h /var/www/soy-nv-ai | sort -rh | head -20
# ๋ก๊ทธ ํ์ผ ์ ๋ฆฌ
sudo journalctl --vacuum-time=7d # 7์ผ ์ด์ ๋ ๋ก๊ทธ ์ญ์
6. ํฌํธ ์ถฉ๋
# ํฌํธ ์ฌ์ฉ ํ์ธ
sudo netstat -tlnp | grep 5001
sudo lsof -i :5001
# ํ๋ก์ธ์ค ์ข
๋ฃ
sudo kill -9 PID
๋ฐฐํฌ ํ ์ฒดํฌ๋ฆฌ์คํธ
- ์๋ฒ ์ ์ ํ์ธ
- Ollama ์ค์น ๋ฐ ๋ชจ๋ธ ๋ค์ด๋ก๋ ํ์ธ
- ํ๋ก์ ํธ ํ์ผ ์ ๋ก๋ ์๋ฃ
- ๊ฐ์ํ๊ฒฝ ์ค์ ๋ฐ ์์กด์ฑ ์ค์น ์๋ฃ
- ํ๊ฒฝ ๋ณ์ ์ค์ ์๋ฃ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ ์๋ฃ
- Nginx ์ค์ ๋ฐ ํ ์คํธ ์๋ฃ
- SSL ์ธ์ฆ์ ์ค์น ์๋ฃ (๋๋ฉ์ธ ์๋ ๊ฒฝ์ฐ)
- systemd ์๋น์ค ์ค์ ๋ฐ ์๋ ์์ ํ์ธ
- ๋ฐฑ์ ์คํฌ๋ฆฝํธ ์ค์ ์๋ฃ
- ๋ฐฉํ๋ฒฝ ์ค์ ํ์ธ
- ์น์ฌ์ดํธ ์ ์ ํ ์คํธ
- ํ์ผ ์ ๋ก๋ ๊ธฐ๋ฅ ํ ์คํธ
- AI ์ฑํ ๊ธฐ๋ฅ ํ ์คํธ
- ๋ชจ๋ํฐ๋ง ์ค์ ์๋ฃ
์ ์ฉํ ๋ช ๋ น์ด ๋ชจ์
# ์๋น์ค ๊ด๋ฆฌ
sudo systemctl start/stop/restart/status soy-nv-ai
sudo systemctl start/stop/restart/status ollama
sudo systemctl start/stop/restart/status nginx
# ๋ก๊ทธ ํ์ธ
sudo journalctl -u soy-nv-ai -f
sudo journalctl -u ollama -f
sudo tail -f /var/log/nginx/soy-nv-ai-error.log
# ํ๋ก์ธ์ค ํ์ธ
ps aux | grep python
ps aux | grep ollama
# ํฌํธ ํ์ธ
netstat -tlnp | grep 5001
netstat -tlnp | grep 11434
# ๋์คํฌ/๋ฉ๋ชจ๋ฆฌ ํ์ธ
df -h
free -h
htop
# ๋ฐฑ์
์คํ
/var/www/soy-nv-ai/backup.sh
์ถ๊ฐ ์ต์ ํ
1. Gunicorn ์ฌ์ฉ (์ ํ์ฌํญ)
Flask ๊ฐ๋ฐ ์๋ฒ ๋์ Gunicorn ์ฌ์ฉ ๊ถ์ฅ:
# Gunicorn ์ค์น
pip install gunicorn
# systemd ์๋น์ค ํ์ผ ์์
ExecStart=/var/www/soy-nv-ai/venv/bin/gunicorn \
--bind 127.0.0.1:5001 \
--workers 4 \
--timeout 600 \
--access-logfile - \
--error-logfile - \
run:app
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
SQLite ๋์ PostgreSQL ์ฌ์ฉ ๊ณ ๋ ค (๋๊ท๋ชจ ์ฌ์ฉ์):
# PostgreSQL ์ค์น
sudo apt install postgresql postgresql-contrib
# requirements.txt์ ์ถ๊ฐ
# psycopg2-binary==2.9.9
3. CDN ์ค์
Cloudflare ์ฌ์ฉ (๋ฌด๋ฃ):
- https://www.cloudflare.com/
- ๋๋ฉ์ธ DNS๋ฅผ Cloudflare๋ก ๋ณ๊ฒฝ
- ์บ์ฑ ๋ฐ DDoS ๋ณดํธ
์ง์ ๋ฐ ๋์๋ง
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด:
- ์๋ฒ ๋ก๊ทธ ํ์ธ
- Nginx ๋ก๊ทธ ํ์ธ
- systemd ์๋น์ค ๋ก๊ทธ ํ์ธ
- DigitalOcean ๋ฌธ์ ์ฐธ์กฐ: https://docs.digitalocean.com/
๋ฐฐํฌ ์๋ฃ ํ ์น์ฌ์ดํธ ์ ์:
- HTTP: http://YOUR_SERVER_IP ๋๋ http://YOUR_DOMAIN.com
- HTTPS: https://YOUR_DOMAIN.com (SSL ์ค์ ํ)
์ถํํฉ๋๋ค! ๋ฐฐํฌ๊ฐ ์๋ฃ๋์์ต๋๋ค! ๐