SOY NV AI
λ©νλ°μ΄ν° μμ± κΈ°λ₯ κ°μ : κΈ°μ‘΄ λ©νλ°μ΄ν° λ³ν© λ° νμ°¨ μ 보 μ μ§
d234e06
| # SOY NV AI λ°°ν¬ μ€ν¬λ¦½νΈ | |
| # μ¬μ©λ²: bash deploy.sh | |
| set -e # μ€λ₯ λ°μ μ μ€ν¬λ¦½νΈ μ€λ¨ | |
| echo "==========================================" | |
| echo "SOY NV AI λ°°ν¬ μ€ν¬λ¦½νΈ" | |
| echo "==========================================" | |
| # μμ μ μ | |
| RED='\033[0;31m' | |
| GREEN='\033[0;32m' | |
| YELLOW='\033[1;33m' | |
| NC='\033[0m' # No Color | |
| # λ³μ μ€μ | |
| PROJECT_DIR="/var/www/soy-nv-ai" | |
| VENV_DIR="$PROJECT_DIR/venv" | |
| SERVICE_NAME="soy-nv-ai" | |
| # ν¨μ μ μ | |
| print_success() { | |
| echo -e "${GREEN}β $1${NC}" | |
| } | |
| print_error() { | |
| echo -e "${RED}β $1${NC}" | |
| } | |
| print_info() { | |
| echo -e "${YELLOW}βΉ $1${NC}" | |
| } | |
| # 1. νλ‘μ νΈ λλ ν 리 νμΈ | |
| echo "" | |
| print_info "1. νλ‘μ νΈ λλ ν 리 νμΈ..." | |
| if [ ! -d "$PROJECT_DIR" ]; then | |
| print_error "νλ‘μ νΈ λλ ν 리λ₯Ό μ°Ύμ μ μμ΅λλ€: $PROJECT_DIR" | |
| exit 1 | |
| fi | |
| print_success "νλ‘μ νΈ λλ ν 리 νμΈ μλ£" | |
| # 2. κ°μνκ²½ νμΈ λ° μμ± | |
| echo "" | |
| print_info "2. κ°μνκ²½ νμΈ..." | |
| if [ ! -d "$VENV_DIR" ]; then | |
| print_info "κ°μνκ²½μ΄ μμ΅λλ€. μμ± μ€..." | |
| python3 -m venv "$VENV_DIR" | |
| print_success "κ°μνκ²½ μμ± μλ£" | |
| else | |
| print_success "κ°μνκ²½ νμΈ μλ£" | |
| fi | |
| # 3. κ°μνκ²½ νμ±ν λ° μμ‘΄μ± μ€μΉ | |
| echo "" | |
| print_info "3. μμ‘΄μ± μ€μΉ..." | |
| source "$VENV_DIR/bin/activate" | |
| pip install --upgrade pip --quiet | |
| pip install -r "$PROJECT_DIR/requirements.txt" --quiet | |
| print_success "μμ‘΄μ± μ€μΉ μλ£" | |
| # 4. νμν λλ ν 리 μμ± | |
| echo "" | |
| print_info "4. νμν λλ ν 리 μμ±..." | |
| mkdir -p "$PROJECT_DIR/instance" | |
| mkdir -p "$PROJECT_DIR/uploads" | |
| mkdir -p "$PROJECT_DIR/vector_db" | |
| mkdir -p "$PROJECT_DIR/knowledge_graphs" | |
| mkdir -p "$PROJECT_DIR/logs" | |
| print_success "λλ ν 리 μμ± μλ£" | |
| # 5. λ°μ΄ν°λ² μ΄μ€ μ΄κΈ°ν | |
| echo "" | |
| print_info "5. λ°μ΄ν°λ² μ΄μ€ μ΄κΈ°ν..." | |
| cd "$PROJECT_DIR" | |
| python -c "from app import create_app; app = create_app(); app.app_context().push(); from app.database import db; db.create_all(); print('Database initialized')" 2>/dev/null || print_info "λ°μ΄ν°λ² μ΄μ€κ° μ΄λ―Έ μ‘΄μ¬νκ±°λ μ΄κΈ°ν μ€ μ€λ₯ λ°μ (무μ κ°λ₯)" | |
| print_success "λ°μ΄ν°λ² μ΄μ€ νμΈ μλ£" | |
| # 6. κΆν μ€μ | |
| echo "" | |
| print_info "6. κΆν μ€μ ..." | |
| chmod -R 755 "$PROJECT_DIR" | |
| chmod -R 775 "$PROJECT_DIR/uploads" 2>/dev/null || true | |
| chmod -R 775 "$PROJECT_DIR/instance" 2>/dev/null || true | |
| chmod -R 775 "$PROJECT_DIR/vector_db" 2>/dev/null || true | |
| print_success "κΆν μ€μ μλ£" | |
| # 7. .env νμΌ νμΈ | |
| echo "" | |
| print_info "7. νκ²½ λ³μ νμΌ νμΈ..." | |
| if [ ! -f "$PROJECT_DIR/.env" ]; then | |
| print_error ".env νμΌμ΄ μμ΅λλ€!" | |
| print_info ".env νμΌμ μμ±ν΄μ£ΌμΈμ." | |
| print_info "μμ:" | |
| echo "SECRET_KEY=your-secret-key" | |
| echo "OLLAMA_BASE_URL=http://localhost:11434" | |
| echo "FLASK_ENV=production" | |
| else | |
| print_success ".env νμΌ νμΈ μλ£" | |
| fi | |
| # 8. systemd μλΉμ€ νμΈ | |
| echo "" | |
| print_info "8. systemd μλΉμ€ νμΈ..." | |
| if systemctl is-active --quiet "$SERVICE_NAME"; then | |
| print_info "μλΉμ€κ° μ€ν μ€μ λλ€. μ¬μμν©λλ€..." | |
| sudo systemctl restart "$SERVICE_NAME" | |
| print_success "μλΉμ€ μ¬μμ μλ£" | |
| elif systemctl is-enabled --quiet "$SERVICE_NAME" 2>/dev/null; then | |
| print_info "μλΉμ€λ₯Ό μμν©λλ€..." | |
| sudo systemctl start "$SERVICE_NAME" | |
| print_success "μλΉμ€ μμ μλ£" | |
| else | |
| print_info "μλΉμ€κ° μ€μ λμ§ μμμ΅λλ€." | |
| print_info "λ€μ λͺ λ Ήμ΄λ‘ μλΉμ€λ₯Ό μ€μ νμΈμ:" | |
| echo "sudo systemctl enable $SERVICE_NAME" | |
| echo "sudo systemctl start $SERVICE_NAME" | |
| fi | |
| # 9. μλΉμ€ μν νμΈ | |
| echo "" | |
| print_info "9. μλΉμ€ μν νμΈ..." | |
| sleep 2 | |
| if systemctl is-active --quiet "$SERVICE_NAME"; then | |
| print_success "μλΉμ€κ° μ μμ μΌλ‘ μ€ν μ€μ λλ€!" | |
| sudo systemctl status "$SERVICE_NAME" --no-pager -l | |
| else | |
| print_error "μλΉμ€κ° μ€νλμ§ μμμ΅λλ€!" | |
| print_info "λ‘κ·Έλ₯Ό νμΈνμΈμ:" | |
| echo "sudo journalctl -u $SERVICE_NAME -n 50" | |
| fi | |
| # 10. Nginx νμΈ | |
| echo "" | |
| print_info "10. Nginx μν νμΈ..." | |
| if systemctl is-active --quiet nginx; then | |
| print_success "Nginxκ° μ€ν μ€μ λλ€" | |
| sudo nginx -t | |
| else | |
| print_info "Nginxκ° μ€νλμ§ μμμ΅λλ€" | |
| fi | |
| echo "" | |
| echo "==========================================" | |
| print_success "λ°°ν¬ μ€ν¬λ¦½νΈ μ€ν μλ£!" | |
| echo "==========================================" | |
| echo "" | |
| print_info "λ€μ λ¨κ³:" | |
| echo "1. μλΉμ€ λ‘κ·Έ νμΈ: sudo journalctl -u $SERVICE_NAME -f" | |
| echo "2. μΉμ¬μ΄νΈ μ μ ν μ€νΈ: http://YOUR_SERVER_IP" | |
| echo "3. Nginx λ‘κ·Έ νμΈ: sudo tail -f /var/log/nginx/soy-nv-ai-error.log" | |
| echo "" | |