Files
App-Estoque-LiberiKids/scripts/deploy-servidor.sh
2025-11-29 21:31:52 -03:00

158 lines
5.3 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 🚀 Script de Deploy Automático - Liberi Kids
# Deploy no servidor local com PM2
set -e # Parar em caso de erro
# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}🚀 Deploy Automático - Liberi Kids${NC}"
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
# Função para verificar se comando existe
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# 1. Verificar Node.js
echo -e "${YELLOW}📦 Verificando Node.js...${NC}"
if ! command_exists node; then
echo -e "${RED}❌ Node.js não encontrado!${NC}"
echo -e "Instale com: ${BLUE}curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - && sudo apt-get install -y nodejs${NC}"
exit 1
fi
echo -e "${GREEN}✅ Node.js $(node --version) encontrado${NC}"
echo ""
# 2. Verificar PM2
echo -e "${YELLOW}📦 Verificando PM2...${NC}"
if ! command_exists pm2; then
echo -e "${YELLOW}⚠️ PM2 não encontrado. Instalando...${NC}"
sudo npm install -g pm2
echo -e "${GREEN}✅ PM2 instalado com sucesso${NC}"
else
echo -e "${GREEN}✅ PM2 $(pm2 --version) encontrado${NC}"
fi
echo ""
# 3. Verificar arquivo .env
echo -e "${YELLOW}🔧 Verificando configurações...${NC}"
if [ ! -f ".env" ]; then
echo -e "${RED}❌ Arquivo .env não encontrado!${NC}"
if [ -f ".env.example" ]; then
echo -e "${YELLOW}Criando .env a partir do .env.example...${NC}"
cp .env.example .env
echo -e "${YELLOW}⚠️ ATENÇÃO: Configure o arquivo .env com suas credenciais!${NC}"
echo -e "Execute: ${BLUE}nano .env${NC}"
exit 1
else
echo -e "${RED}Nem .env nem .env.example encontrados!${NC}"
exit 1
fi
else
echo -e "${GREEN}✅ Arquivo .env encontrado${NC}"
fi
echo ""
# 4. Instalar dependências do backend
echo -e "${YELLOW}📦 Instalando dependências do backend...${NC}"
npm install
echo -e "${GREEN}✅ Dependências do backend instaladas${NC}"
echo ""
# 5. Instalar dependências do frontend
echo -e "${YELLOW}📦 Instalando dependências do frontend...${NC}"
cd client
npm install
echo -e "${GREEN}✅ Dependências do frontend instaladas${NC}"
echo ""
# 6. Build do frontend
echo -e "${YELLOW}🔨 Fazendo build do frontend...${NC}"
npm run build
cd ..
echo -e "${GREEN}✅ Build do frontend concluído${NC}"
echo ""
# 7. Criar diretório de logs
echo -e "${YELLOW}📁 Criando diretórios necessários...${NC}"
mkdir -p logs
mkdir -p uploads
echo -e "${GREEN}✅ Diretórios criados${NC}"
echo ""
# 8. Parar processo anterior (se existir)
echo -e "${YELLOW}🛑 Parando processos anteriores...${NC}"
if pm2 list | grep -q "liberi-kids-estoque"; then
pm2 stop liberi-kids-estoque
pm2 delete liberi-kids-estoque
echo -e "${GREEN}✅ Processo anterior removido${NC}"
else
echo -e "${BLUE} Nenhum processo anterior encontrado${NC}"
fi
echo ""
# 9. Iniciar com PM2
echo -e "${YELLOW}🚀 Iniciando aplicação com PM2...${NC}"
pm2 start ecosystem.config.js
echo -e "${GREEN}✅ Aplicação iniciada${NC}"
echo ""
# 10. Salvar configuração PM2
echo -e "${YELLOW}💾 Salvando configuração do PM2...${NC}"
pm2 save
echo -e "${GREEN}✅ Configuração salva${NC}"
echo ""
# 11. Verificar status
echo -e "${YELLOW}📊 Verificando status...${NC}"
pm2 status
echo ""
# 12. Configurar auto-start (opcional)
echo -e "${YELLOW}🔄 Deseja configurar inicialização automática no boot? (s/n)${NC}"
read -r resposta
if [ "$resposta" = "s" ] || [ "$resposta" = "S" ]; then
echo -e "${YELLOW}Configurando auto-start...${NC}"
pm2 startup
echo ""
echo -e "${YELLOW}⚠️ IMPORTANTE: Execute o comando mostrado acima com sudo!${NC}"
echo -e "Depois execute: ${BLUE}pm2 save${NC}"
fi
echo ""
# 13. Verificar porta
PORT=$(grep "^PORT=" .env | cut -d '=' -f2 || echo "5000")
PORT=${PORT:-5000}
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}✅ Deploy concluído com sucesso!${NC}"
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
echo -e "${GREEN}📍 Aplicação rodando em:${NC}"
echo -e " ${BLUE}http://localhost:${PORT}${NC}"
echo -e " ${BLUE}http://$(hostname -I | awk '{print $1}'):${PORT}${NC}"
echo ""
echo -e "${GREEN}📦 Catálogo público em:${NC}"
echo -e " ${BLUE}http://localhost:${PORT}/catalogo${NC}"
echo ""
echo -e "${YELLOW}📊 Comandos úteis:${NC}"
echo -e " ${BLUE}pm2 status${NC} - Ver status"
echo -e " ${BLUE}pm2 logs${NC} - Ver logs"
echo -e " ${BLUE}pm2 monit${NC} - Monitorar"
echo -e " ${BLUE}pm2 restart all${NC} - Reiniciar"
echo -e " ${BLUE}pm2 stop all${NC} - Parar"
echo ""
echo -e "${GREEN}📝 Ver logs agora:${NC}"
echo -e " ${BLUE}pm2 logs liberi-kids-estoque${NC}"
echo ""
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"