6.6 KiB
6.6 KiB
🖥️ Deploy em Servidor Local - Liberi Kids
Guia completo para rodar o sistema no servidor local e manter funcionando automaticamente, mesmo após reinicializações.
📋 Pré-requisitos
# Node.js 18+
node --version
# NPM
npm --version
# PM2 (gerenciador de processos)
sudo npm install -g pm2
🚀 Método 1: PM2 (Recomendado - Mais Fácil)
1️⃣ Instalação Inicial
# 1. Entre no diretório do projeto
cd /home/tiago/Downloads/app_estoque_v1.0.0
# 2. Instale as dependências
npm install
cd client && npm install && cd ..
# 3. Configure o .env
cp .env.example .env
nano .env # Configure suas credenciais do Supabase
# 4. Faça o build do frontend
npm run build
2️⃣ Iniciar com PM2
# Inicia o servidor com PM2
pm2 start ecosystem.config.js
# Verifica o status
pm2 status
# Ver logs em tempo real
pm2 logs liberi-kids-estoque
# Ver logs específicos
pm2 logs liberi-kids-estoque --lines 100
3️⃣ Configurar Inicialização Automática
# Salva a configuração atual
pm2 save
# Configura para iniciar no boot do sistema
pm2 startup
# Execute o comando que o PM2 mostrar (algo como):
# sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u seu-usuario --hp /home/seu-usuario
4️⃣ Comandos Úteis do PM2
# Reiniciar aplicação
pm2 restart liberi-kids-estoque
# Parar aplicação
pm2 stop liberi-kids-estoque
# Remover do PM2
pm2 delete liberi-kids-estoque
# Ver informações detalhadas
pm2 show liberi-kids-estoque
# Monitorar em tempo real
pm2 monit
# Ver logs de erro
pm2 logs liberi-kids-estoque --err
# Limpar logs antigos
pm2 flush
5️⃣ Atualizar Aplicação
# 1. Faça as alterações no código
# 2. Se alterou o frontend, faça o build
cd client && npm run build && cd ..
# 3. Reinicie o PM2
pm2 restart liberi-kids-estoque
# Ou faça reload sem downtime
pm2 reload liberi-kids-estoque
🔧 Método 2: Systemd (Mais Robusto)
1️⃣ Criar Serviço Systemd
# Crie o arquivo de serviço
sudo nano /etc/systemd/system/liberi-kids.service
Conteúdo do arquivo:
[Unit]
Description=Liberi Kids - Sistema de Estoque
After=network.target
[Service]
Type=simple
User=tiago
WorkingDirectory=/home/tiago/Downloads/app_estoque_v1.0.0
Environment=NODE_ENV=production
Environment=PORT=5000
ExecStart=/usr/bin/node server-supabase.js
Restart=always
RestartSec=10
StandardOutput=append:/home/tiago/Downloads/app_estoque_v1.0.0/logs/system.log
StandardError=append:/home/tiago/Downloads/app_estoque_v1.0.0/logs/error.log
[Install]
WantedBy=multi-user.target
2️⃣ Ativar o Serviço
# Criar diretório de logs
mkdir -p logs
# Recarregar systemd
sudo systemctl daemon-reload
# Habilitar para iniciar no boot
sudo systemctl enable liberi-kids
# Iniciar o serviço
sudo systemctl start liberi-kids
# Verificar status
sudo systemctl status liberi-kids
3️⃣ Comandos do Systemd
# Ver status
sudo systemctl status liberi-kids
# Parar serviço
sudo systemctl stop liberi-kids
# Reiniciar serviço
sudo systemctl restart liberi-kids
# Ver logs
sudo journalctl -u liberi-kids -f
# Ver logs das últimas 100 linhas
sudo journalctl -u liberi-kids -n 100
# Desabilitar inicialização automática
sudo systemctl disable liberi-kids
🔥 Script de Deploy Rápido
Criei um script para facilitar o deploy. Execute:
chmod +x scripts/deploy-servidor.sh
./scripts/deploy-servidor.sh
🌐 Configurar Nginx (Opcional)
Se quiser usar um domínio ou porta 80/443:
# Instalar Nginx
sudo apt install nginx -y
# Criar configuração
sudo nano /etc/nginx/sites-available/liberi-kids
Configuração do Nginx:
server {
listen 80;
server_name seu-dominio.com; # ou IP do servidor
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# Ativar site
sudo ln -s /etc/nginx/sites-available/liberi-kids /etc/nginx/sites-enabled/
# Testar configuração
sudo nginx -t
# Reiniciar Nginx
sudo systemctl restart nginx
🔒 Configurar Firewall
# Permitir porta 5000
sudo ufw allow 5000/tcp
# Ou se usar Nginx
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Verificar status
sudo ufw status
📊 Monitoramento
Ver uso de recursos
# Com PM2
pm2 monit
# Processos
htop
# Espaço em disco
df -h
# Memória
free -h
Logs
# PM2
pm2 logs liberi-kids-estoque --lines 200
# Systemd
sudo journalctl -u liberi-kids -f
# Logs customizados
tail -f logs/pm2-error.log
tail -f logs/pm2-out.log
🔄 Backup Automático
Adicione ao crontab:
# Editar crontab
crontab -e
# Adicionar linha para backup diário às 3h da manhã
0 3 * * * cd /home/tiago/Downloads/app_estoque_v1.0.0 && ./backup-projeto-completo.sh
⚠️ Troubleshooting
Aplicação não inicia
# Verificar logs
pm2 logs liberi-kids-estoque
# Verificar se a porta está em uso
sudo lsof -i :5000
# Matar processo na porta
sudo kill -9 $(sudo lsof -t -i:5000)
# Reiniciar
pm2 restart liberi-kids-estoque
Alto uso de memória
# Reiniciar aplicação
pm2 restart liberi-kids-estoque
# Limpar cache do npm
npm cache clean --force
# Verificar processos
pm2 monit
Erros de permissão
# Dar permissões corretas
sudo chown -R $USER:$USER /home/tiago/Downloads/app_estoque_v1.0.0
# Permissões de execução
chmod +x server-supabase.js
📝 Resumo - Comandos Principais
# ✅ Iniciar aplicação
pm2 start ecosystem.config.js
# ✅ Ver status
pm2 status
# ✅ Ver logs
pm2 logs liberi-kids-estoque
# ✅ Reiniciar
pm2 restart liberi-kids-estoque
# ✅ Salvar configuração
pm2 save
# ✅ Configurar auto-inicialização
pm2 startup
# ✅ Acessar aplicação
# http://seu-ip:5000
🎯 Próximos Passos
- ✅ Sistema rodando com PM2
- ⚙️ Configurar Nginx (opcional)
- 🔒 Configurar SSL com Let's Encrypt (opcional)
- 📊 Configurar monitoramento
- 💾 Configurar backups automáticos
📞 Suporte
- Logs PM2:
pm2 logs liberi-kids-estoque - Status:
pm2 status - Monitoramento:
pm2 monit
Aplicação rodando em: http://localhost:5000 Catálogo público: http://localhost:5000/catalogo