#!/bin/bash
# Script de implantação para o site Bio Page de Renan Peterlini
# Versão 1.0 - Abril 2025

# Definir variáveis
SITE_NAME="renanpeterlini"
SITE_DIR="/var/www/$SITE_NAME"
BACKUP_DIR="/var/backups/$SITE_NAME"
DB_NAME="renanpet_BD_BIO"
DB_USER="renanpet_renanbd"
DB_PASS="senha_segura_producao"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")

# Cores para saída
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

# Função para exibir mensagens
function log_message() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

function log_warning() {
    echo -e "${YELLOW}[AVISO]${NC} $1"
}

function log_error() {
    echo -e "${RED}[ERRO]${NC} $1"
}

# Verificar se está sendo executado como root
if [ "$EUID" -ne 0 ]; then
    log_error "Este script deve ser executado como root"
    exit 1
fi

# Criar diretório de backup se não existir
log_message "Verificando diretório de backup..."
if [ ! -d "$BACKUP_DIR" ]; then
    mkdir -p "$BACKUP_DIR"
    log_message "Diretório de backup criado: $BACKUP_DIR"
else
    log_message "Diretório de backup já existe: $BACKUP_DIR"
fi

# Fazer backup do site atual se existir
if [ -d "$SITE_DIR" ]; then
    log_message "Fazendo backup do site atual..."
    tar -czf "$BACKUP_DIR/site_backup_$TIMESTAMP.tar.gz" "$SITE_DIR"
    log_message "Backup do site concluído: $BACKUP_DIR/site_backup_$TIMESTAMP.tar.gz"
fi

# Fazer backup do banco de dados se existir
log_message "Verificando se o banco de dados existe..."
if mysql -u "$DB_USER" -p"$DB_PASS" -e "USE $DB_NAME" 2>/dev/null; then
    log_message "Fazendo backup do banco de dados..."
    mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/db_backup_$TIMESTAMP.sql"
    log_message "Backup do banco de dados concluído: $BACKUP_DIR/db_backup_$TIMESTAMP.sql"
else
    log_warning "Banco de dados não existe ou credenciais incorretas"
fi

# Criar diretório do site se não existir
log_message "Verificando diretório do site..."
if [ ! -d "$SITE_DIR" ]; then
    mkdir -p "$SITE_DIR"
    log_message "Diretório do site criado: $SITE_DIR"
else
    log_message "Diretório do site já existe: $SITE_DIR"
fi

# Copiar arquivos do site
log_message "Copiando arquivos do site..."
cp -r /tmp/site/* "$SITE_DIR/"
log_message "Arquivos copiados com sucesso"

# Definir permissões corretas
log_message "Configurando permissões..."
find "$SITE_DIR" -type d -exec chmod 755 {} \;
find "$SITE_DIR" -type f -exec chmod 644 {} \;
chown -R www-data:www-data "$SITE_DIR"
log_message "Permissões configuradas"

# Criar diretório de logs se não existir
log_message "Criando diretório de logs..."
mkdir -p "$SITE_DIR/logs"
chmod 775 "$SITE_DIR/logs"
chown www-data:www-data "$SITE_DIR/logs"
log_message "Diretório de logs criado e configurado"

# Configurar ambiente de produção
log_message "Configurando ambiente de produção..."
export APP_ENV=production
echo "export APP_ENV=production" >> /etc/apache2/envvars
log_message "Ambiente de produção configurado"

# Reiniciar servidor web
log_message "Reiniciando servidor web..."
if command -v systemctl &> /dev/null; then
    systemctl restart apache2 || systemctl restart nginx
else
    service apache2 restart || service nginx restart
fi
log_message "Servidor web reiniciado"

# Verificar se o site está acessível
log_message "Verificando se o site está acessível..."
if curl -s --head "http://localhost" | grep "200 OK" > /dev/null; then
    log_message "Site está acessível localmente"
else
    log_warning "Site não está acessível localmente, verifique a configuração do servidor web"
fi

log_message "Implantação concluída com sucesso!"
log_message "Próximos passos:"
log_message "1. Configurar domínio e SSL"
log_message "2. Verificar todas as funcionalidades em produção"
log_message "3. Configurar backups automáticos"
log_message "4. Configurar monitoramento"

exit 0
