155 lines
3.7 KiB
Bash
Executable File
155 lines
3.7 KiB
Bash
Executable File
#!/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
|