Saleor Servidor Próprio: Setup GraphQL em Produção

9 min de leitura VPS E-Commerce
Saleor Servidor Próprio: Setup GraphQL em Produção

Introdução ao Deploy de E-commerce Headless com Saleor

A migração para uma arquitetura headless representa um dos avanços mais significativos na infraestrutura de e-commerce moderna. Ao separar o frontend da lógica de negócios, ganhamos flexibilidade, escalabilidade e performance. Neste tutorial técnico, abordaremos a instalação e configuração do Saleor, uma plataforma de comércio eletrônico baseada em GraphQL, em um ambiente de produção Linux. O foco é fornecer um guia prático para sysadmins e desenvolvedores que desejam implementar um saleor servidor próprio, garantindo estabilidade e segurança.

O Saleor utiliza Django como backend e React no frontend, comunicando-se via API GraphQL. Para rodar isso em produção, especialmente em uma VPS de e-commerce, precisamos dominar a orquestração de containers com Docker e Docker Compose. Este guia cobre desde o provisionamento do servidor até a validação final da infraestrutura.

Pré-requisitos e Provisionamento da VPS

Antes de iniciar o deploy Saleor Linux, é fundamental garantir que a infraestrutura base esteja sólida. Para um setup inicial de produção, recomenda-se uma instância com pelo menos 4 vCPUs e 8GB de RAM. O sistema operacional deve ser uma versão LTS recente do Ubuntu (22.04 ou 24.04) ou Debian (Bookworm), garantindo compatibilidade e suporte a longo prazo.

O primeiro passo é acessar o servidor via SSH e atualizar os pacotes do sistema para garantir que todas as bibliotecas estejam seguras e atualizadas.

sudo apt update && sudo apt upgrade -y

Em seguida, instale as ferramentas essenciais de linha de comando que serão utilizadas durante o processo de instalação do Saleor em VPS.

sudo apt install curl git wget htop tmux jq -y

Instalação do Docker e Docker Compose

O ecossistema Saleor depende inteiramente de contêineres. Portanto, o setup Saleor produção exige a instalação robusta do Docker Engine e do plugin Docker Compose. Evite instalar versões antigas do Docker diretamente via apt do repositório padrão do Ubuntu, pois podem estar desatualizadas. Utilize o script oficial ou os repositórios da Docker Inc.

Inicie a instalação do Docker seguindo os passos abaixo:

  1. Instale dependências para permitir apt usar repositórios HTTPS:
sudo apt-get install -y ca-certificates curl gnupg lsb-release
  1. Adicione a chave GPG oficial do Docker:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  1. Configure o repositório estável:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Instale o Docker Engine:
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Verifique se a instalação foi bem-sucedida executando um contêiner de teste:

sudo docker run hello-world

Configuração do Ambiente e Variáveis de Segurança

Para uma instalação segura, nunca armazene segredos (como chaves de API, senhas de banco de dados e tokens JWT) diretamente nos arquivos de configuração. Utilize um arquivo .env para gerenciar essas variáveis de ambiente.

Crie um diretório dedicado para o projeto:

mkdir ~/saleor-prod && cd ~/saleor-prod

Crie o arquivo de configuração inicial. Este arquivo conterá as credências e configurações específicas do seu ecommerce GraphQL.

nano .env

Dentro do arquivo, defina as variáveis essenciais. Certifique-se de gerar senhas aleatórias fortes para cada campo de senha.

# Configurações Gerais
COMPOSE_PROJECT_NAME=saleor-prod
SALEOR_BROWSER_API_TOKEN=seu_token_gerado_aleatoriamente
SALEOR_ENVIRONMENT=production

# Banco de Dados (PostgreSQL)
POSTGRES_DB=saleor_db
POSTGRES_USER=saleor_user
POSTGRES_PASSWORD=senha_forte_aqui
POSTGRES_PORT=5432

# Redis
REDIS_HOST=redis
REDIS_PORT=6379

# JWT Secrets
SALEOR_COOKIE_SECURE=true
SALEOR_CSRF_ENABLED=true

Defina as permissões corretas para este arquivo, garantindo que apenas o usuário atual tenha acesso:

chmod 600 .env

Criação do Arquivo docker-compose.yml

O coração da infraestrutura de um saleor servidor próprio é o arquivo docker-compose.yml. Este arquivo define os serviços necessários: a aplicação Saleor, o banco de dados PostgreSQL, o cache Redis e o Nginx para reverse proxy.

Crie o arquivo na raiz do seu diretório:

nano docker-compose.yml

Insira a seguinte configuração base. Note a utilização de volumes para persistência de dados e dependências entre serviços.

version: "3.9"

services:
  db:
    image: postgres:15-alpine
    restart: always
    environment:
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - db_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    restart: always
    command: redis-server --appendonly yes
    volumes:
      - redis_data:/data

  saleor:
    image: ghcr.io/saleor/saleor:latest
    restart: always
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started
    environment:
      - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
      - SECRET_KEY=${SALEOR_COOKIE_SECURE}
      - ALLOWED_HOSTS=localhost,127.0.0.1,seu_dominio.com
      - SITE_URL=https://seu_dominio.com
      - PROMETHEUS_METRICS_ENABLED=True
    volumes:
      - static_data:/app/static
      - media_data:/app/media

  nginx:
    image: nginx:alpine
    restart: always
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - saleor
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - ssl_certs:/etc/nginx/ssl

volumes:
  db_data:
  redis_data:
  static_data:
  media_data:
  ssl_certs:

Além do compose, você precisará de uma configuração básica para o Nginx que faça o reverse proxy das requisições GraphQL e estáticas para o container Saleor.

nano nginx.conf
server {
    listen 80;
    server_name seu_dominio.com www.seu_dominio.com;

    location / {
        proxy_pass http://saleor:8000;
        proxy_set_header Host $host;
        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;
    }
}

Inicialização e Migração do Banco de Dados

Agora que a infraestrutura está definida, podemos subir os serviços. Execute o comando abaixo para baixar as imagens e iniciar os contêineres em segundo plano.

docker compose up -d

Aguarde alguns minutos até que todos os serviços estejam no estado "Up". Você pode verificar o status com:

docker compose ps

Com os serviços rodando, é necessário inicializar o banco de dados e criar o usuário administrador. O Saleor requer a execução de migrações e a criação do superuser via linha de comando dentro do container.

  1. Rode as migrações do Django:
docker compose exec saleor python manage.py migrate
  1. Crie o usuário superadministrador:
docker compose exec saleor python manage.py createsuperuser

O sistema solicitará um nome de usuário, email e senha. Anote estas credenciais com segurança, pois elas serão utilizadas para acessar o painel administrativo (Dashboard) do seu ecommerce GraphQL.

Configuração de SSL e Segurança com Let's Encrypt

Em produção, a comunicação HTTPS é obrigatória. Utilizaremos o Certbot para obter certificados gratuitos do Let's Encrypt e integrá-los ao Nginx.

Instale o Certbot na sua VPS:

sudo apt install certbot python3-certbot-nginx -y

Execute o comando para gerar o certificado. O plugin do Nginx configurará automaticamente as regras de redirecionamento HTTP para HTTPS.

sudo certbot --nginx -d seu_dominio.com -d www.seu_dominio.com

Ao final, o Certbot pedirá que você escolha entre manter ou redirecionar todo o tráfego para HTTPS. Escolha a opção 2 (Redirecionar). Reinicie os containers do Docker para garantir que o Nginx dentro do container carregue as novas configurações de SSL se você estiver montando os certificados manualmente, ou ajuste o docker-compose.yml para montar os caminhos dos certificados gerados pelo host.

Se estiver usando o método padrão onde o Nginx do Docker serve o tráfego, você precisará ajustar o volume de montagem no docker-compose.yml para apontar para os certificados gerados pelo host em /etc/letsencrypt/live/seu_dominio.com/.

Otimização e Monitoramento

Para um setup robusto, considere habilitar o monitoramento de métricas. O Saleor integra-se nativamente com Prometheus. Certifique-se de que a variável PROMETHEUS_METRICS_ENABLED=True esteja ativa no seu ambiente.

Além disso, implemente backups automáticos do banco de dados PostgreSQL. Um script simples em cron pode ser utilizado para realizar dumps diários.

# Exemplo de script de backup via cron
docker compose exec db pg_dump -U saleor_user saleor_db > /backup/saleor_$(date +%F).sql

Conclusão e Próximos Passos

Com este guia, você concluiu o setup Saleor produção em sua própria VPS. Você agora possui uma infraestrutura de e-commerce headless, escalável e baseada em GraphQL pronta para receber tráfego.

Os próximos passos recomendados incluem:

  • Configuração do Frontend: Clonar o repositório @saleor/dashboard ou utilizar o storefront pronto (como Next.js) e configurá-lo para apontar para a URL da sua API GraphQL.
  • Otimização de Imagens: Configurar um serviço de CDN (Cloudflare ou AWS CloudFront) para servir os assets estáticos e imagens dos produtos, reduzindo a carga na VPS.
  • Automação de Deploy: Implementar pipelines CI/CD (GitHub Actions ou GitLab CI) para automatizar atualizações da imagem do Saleor e migrações de banco de dados.

A manutenção de um saleor servidor próprio exige monitoramento contínuo de logs e recursos. Utilize ferramentas como Prometheus e Grafana para visualizar a saúde do seu sistema em tempo real. Com a configuração correta, sua loja headless estará preparada para crescer junto com o seu negócio.

Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000