Versão inicial do site Avanzato
This commit is contained in:
@@ -0,0 +1,185 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user