Initial commit

This commit is contained in:
Rafael Dias Martins
2026-08-31 14:10:20 -03:00
commit 8fcb5aac66
454 changed files with 60207 additions and 0 deletions
+145
View File
@@ -0,0 +1,145 @@
#!/bin/bash
# Script de Deploy para produção
# Uso: ./deploy.sh [ambiente]
# Exemplo: ./deploy.sh production
set -e # Para em caso de erro
echo "🚀 Iniciando deploy..."
# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Função para imprimir mensagens coloridas
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
print_warning() {
echo -e "${YELLOW}$1${NC}"
}
# Detectar o dono do diretório para rodar comandos como ele
DIR_OWNER=$(stat -c '%U' .)
PROJECT_DIR=$(pwd)
run_as_owner() {
su - "$DIR_OWNER" -c "cd $PROJECT_DIR && source ~/.bashrc 2>/dev/null; source ~/.profile 2>/dev/null; export NVM_DIR=\"\$HOME/.nvm\"; [ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\"; $1"
}
# Verificar se está rodando como root
if [ "$EUID" -ne 0 ]; then
print_warning "Este script precisa de sudo para configurar o nginx"
SUDO="sudo"
else
SUDO=""
fi
# 1. Atualizar código (se estiver em git)
echo ""
echo "📦 Atualizando código..."
if [ -d ".git" ]; then
run_as_owner "git pull"
print_success "Código atualizado"
else
print_warning "Não é um repositório git, pulando atualização"
fi
# 2. Instalar dependências limpas
echo ""
echo "📥 Instalando dependências com npm ci..."
if [ -f "package-lock.json" ]; then
run_as_owner "rm -rf node_modules && npm ci"
print_success "Dependências instaladas"
else
print_warning "package-lock.json não encontrado, usando npm install"
run_as_owner "npm install"
fi
# 3. Configurar nginx para uploads maiores
echo ""
echo "🌐 Configurando nginx..."
NGINX_CONF="/etc/nginx/sites-available/inglescomideiasvivas"
NGINX_BACKUP="/tmp/nginx_inglescomideiasvivas.backup"
# Verificar se o arquivo de configuração existe
if [ -f "$NGINX_CONF" ]; then
# Fazer backup
$SUDO cp "$NGINX_CONF" "$NGINX_BACKUP"
# Verificar se client_max_body_size já existe
if $SUDO grep -q "client_max_body_size" "$NGINX_CONF"; then
print_warning "client_max_body_size já configurado, atualizando para 500M..."
$SUDO sed -i 's/client_max_body_size .*/client_max_body_size 500M;/' "$NGINX_CONF"
else
# Adicionar client_max_body_size após client_body_timeout ou no bloco server
$SUDO sed -i '/server {/a \ client_max_body_size 500M;' "$NGINX_CONF"
print_success "client_max_body_size 500M adicionado ao nginx"
fi
# Testar configuração do nginx
echo "Testando configuração do nginx..."
if $SUDO nginx -t 2>&1 | grep -q "successful"; then
print_success "Configuração do nginx válida"
$SUDO systemctl reload nginx
print_success "Nginx recarregado"
else
print_error "Configuração do nginx inválida!"
echo "Restorando backup..."
$SUDO cp "$NGINX_BACKUP" "$NGINX_CONF"
$SUDO nginx -t
exit 1
fi
else
print_warning "Arquivo de configuração do nginx não encontrado em $NGINX_CONF"
echo "Você pode precisar configurar manualmente:"
echo " sudo nano $NGINX_CONF"
echo "Adicione 'client_max_body_size 500M;' no bloco server"
fi
# 4. Limpar cache do Next.js e rebuild
echo ""
echo "🔨 Limpar cache e rebuild..."
run_as_owner "rm -rf .next .next.cache"
print_success "Cache limpo"
echo "Building..."
run_as_owner "npm run build"
print_success "Build concluído"
# 5. Reiniciar PM2
echo ""
echo "🔄 Reiniciando aplicação com PM2..."
# Verificar se o app existe no PM2
if run_as_owner "pm2 list" | grep -q "iciv"; then
run_as_owner "pm2 delete iciv"
print_success "App antigo removido"
fi
run_as_owner "pm2 start ecosystem.config.js"
run_as_owner "pm2 save"
print_success "Aplicação reiniciada"
# 6. Mostrar status
echo ""
echo "📊 Status da aplicação:"
run_as_owner "pm2 list"
echo ""
echo "🎉 Deploy concluído com sucesso!"
echo ""
echo "Logs em tempo real:"
echo " pm2 logs iciv"
echo ""
echo "Para verificar logs de erro:"
echo " pm2 logs iciv --err"