-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy_script.sh
More file actions
89 lines (75 loc) · 3.43 KB
/
deploy_script.sh
File metadata and controls
89 lines (75 loc) · 3.43 KB
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
#!/bin/bash
# ----------------------------------------------------------------------
# SCRIPT DE DEPLOY AUTOMATIZADO PARA VECTOR API (Debian 12)
# Autor: Leonardo Escóssio
# Descrição: Automatiza a instalação de dependências, PostgreSQL/pgvector,
# criação de usuário/banco e configuração do Systemd.
# ----------------------------------------------------------------------
# Variáveis de Configuração (EDITAR ANTES DE RODAR)
DB_USER="vector_user"
DB_PASS="sua_senha_segura_aqui"
DB_NAME="vector_db"
PROJECT_DIR="/opt/vector-api"
SERVICE_NAME="vector-api"
API_PORT="8000"
# 1. Instalação de Dependências Essenciais
echo "--- 1. Instalando dependências essenciais (Python, PostgreSQL) ---"
sudo apt update
sudo apt install -y python3.11 python3.11-venv postgresql postgresql-contrib apache2
# 2. Instalação do pgvector (Assumindo PostgreSQL 15)
echo "--- 2. Instalando pgvector ---"
# O pacote pode variar. Tentativa para PG 15.
sudo apt install -y postgresql-15-pgvector || echo "AVISO: Falha ao instalar pgvector via apt. Verifique a versão do seu PG."
# 3. Configuração do PostgreSQL
echo "--- 3. Configurando PostgreSQL ---"
# Criação de usuário e banco de dados
sudo -u postgres psql -tc "SELECT 1 FROM pg_user WHERE usename = '$DB_USER'" | grep -q 1 || \
sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';"
sudo -u postgres psql -tc "SELECT 1 FROM pg_database WHERE datname = '$DB_NAME'" | grep -q 1 || \
sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;"
# Habilitar a extensão vector
sudo -u postgres psql -d $DB_NAME -c "CREATE EXTENSION IF NOT EXISTS vector;"
# 4. Configuração da Aplicação Python
echo "--- 4. Configurando Aplicação Python ---"
sudo mkdir -p $PROJECT_DIR
sudo chown -R $USER:$USER $PROJECT_DIR # Mudar dono para o usuário atual para facilitar o deploy do código
# Criar ambiente virtual e instalar dependências (assumindo requirements.txt no diretório)
cd $PROJECT_DIR
python3.11 -m venv venv
source venv/bin/activate
# pip install -r requirements.txt # Descomentar após copiar o código e requirements.txt
# Criar arquivo .env (O usuário deve preencher com o token da OpenAI)
echo "--- 5. Criando arquivo .env (Preencha com o token da OpenAI) ---"
cat << EOF > $PROJECT_DIR/.env
OPENAI_API_KEY="sk-SEU-TOKEN-AQUI"
DB_HOST="localhost"
DB_NAME="$DB_NAME"
DB_USER="$DB_USER"
DB_PASS="$DB_PASS"
EOF
# 6. Configuração do Systemd
echo "--- 6. Configurando Systemd ---"
cat << EOF | sudo tee /etc/systemd/system/$SERVICE_NAME.service
[Unit]
Description=Vector API - Memória de Longo Prazo
After=network.target postgresql.service
[Service]
User=$DB_USER
WorkingDirectory=$PROJECT_DIR
EnvironmentFile=$PROJECT_DIR/.env
ExecStart=$PROJECT_DIR/venv/bin/uvicorn main:app --host 0.0.0.0 --port $API_PORT
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 7. Finalização do Serviço
echo "--- 7. Habilitando e Iniciando o Serviço ---"
sudo systemctl daemon-reload
sudo systemctl enable $SERVICE_NAME.service
# sudo systemctl start $SERVICE_NAME.service # Não iniciar automaticamente, pois o código ainda não foi copiado
echo "✅ Deploy Script Concluído!"
echo "Próximos passos:"
echo "1. Copie o código da API (main.py, requirements.txt) para $PROJECT_DIR"
echo "2. Edite $PROJECT_DIR/.env e insira o token da OpenAI e a senha do DB."
echo "3. Rode 'sudo systemctl start $SERVICE_NAME.service'"
echo "4. Configure o Proxy Reverso no Apache (veja SETUP_GUIDE.md)."