PS PrestaShop Intermédio

DataFirefly Staging Pro: guia completo

Clonar, testar e enviar para produção: instalação, criação de um staging, opções de proteção, push seletivo e rollback para PrestaShop 8 e 9.

Atualizado Versão do módulo 1.0.1

O Staging Pro cria uma cópia completa da sua loja (ficheiros + base de dados) numa subpasta protegida do seu alojamento atual, sem nenhum timeout graças ao seu motor de cópia por lotes. Testa módulos, temas e atualizações em total segurança, e envia depois as suas alterações para produção tabela a tabela, com cópia de segurança automática e rollback num clique. Este guia cobre a instalação, a criação de um staging, as opções de proteção, o push para a produção e o rollback.

Instalação

  1. Transfira o arquivo dfstagingpro.zip a partir da sua conta DataFirefly.
  2. Back-office PrestaShop → MódulosCarregar um módulo → envie o ZIP.
  3. Na instalação, o módulo cria as suas tabelas df_staging_env e df_staging_log, regista os seus hooks e adiciona o separador Parâmetros avançados → Staging Pro.

Compatível com PrestaShop 8.0 a 9.x. O PHP tem de poder escrever na raiz da loja (criação da subpasta de staging) e o utilizador MySQL tem de poder fazer CREATE, DROP e RENAME TABLE, o que é o caso de uma instalação PrestaShop padrão. Nenhuma dependência Composer.

Como funciona o staging

Um ambiente de staging é criado numa subpasta na raiz da sua loja (por exemplo /staging-v2/) e usa um prefixo de tabelas dedicado (por exemplo dfs1_) na mesma base de dados que a produção. Não precisa portanto nem de um segundo servidor, nem de um novo acesso MySQL, nem de uma configuração DNS.

O motor de cópia trabalha por lotes de alguns segundos e devolve depois o controlo, retomando exatamente onde tinha parado: cópia dos ficheiros através de uma fila de espera persistente, clonagem da base de dados por pacotes de linhas. Uma loja de vários gigabytes é assim clonada sem erro, mesmo num alojamento partilhado com um max_execution_time baixo.

Criar um staging

Aceda a Parâmetros avançados → Staging Pro, e depois ao painel de criação:

  1. Introduza um nome (apenas minúsculas, algarismos e hífens, por exemplo v2). O URL do staging será a-sua-loja.pt/staging-v2/.
  2. Escolha as suas opções de proteção e de cópia (ver abaixo).
  3. Clique em Criar. O progresso é apresentado em direto com uma barra de avanço.

No fim do processo, o URL do staging e, se for o caso, as credenciais htpasswd são apresentados na linha do ambiente.

Opções de proteção e de cópia

  • Proteger com .htpasswd: acrescenta uma autenticação HTTP (utilizador staging). A palavra-passe pode ser introduzida ou gerada automaticamente, e apresentada depois no painel.
  • Desativar os e-mails: corta os e-mails de saída do staging (PS_MAIL_METHOD = 3). Nenhum risco de escrever a um cliente real.
  • Desativar os pagamentos: desativa e remove dos hooks os módulos de pagamento conhecidos no staging.
  • Ignorar as estatísticas: exclui da cópia as tabelas volumosas e não essenciais (ligações, registos, carrinhos abandonados…) para uma cópia muito mais rápida.
  • Symlink da pasta img/: cria uma ligação simbólica para as imagens em vez de as copiar, para uma enorme poupança de espaço em disco.
  • Modo de manutenção: coloca o staging em manutenção com o seu IP de administração na lista branca.

Logo na criação, qualquer staging recebe automaticamente um cabeçalho X-Robots-Tag: noindex, uma meta noindex e um robots.txt bloqueante, bem como uma faixa laranja STAGING no front-office e no back-office. Os seus ambientes de teste não correm o risco de ser indexados pelo Google.

A opção symlink img/ partilha a pasta de imagens com a produção: modificar ou eliminar uma imagem do lado do staging afeta também a loja online. A reservar aos testes que não tocam nas imagens.

O motor de cópia por lotes

A criação de um staging encadeia várias etapas, cada uma com orçamento de tempo e retomada automaticamente: preparação, cópia dos ficheiros, clonagem da base de dados, reescrita dos URLs, configuração e proteção, e depois finalização. A reescrita de URL cobre shop_url, a configuração (incluindo os valores serializados e JSON, tratados sem corrupção), bem como os conteúdos CMS, produtos, categorias, marcas, fornecedores e lojas físicas.

Se a página for fechada durante a criação, o ambiente permanece em curso e retoma automaticamente a cópia na reabertura do painel, exatamente onde tinha parado.

Atualizar, multiambiente e eliminação

  • Refresh: reconstrói um staging existente a partir do estado atual da produção (eliminação e depois recriação da pasta e do prefixo), num clique.
  • Multiambiente: crie tantos stagings quantos forem necessários (v2, hotfix, teste-modulo…), cada um independente.
  • Eliminação: elimina a pasta e as tabelas de um ambiente de forma orçamentada, sem timeout.

Enviar para a produção

Uma vez validados os seus testes, o botão Push permite enviar as suas alterações para produção, tabela a tabela:

  1. Clique em Push na linha do ambiente: a lista das tabelas é apresentada, com o número de linhas de cada uma.
  2. Assinale com precisão as tabelas a transferir.
  3. Confirme. Antes de cada substituição, a tabela de produção correspondente é guardada automaticamente através de uma renomeação com carimbo temporal para um prefixo dfbak{carimbo}_.

Os URLs são reescritos no sentido staging → produção durante a transferência. As tabelas críticas (shop_url, configuration, shop, sessões e tabelas do módulo) estão protegidas e nunca podem ser enviadas.

O push modifica a sua loja em produção. A cópia de segurança automática protege as tabelas substituídas, mas verifique sempre a sua seleção. Evite enviar as tabelas de encomendas ou de clientes se a produção continuou a registar vendas desde a criação do staging.

Rollback

O botão Rollback restaura a produção a partir da última cópia de segurança de push, num clique. O módulo renomeia as tabelas de cópia de segurança dfbak…_ para retomarem o seu lugar de origem.

Uma vez um push validado e estável, elimine as tabelas dfbak* antigas (através do phpMyAdmin ou de qualquer cliente SQL) para libertar espaço na sua base de dados.

Salvaguardas e registo

  • Todas as ações são bloqueadas se a loja atual for ela própria um staging, para evitar manipulações em cascata.
  • Está disponível um registo detalhado por ambiente através do botão Logs.
  • Como o robots.txt numa subpasta não é honrado pelos motores, a verdadeira proteção anti-indexação assenta no cabeçalho X-Robots-Tag e na meta noindex; a opção .htpasswd continua a ser a proteção mais segura.

Compatibilidade e notas técnicas

  • PrestaShop 8.0 a 9.x, compatível com alojamento partilhado e multilingue.
  • Controlador de administração legacy (sem controlador Symfony) para a compatibilidade PS8/PS9.
  • Endpoints AJAX do back-office através do 4.º argumento de getAdminLink(); renderização JSON por um método dedicado.
  • Staging = subpasta na raiz + prefixo de tabelas dfs{id}_ na mesma base MySQL.
  • Cópias de segurança de push com carimbo temporal sob o prefixo dfbak{YmdHis}_, a limpar após validação.

Autenticação HTTP e alojamentos cPanel / LiteSpeed

Desde a versão 1.0.1, o ficheiro .htpasswd é gerado no formato APR1-MD5 (o do comando htpasswd -m), lido pelo Apache, LiteSpeed e nginx. A versão 1.0.0 usava bcrypt, que o LiteSpeed (muito comum por trás do cPanel em alojamentos partilhados) não sabe ler: o staging respondia então 404 em todas as suas páginas.

O bloco de proteção acrescenta também uma página de erro 401 inline. No cPanel, o erro 401 é redirecionado globalmente para /401.shtml, uma página que não existe no PrestaShop: o subpedido cai no dispatcher da produção e devolve a sua página 404, de modo que o navegador nunca mostra a caixa de início de sessão. A página inline contorna esse redirecionamento.

Por fim, a linha ErrorDocument 404 do .htaccess copiado é reescrita para a subpasta de staging: um erro no staging mostra a página 404 do staging, e não a da produção.

Autoverificação na criação

No fim da configuração, o módulo envia um pedido HEAD ao robots.txt do staging, com as credenciais se a proteção estiver ativa, e depois sem credenciais para verificar que o servidor responde 401. O resultado é registado nos logs do ambiente:

  • 200 com credenciais e 401 sem: está tudo em ordem.
  • O servidor recusa o bloco de autenticação: o módulo retira o bloco e o .htpasswd, desativa a opção e mostra «Ready with warning» na linha do ambiente. O staging fica então acessível sem palavra-passe; ative o modo de manutenção.
  • Código 0: o servidor não consegue chamar-se a si próprio (pedidos de saída bloqueados). Abra o URL do staging manualmente.

Para verificar a partir de um terminal: curl -sI https://a-sua-loja.pt/staging-v2/robots.txt deve responder 401, e o mesmo comando com -u staging:palavrapasse deve responder 200.

FAQ e resolução de problemas

O módulo funciona num alojamento partilhado? Sim. O motor de cópia por lotes com retoma automática evita qualquer timeout, seja qual for o max_execution_time do servidor.

A criação foi interrompida, o que fazer? Reabra o painel do Staging Pro: o ambiente retoma automaticamente a cópia onde tinha parado.

O staging pode enviar e-mails aos meus clientes? Não, se a opção «Desativar os e-mails» estiver ativa (recomendado): os e-mails de saída são cortados no staging.

Depois de um push, como anular? Use o botão Rollback, que restaura a última cópia de segurança automática. Lembre-se depois de limpar as tabelas dfbak* obsoletas.

Posso criar vários stagings ao mesmo tempo? Sim, o número de ambientes é ilimitado e cada um é totalmente independente.

O staging responde 404 em todo o lado, ou a caixa de início de sessão não aparece? É o sintoma corrigido na 1.0.1 nos alojamentos cPanel / LiteSpeed. Atualize o módulo e relance um Refresh do ambiente; consulte a secção «Autenticação HTTP e alojamentos cPanel / LiteSpeed» acima.

Histórico de versões

1.0.1 (3 de setembro de 2026)

  • Proteção htpasswd: hash gerado em APR1-MD5, compatível com Apache e LiteSpeed (o bcrypt era rejeitado em alguns alojamentos cPanel, tornando o staging inacessível).
  • Caixa de início de sessão HTTP: página 401 inline, para os alojamentos que redirecionam os erros 401 para uma página inexistente.
  • Linha ErrorDocument do .htaccess reescrita para a subpasta de staging.
  • Autoverificação no fim da criação: controlo HTTP do staging, remoção automática da proteção se o servidor a recusar e aviso no painel.

1.0.0 (11 de junho de 2026)

Primeira versão pública.

Esta página foi útil?

Ainda com dúvidas? Contacte o suporte