#!/bin/bash # 🚀 Script para Deploy Automático no Servidor via SSH # Execute: ./deploy-to-server.sh usuario@servidor echo "🚀 Deploy Automático - Liberi Kids" echo "==================================" # Verificar se foi fornecido o servidor if [ -z "$1" ]; then echo "❌ Uso: ./deploy-to-server.sh usuario@servidor" echo " Exemplo: ./deploy-to-server.sh root@192.168.1.100" exit 1 fi SERVER=$1 PROJECT_DIR="app_estoque" echo "🔗 Conectando ao servidor: $SERVER" # Cores para output GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' log() { echo -e "${GREEN}[INFO]${NC} $1" } warn() { echo -e "${YELLOW}[WARN]${NC} $1" } error() { echo -e "${RED}[ERROR]${NC} $1" } # Função para executar comando no servidor run_remote() { ssh $SERVER "$1" } # Função para copiar arquivos copy_files() { log "📁 Copiando arquivos para o servidor..." rsync -avz --progress --exclude 'node_modules' --exclude '.git' --exclude 'client/node_modules' ./ $SERVER:~/$PROJECT_DIR/ if [ $? -eq 0 ]; then log "✅ Arquivos copiados com sucesso!" else error "❌ Erro ao copiar arquivos" exit 1 fi } # Função para configurar ambiente no servidor setup_environment() { log "🔧 Configurando ambiente no servidor..." run_remote " cd $PROJECT_DIR # Verificar se Node.js está instalado if ! command -v node &> /dev/null; then echo '📦 Instalando Node.js...' curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs fi # Verificar versão do Node.js NODE_VERSION=\$(node -v | cut -d'v' -f2 | cut -d'.' -f1) if [ \"\$NODE_VERSION\" -lt 18 ]; then echo '❌ Node.js versão 18+ é necessária' exit 1 fi echo '✅ Node.js \$(node -v) encontrado' # Criar arquivo .env se não existir if [ ! -f '.env' ]; then echo '📝 Criando arquivo .env...' cp .env.example .env echo '⚠️ IMPORTANTE: Configure o arquivo .env com suas credenciais!' echo ' Edite: nano .env' fi # Tornar script executável chmod +x scripts/deploy-local.sh echo '✅ Ambiente configurado!' " } # Função para fazer deploy deploy_application() { log "🚀 Fazendo deploy da aplicação..." run_remote " cd $PROJECT_DIR # Executar script de deploy ./scripts/deploy-local.sh " } # Função para verificar status check_status() { log "📊 Verificando status da aplicação..." run_remote " pm2 status echo '' echo '🌐 Aplicação disponível em:' echo ' Local: http://localhost:5000' echo ' Rede: http://\$(hostname -I | awk '{print \$1}'):5000' " } # Executar deploy completo main() { echo "" log "Iniciando deploy completo..." echo "" # Passo 1: Copiar arquivos copy_files echo "" # Passo 2: Configurar ambiente setup_environment echo "" # Passo 3: Fazer deploy deploy_application echo "" # Passo 4: Verificar status check_status echo "" log "🎉 Deploy concluído com sucesso!" echo "" warn "📝 PRÓXIMOS PASSOS:" echo "1. Configure o arquivo .env no servidor:" echo " ssh $SERVER 'cd $PROJECT_DIR && nano .env'" echo "" echo "2. Reinicie a aplicação após configurar:" echo " ssh $SERVER 'pm2 restart liberi-kids'" echo "" echo "3. Acesse a aplicação no navegador" } # Executar função principal main