186 lines
4.9 KiB
Markdown
186 lines
4.9 KiB
Markdown
# Setup do Ambiente CI/CD - Avanzato
|
|
|
|
## Arquitetura
|
|
|
|
```
|
|
+------------------------------------------------------------------+
|
|
| SEU SERVIDOR |
|
|
| |
|
|
| +-------------------+ +-------------------+ +-----------+ |
|
|
| | Git Bare Repo | | Pipeline | | Site | |
|
|
| | /var/git/site |--->| /var/ci/ |--->| Nginx | |
|
|
| | | | | | | |
|
|
| | - hooks/post-receive | - build.sh | | /var/www | |
|
|
| | - hooks/pre-receive | - deploy.sh | | | |
|
|
| +-------------------+ +-------------------+ +-----------+ |
|
|
| ^ | |
|
|
| | v |
|
|
| +-------------------+ +-------------------+ |
|
|
| | Seu Computador | | Mautic | |
|
|
| | | | mkt.avanzato | |
|
|
| | git push | | | |
|
|
| +-------------------+ +-------------------+ |
|
|
+------------------------------------------------------------------+
|
|
```
|
|
|
|
## 1. Instalar dependencias no servidor
|
|
|
|
```bash
|
|
# Atualizar sistema
|
|
apt update && apt upgrade -y
|
|
|
|
# Instalar Git
|
|
apt install -y git curl
|
|
|
|
# Instalar Node.js 20
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
|
apt install -y nodejs
|
|
|
|
# Verificar
|
|
node -v # v20.x.x
|
|
npm -v # 10.x.x
|
|
|
|
# Instalar Nginx
|
|
apt install -y nginx
|
|
|
|
# Instalar PM2 (opcional, para gerenciar processos)
|
|
npm install -g pm2
|
|
```
|
|
|
|
## 2. Criar usuario de deploy
|
|
|
|
```bash
|
|
# Criar usuario dedicado
|
|
useradd -m -s /bin/bash deploy
|
|
|
|
# Adicionar ao grupo www-data
|
|
usermod -aG www-data deploy
|
|
|
|
# Criar chave SSH (como usuario deploy)
|
|
su - deploy
|
|
ssh-keygen -t ed25519 -C "deploy" -f ~/.ssh/id_ed25519 -N ""
|
|
|
|
# Ver chave publica (para autorizar pushes)
|
|
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
|
|
```
|
|
|
|
## 3. Criar repositorio Git bare
|
|
|
|
```bash
|
|
# Criar pasta
|
|
mkdir -p /var/git/site.git
|
|
cd /var/git/site.git
|
|
git init --bare
|
|
|
|
# Permissoes
|
|
chown -R deploy:deploy /var/git/site.git
|
|
chmod -R 755 /var/git/site.git
|
|
```
|
|
|
|
## 4. Configurar hooks Git
|
|
|
|
```bash
|
|
# Copiar hooks
|
|
sudo su - deploy
|
|
cp /var/ci/hooks/post-receive /var/git/site.git/hooks/post-receive
|
|
chmod +x /var/git/site.git/hooks/post-receive
|
|
```
|
|
|
|
## 5. Configurar Nginx
|
|
|
|
```bash
|
|
# Criar config
|
|
nano /etc/nginx/sites-available/avanzato
|
|
|
|
# Ver link: CI/CD > nginx-config.conf
|
|
|
|
# Ativar
|
|
ln -s /etc/nginx/sites-available/avanzato /etc/nginx/sites-enabled/
|
|
nginx -t
|
|
systemctl reload nginx
|
|
|
|
# SSL com Let's Encrypt
|
|
certbot --nginx -d avanzato.com.br -d www.avanzato.com.br
|
|
```
|
|
|
|
## 6. Criar estrutura de pastas
|
|
|
|
```bash
|
|
mkdir -p /var/www/avanzato # Site em producao
|
|
mkdir -p /var/www/avanzato-staging # Site em staging (opcional)
|
|
mkdir -p /var/ci # Pipeline scripts
|
|
mkdir -p /var/ci/logs # Logs de build/deploy
|
|
mkdir -p /var/ci/backups # Backups automaticos
|
|
mkdir -p /var/ci/assets # Assets preservados
|
|
chown -R deploy:www-data /var/www
|
|
chmod -R 755 /var/www
|
|
```
|
|
|
|
## 7. Configurar pipeline
|
|
|
|
```bash
|
|
# Copiar scripts do pipeline
|
|
cp /var/ci/scripts/* /var/ci/
|
|
chmod +x /var/ci/*.sh
|
|
|
|
# Configurar variaveis
|
|
nano /var/ci/config.env
|
|
|
|
# Conteudo:
|
|
DEPLOY_PATH=/var/www/avanzato
|
|
STAGING_PATH=/var/www/avanzato-staging
|
|
BACKUP_PATH=/var/ci/backups
|
|
LOG_PATH=/var/ci/logs
|
|
MAUTIC_URL=https://mkt.avanzato.com.br
|
|
```
|
|
|
|
## 8. Configurar seu computador local
|
|
|
|
```bash
|
|
# Adicionar remote no seu projeto local
|
|
cd /caminho/do/projeto/avanzato-site
|
|
git remote add servidor ssh://deploy@SEU_SERVIDOR/var/git/site.git
|
|
|
|
# Testar conexao
|
|
ssh deploy@SEU_SERVIDOR "echo 'Conectado!'"
|
|
|
|
# Push inicial
|
|
git push servidor main
|
|
```
|
|
|
|
## Comandos de uso diario
|
|
|
|
| Comando | Resultado |
|
|
|---------|-----------|
|
|
| `git push servidor main` | Deploy automatico para producao |
|
|
| `git push servidor staging` | Deploy para staging |
|
|
| `ssh deploy@SERVIDOR "cat /var/ci/logs/last-deploy.log"` | Ver ultimo log |
|
|
| `ssh deploy@SERVIDOR "ls /var/ci/backups"` | Listar backups |
|
|
|
|
## Estrutura final no servidor
|
|
|
|
```
|
|
/var/
|
|
git/
|
|
site.git/ # Repo bare (recebe pushes)
|
|
hooks/
|
|
post-receive # Hook de deploy automatico
|
|
ci/
|
|
scripts/
|
|
build.sh # Compila o site
|
|
deploy.sh # Envia para producao
|
|
preserve-assets.sh # Preserva logo/imagens
|
|
backup.sh # Cria backup
|
|
hooks/
|
|
post-receive # Template do hook
|
|
logs/ # Logs de execucao
|
|
backups/ # Backups automaticos
|
|
assets/ # Assets preservados
|
|
config.env # Variaveis de ambiente
|
|
www/
|
|
avanzato/ # Site em producao
|
|
index.html
|
|
assets/
|
|
backups/ # Backups antigos
|
|
```
|