chore: sincroniza projeto para gitea
This commit is contained in:
157
scripts/deploy-servidor.sh
Executable file
157
scripts/deploy-servidor.sh
Executable file
@@ -0,0 +1,157 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user