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.
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
- Transfira o arquivo
dfstagingpro.zipa partir da sua conta DataFirefly. - Back-office PrestaShop → Módulos → Carregar um módulo → envie o ZIP.
- Na instalação, o módulo cria as suas tabelas
df_staging_envedf_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:
- Introduza um nome (apenas minúsculas, algarismos e hífens, por exemplo
v2). O URL do staging seráa-sua-loja.pt/staging-v2/. - Escolha as suas opções de proteção e de cópia (ver abaixo).
- 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:
- Clique em Push na linha do ambiente: a lista das tabelas é apresentada, com o número de linhas de cada uma.
- Assinale com precisão as tabelas a transferir.
- 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.txtnuma subpasta não é honrado pelos motores, a verdadeira proteção anti-indexação assenta no cabeçalhoX-Robots-Tage na metanoindex; a opção.htpasswdcontinua 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
ErrorDocumentdo.htaccessreescrita 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.