File size: 4,762 Bytes
d234e06 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
#!/bin/bash
# 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 ""
|