SOY NV AI
๋ฉํ๋ฐ์ดํฐ ์์ฑ ๊ธฐ๋ฅ ๊ฐ์ : ๊ธฐ์กด ๋ฉํ๋ฐ์ดํฐ ๋ณํฉ ๋ฐ ํ์ฐจ ์ ๋ณด ์ ์ง
d234e06
| # DigitalOcean ๋ฐฐํฌ ๊ฐ์ด๋ | |
| ## ๋ชฉ์ฐจ | |
| 1. [์ฌ์ ์ค๋น์ฌํญ](#์ฌ์ -์ค๋น์ฌํญ) | |
| 2. [Droplet ์์ฑ](#droplet-์์ฑ) | |
| 3. [์๋ฒ ์ด๊ธฐ ์ค์ ](#์๋ฒ-์ด๊ธฐ-์ค์ ) | |
| 4. [Ollama ์ค์น ๋ฐ ์ค์ ](#ollama-์ค์น-๋ฐ-์ค์ ) | |
| 5. [ํ๋ก์ ํธ ๋ฐฐํฌ](#ํ๋ก์ ํธ-๋ฐฐํฌ) | |
| 6. [Nginx ์ค์ ](#nginx-์ค์ ) | |
| 7. [SSL ์ธ์ฆ์ ์ค์ ](#ssl-์ธ์ฆ์-์ค์ ) | |
| 8. [systemd ์๋น์ค ์ค์ ](#systemd-์๋น์ค-์ค์ ) | |
| 9. [๋ฐฑ์ ์ค์ ](#๋ฐฑ์ -์ค์ ) | |
| 10. [๋ชจ๋ํฐ๋ง ์ค์ ](#๋ชจ๋ํฐ๋ง-์ค์ ) | |
| 11. [๋ฌธ์ ํด๊ฒฐ](#๋ฌธ์ -ํด๊ฒฐ) | |
| --- | |
| ## ์ฌ์ ์ค๋น์ฌํญ | |
| ### ํ์ํ ๊ฒ๋ค: | |
| - DigitalOcean ๊ณ์ (https://www.digitalocean.com/) | |
| - ๋๋ฉ์ธ (์ ํ์ฌํญ, ์์ผ๋ฉด ์ข์) | |
| - GitHub/GitLab ์ ์ฅ์ (๋๋ ํ๋ก์ ํธ ํ์ผ) | |
| - Gemini API ํค (์ฌ์ฉํ๋ ๊ฒฝ์ฐ) | |
| ### ์์ ๋น์ฉ: | |
| - Droplet (8GB RAM): $48/์ | |
| - ๋๋ฉ์ธ: $10-15/๋ (์ ํ์ฌํญ) | |
| - ์ด: ์ฝ $48-50/์ | |
| --- | |
| ## Droplet ์์ฑ | |
| ### 1. DigitalOcean ๋ก๊ทธ์ธ ๋ฐ Droplet ์์ฑ | |
| 1. https://www.digitalocean.com/ ์ ์ ๋ฐ ๋ก๊ทธ์ธ | |
| 2. "Create" โ "Droplets" ํด๋ฆญ | |
| 3. ๋ค์ ์ค์ ์ ํ: | |
| **์ด๋ฏธ์ง:** | |
| - 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 ํ์ฑํ (์ ํ์ฌํญ, ์ถ๊ฐ ๋น์ฉ) | |
| 4. "Create Droplet" ํด๋ฆญ | |
| ### 2. ์๋ฒ ์ ์ ์ ๋ณด ํ์ธ | |
| ์์ฑ ์๋ฃ ํ ์ด๋ฉ์ผ๋ก IP ์ฃผ์์ ์ ์ ์ ๋ณด๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค. | |
| - IP ์ฃผ์: ์) `123.45.67.89` | |
| - Root ๋น๋ฐ๋ฒํธ (๋น๋ฐ๋ฒํธ ๋ฐฉ์์ธ ๊ฒฝ์ฐ) | |
| --- | |
| ## ์๋ฒ ์ด๊ธฐ ์ค์ | |
| ### 1. SSH๋ก ์๋ฒ ์ ์ | |
| **Windows (PowerShell):** | |
| ```powershell | |
| ssh root@YOUR_SERVER_IP | |
| ``` | |
| **Mac/Linux:** | |
| ```bash | |
| ssh root@YOUR_SERVER_IP | |
| ``` | |
| ### 2. ์์คํ ์ ๋ฐ์ดํธ | |
| ```bash | |
| # ์์คํ ์ ๋ฐ์ดํธ | |
| 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. ๋ฐฉํ๋ฒฝ ์ค์ | |
| ```bash | |
| # UFW ๋ฐฉํ๋ฒฝ ํ์ฑํ | |
| ufw allow OpenSSH | |
| ufw allow 'Nginx Full' | |
| ufw allow 11434/tcp # Ollama ํฌํธ | |
| ufw enable | |
| ufw status | |
| ``` | |
| ### 4. ์ฌ์ฉ์ ์์ฑ (์ ํ์ฌํญ, ๋ณด์์ ์ํด ๊ถ์ฅ) | |
| ```bash | |
| # ์ ์ฌ์ฉ์ ์์ฑ | |
| 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 ์ค์น | |
| ```bash | |
| # Ollama ์ค์น ์คํฌ๋ฆฝํธ ์คํ | |
| curl -fsSL https://ollama.com/install.sh | sh | |
| # Ollama ์๋น์ค ํ์ธ | |
| systemctl status ollama | |
| # Ollama ์๋ ์์ ์ค์ | |
| systemctl enable ollama | |
| ``` | |
| ### 2. Ollama ๋ชจ๋ธ ๋ค์ด๋ก๋ | |
| ```bash | |
| # ์ฌ์ฉํ ๋ชจ๋ธ ๋ค์ด๋ก๋ (์: llama2) | |
| ollama pull llama2 | |
| # ๋๋ ๋ค๋ฅธ ๋ชจ๋ธ | |
| # ollama pull mistral | |
| # ollama pull qwen | |
| # ์ค์น๋ ๋ชจ๋ธ ํ์ธ | |
| ollama list | |
| ``` | |
| ### 3. Ollama ์๋น์ค ํ์ธ | |
| ```bash | |
| # Ollama๊ฐ ์ ์ ์๋ํ๋์ง ํ์ธ | |
| curl http://localhost:11434/api/tags | |
| # ์๋น์ค ์ฌ์์ | |
| systemctl restart ollama | |
| ``` | |
| --- | |
| ## ํ๋ก์ ํธ ๋ฐฐํฌ | |
| ### 1. ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ์์ฑ | |
| ```bash | |
| # ํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ | |
| cd ~ | |
| # ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ์์ฑ | |
| mkdir -p /var/www | |
| cd /var/www | |
| # ์์ ๊ถ ์ค์ (deploy ์ฌ์ฉ์ ์ฌ์ฉ ์) | |
| # chown -R deploy:deploy /var/www | |
| ``` | |
| ### 2. ํ๋ก์ ํธ ํ์ผ ์ ๋ก๋ | |
| **๋ฐฉ๋ฒ 1: Git ์ฌ์ฉ (๊ถ์ฅ)** | |
| ```bash | |
| # 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)** | |
| ```powershell | |
| # ํ๋ก์ ํธ ํด๋ ์ ์ฒด ์ ๋ก๋ | |
| scp -r "D:\SOY NV AI\*" deploy@YOUR_SERVER_IP:/var/www/soy-nv-ai/ | |
| ``` | |
| ### 3. ๊ฐ์ํ๊ฒฝ ์ค์ | |
| ```bash | |
| 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. ํ๊ฒฝ ๋ณ์ ์ค์ | |
| ```bash | |
| # .env ํ์ผ ์์ฑ | |
| nano .env | |
| ``` | |
| **.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 ์์ฑ ๋ฐฉ๋ฒ:** | |
| ```bash | |
| python3 -c "import secrets; print(secrets.token_hex(32))" | |
| ``` | |
| ### 5. ๋๋ ํ ๋ฆฌ ๊ถํ ์ค์ | |
| ```bash | |
| # ํ์ํ ๋๋ ํ ๋ฆฌ ์์ฑ | |
| 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. ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ | |
| ```bash | |
| # ๊ฐ์ํ๊ฒฝ ํ์ฑํ | |
| 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 | |
| ``` | |
| **๋ค๋ฅธ ํฐ๋ฏธ๋์์ ํ ์คํธ:** | |
| ```bash | |
| curl http://localhost:5001 | |
| ``` | |
| ์ ์ ์๋ํ๋ฉด `Ctrl+C`๋ก ์ค์งํฉ๋๋ค. | |
| --- | |
| ## Nginx ์ค์ | |
| ### 1. Nginx ์ค์ ํ์ผ ์์ฑ | |
| ```bash | |
| sudo nano /etc/nginx/sites-available/soy-nv-ai | |
| ``` | |
| **์ค์ ํ์ผ ๋ด์ฉ:** | |
| ```nginx | |
| 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. ์ค์ ํ์ผ ํ์ฑํ | |
| ```bash | |
| # ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฑ | |
| 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. ๋ฐฉํ๋ฒฝ ํ์ธ | |
| ```bash | |
| # Nginx ํฌํธ ํ์ธ | |
| sudo ufw status | |
| ``` | |
| --- | |
| ## SSL ์ธ์ฆ์ ์ค์ | |
| ### 1. Let's Encrypt SSL ์ธ์ฆ์ ์ค์น | |
| **๋๋ฉ์ธ์ด ์๋ ๊ฒฝ์ฐ:** | |
| ```bash | |
| # Certbot์ผ๋ก SSL ์ธ์ฆ์ ๋ฐ๊ธ | |
| sudo certbot --nginx -d YOUR_DOMAIN.com -d www.YOUR_DOMAIN.com | |
| # ์๋ ๊ฐฑ์ ํ ์คํธ | |
| sudo certbot renew --dry-run | |
| ``` | |
| **๋๋ฉ์ธ์ด ์๋ ๊ฒฝ์ฐ (IP๋ง ์ฌ์ฉ):** | |
| - SSL ์ธ์ฆ์๋ ๋ฐ๊ธํ ์ ์์ต๋๋ค | |
| - HTTP๋ก๋ง ์ ์ ๊ฐ๋ฅ (๋ณด์์ ๊ถ์ฅํ์ง ์์) | |
| - ๋ด๋ถ ๋คํธ์ํฌ๋ VPN ์ฌ์ฉ ๊ณ ๋ ค | |
| ### 2. ์๋ ๊ฐฑ์ ์ค์ | |
| ```bash | |
| # Certbot ์๋ ๊ฐฑ์ ์ ์ด๋ฏธ systemd ํ์ด๋จธ๋ก ์ค์ ๋จ | |
| sudo systemctl status certbot.timer | |
| ``` | |
| --- | |
| ## systemd ์๋น์ค ์ค์ | |
| ### 1. ์๋น์ค ํ์ผ ์์ฑ | |
| ```bash | |
| sudo nano /etc/systemd/system/soy-nv-ai.service | |
| ``` | |
| **์๋น์ค ํ์ผ ๋ด์ฉ:** | |
| ```ini | |
| [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. ์๋น์ค ํ์ฑํ ๋ฐ ์์ | |
| ```bash | |
| # 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. ์๋น์ค ๊ด๋ฆฌ ๋ช ๋ น์ด | |
| ```bash | |
| # ์๋น์ค ์์ | |
| 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. ๋ฐฑ์ ์คํฌ๋ฆฝํธ ์์ฑ | |
| ```bash | |
| nano /var/www/soy-nv-ai/backup.sh | |
| ``` | |
| **๋ฐฑ์ ์คํฌ๋ฆฝํธ ๋ด์ฉ:** | |
| ```bash | |
| #!/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. ๋ฐฑ์ ์คํฌ๋ฆฝํธ ์คํ ๊ถํ ๋ถ์ฌ | |
| ```bash | |
| chmod +x /var/www/soy-nv-ai/backup.sh | |
| ``` | |
| ### 3. Cron์ผ๋ก ์๋ ๋ฐฑ์ ์ค์ | |
| ```bash | |
| # Crontab ํธ์ง | |
| crontab -e | |
| # ๋งค์ผ ์๋ฒฝ 2์์ ๋ฐฑ์ ์คํ | |
| 0 2 * * * /var/www/soy-nv-ai/backup.sh >> /var/log/soy-nv-ai-backup.log 2>&1 | |
| ``` | |
| --- | |
| ## ๋ชจ๋ํฐ๋ง ์ค์ | |
| ### 1. ์๋ฒ ๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง | |
| ```bash | |
| # htop ์ค์น (์ด๋ฏธ ์ค์น๋จ) | |
| htop | |
| # ๋๋ ๊ธฐ๋ณธ top | |
| top | |
| ``` | |
| ### 2. ๋์คํฌ ์ฌ์ฉ๋ ํ์ธ | |
| ```bash | |
| df -h | |
| du -sh /var/www/soy-nv-ai/* | |
| ``` | |
| ### 3. ์ธ๋ถ ๋ชจ๋ํฐ๋ง ์๋น์ค (์ ํ์ฌํญ) | |
| **Uptime Robot (๋ฌด๋ฃ):** | |
| - https://uptimerobot.com/ | |
| - 5๋ถ๋ง๋ค ์๋ฒ ์ํ ํ์ธ | |
| - ๋ค์ดํ์ ์๋ฆผ | |
| **Pingdom:** | |
| - https://www.pingdom.com/ | |
| - ๋ ์์ธํ ๋ชจ๋ํฐ๋ง | |
| --- | |
| ## ๋ฌธ์ ํด๊ฒฐ | |
| ### 1. ์๋น์ค๊ฐ ์์๋์ง ์๋ ๊ฒฝ์ฐ | |
| ```bash | |
| # ์๋น์ค ์ํ ํ์ธ | |
| 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 ์ฐ๊ฒฐ ์ค๋ฅ | |
| ```bash | |
| # Ollama ์๋น์ค ์ํ ํ์ธ | |
| sudo systemctl status ollama | |
| # Ollama ์ฌ์์ | |
| sudo systemctl restart ollama | |
| # Ollama ๋ก๊ทธ ํ์ธ | |
| sudo journalctl -u ollama -n 50 | |
| # Ollama ํฌํธ ํ์ธ | |
| netstat -tlnp | grep 11434 | |
| ``` | |
| ### 3. Nginx ์ค๋ฅ | |
| ```bash | |
| # 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. ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ | |
| ```bash | |
| # ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ํ์ธ | |
| free -h | |
| # ํ๋ก์ธ์ค๋ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | |
| ps aux --sort=-%mem | head | |
| # ํ์์ ์๋ฒ ์ฌ์์ | |
| sudo reboot | |
| ``` | |
| ### 5. ๋์คํฌ ๊ณต๊ฐ ๋ถ์กฑ | |
| ```bash | |
| # ๋์คํฌ ์ฌ์ฉ๋ ํ์ธ | |
| df -h | |
| # ํฐ ํ์ผ ์ฐพ๊ธฐ | |
| du -h /var/www/soy-nv-ai | sort -rh | head -20 | |
| # ๋ก๊ทธ ํ์ผ ์ ๋ฆฌ | |
| sudo journalctl --vacuum-time=7d # 7์ผ ์ด์ ๋ ๋ก๊ทธ ์ญ์ | |
| ``` | |
| ### 6. ํฌํธ ์ถฉ๋ | |
| ```bash | |
| # ํฌํธ ์ฌ์ฉ ํ์ธ | |
| sudo netstat -tlnp | grep 5001 | |
| sudo lsof -i :5001 | |
| # ํ๋ก์ธ์ค ์ข ๋ฃ | |
| sudo kill -9 PID | |
| ``` | |
| --- | |
| ## ๋ฐฐํฌ ํ ์ฒดํฌ๋ฆฌ์คํธ | |
| - [ ] ์๋ฒ ์ ์ ํ์ธ | |
| - [ ] Ollama ์ค์น ๋ฐ ๋ชจ๋ธ ๋ค์ด๋ก๋ ํ์ธ | |
| - [ ] ํ๋ก์ ํธ ํ์ผ ์ ๋ก๋ ์๋ฃ | |
| - [ ] ๊ฐ์ํ๊ฒฝ ์ค์ ๋ฐ ์์กด์ฑ ์ค์น ์๋ฃ | |
| - [ ] ํ๊ฒฝ ๋ณ์ ์ค์ ์๋ฃ | |
| - [ ] ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ ์๋ฃ | |
| - [ ] Nginx ์ค์ ๋ฐ ํ ์คํธ ์๋ฃ | |
| - [ ] SSL ์ธ์ฆ์ ์ค์น ์๋ฃ (๋๋ฉ์ธ ์๋ ๊ฒฝ์ฐ) | |
| - [ ] systemd ์๋น์ค ์ค์ ๋ฐ ์๋ ์์ ํ์ธ | |
| - [ ] ๋ฐฑ์ ์คํฌ๋ฆฝํธ ์ค์ ์๋ฃ | |
| - [ ] ๋ฐฉํ๋ฒฝ ์ค์ ํ์ธ | |
| - [ ] ์น์ฌ์ดํธ ์ ์ ํ ์คํธ | |
| - [ ] ํ์ผ ์ ๋ก๋ ๊ธฐ๋ฅ ํ ์คํธ | |
| - [ ] AI ์ฑํ ๊ธฐ๋ฅ ํ ์คํธ | |
| - [ ] ๋ชจ๋ํฐ๋ง ์ค์ ์๋ฃ | |
| --- | |
| ## ์ ์ฉํ ๋ช ๋ น์ด ๋ชจ์ | |
| ```bash | |
| # ์๋น์ค ๊ด๋ฆฌ | |
| 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 ์ฌ์ฉ ๊ถ์ฅ: | |
| ```bash | |
| # 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 ์ฌ์ฉ ๊ณ ๋ ค (๋๊ท๋ชจ ์ฌ์ฉ์): | |
| ```bash | |
| # PostgreSQL ์ค์น | |
| sudo apt install postgresql postgresql-contrib | |
| # requirements.txt์ ์ถ๊ฐ | |
| # psycopg2-binary==2.9.9 | |
| ``` | |
| ### 3. CDN ์ค์ | |
| Cloudflare ์ฌ์ฉ (๋ฌด๋ฃ): | |
| - https://www.cloudflare.com/ | |
| - ๋๋ฉ์ธ DNS๋ฅผ Cloudflare๋ก ๋ณ๊ฒฝ | |
| - ์บ์ฑ ๋ฐ DDoS ๋ณดํธ | |
| --- | |
| ## ์ง์ ๋ฐ ๋์๋ง | |
| ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด: | |
| 1. ์๋ฒ ๋ก๊ทธ ํ์ธ | |
| 2. Nginx ๋ก๊ทธ ํ์ธ | |
| 3. systemd ์๋น์ค ๋ก๊ทธ ํ์ธ | |
| 4. DigitalOcean ๋ฌธ์ ์ฐธ์กฐ: https://docs.digitalocean.com/ | |
| --- | |
| **๋ฐฐํฌ ์๋ฃ ํ ์น์ฌ์ดํธ ์ ์:** | |
| - HTTP: http://YOUR_SERVER_IP ๋๋ http://YOUR_DOMAIN.com | |
| - HTTPS: https://YOUR_DOMAIN.com (SSL ์ค์ ํ) | |
| ์ถํํฉ๋๋ค! ๋ฐฐํฌ๊ฐ ์๋ฃ๋์์ต๋๋ค! ๐ | |