it-swarm-pt.tech

Como mover uma instalação do WordPress para o desenvolvimento de uma produção?

Eu faço desenvolvimento em uma caixa e uso um segundo para produção. Agora eu apenas despejo o banco de dados e, em seguida, encontrar uma substituição para as alterações de URL; copie os arquivos e importe o novo SQL.

Existem maneiras melhores de fazer isso?

197
Ryan Gibbons

@ Insanity5902 : A implantação de um site WordPress de uma caixa para outra tem sido uma PITA desde o primeiro dia em que comecei a trabalhar com o WordPress. (Verdade seja dita que foi um PITA com o Drupal por 2 anos antes de eu começar com o WordPress, então o problema certamente não é exclusivamente com o WordPress.)

Me incomodava que, toda vez que eu precisasse mover um site, eu tivesse que gastar tanto esforço duplicado e isso me impediria de implantar para testar com a frequência que eu preferiria. Então, há cerca de 4-6 meses, comecei a trabalhar em um plugin para resolver o problema da migração do webhost e mencionei minhas idéias no WP Forum da Tavern .

Bem rápido para hoje e eu praticamente consegui trabalhar e estou convenientemente chamando-o de "WP Migrar Webhosts." Mesmo que o plugin ainda seja muito beta (provavelmente até alfa), dada a sua pergunta, acho que estou pronto para permitir que as pessoas comecem a bater nele.

O caso de uso previsto é que:

  1. primeiro o desenvolvedor lida com o upload de todos os arquivos de plugins e temas modificados via FTP,
  2. em seguida, carrega o banco de dados MySQL de desenvolvimento para o servidor de teste em sua totalidade e, finalmente,
  3. then executa o plugin para migrar quaisquer referências do domínio anterior para o novo. (Meu plugin faz not tentar resolver a fusão de novos campos ou tabelas de banco de dados com dados ativos; THAT é um problema muito maior que não sei como resolver. )

Você pode baixar o plugin do meu site e descompactar em seu diretório de plugins (se você não sabe como fazer isso, então este plugin não é para você porque requer alguém que sabe o que está fazendo para usá-lo). ) Eu vou manter este plugin online até que eu o liberte no WordPress.org, após o qual você deve procurar por ele lá.

Para usá-lo você tem uma abordagem diferente em seu wp-config.php que normal comentando os quatro (4) define DB_NAME, DB_USER, DB_PASSWORD e DB_Host e em vez disso registrando os padrões para webhosts e então registrando informações sobre cada webhost . Aqui está o que esse segmento de wp-config.php pode parecer (note que a primeira seção é o código desnecessário comentado e também note que eu configurei meu arquivo de hosts em minha máquina local com .dev domínios de topo não roteáveis ​​para fazer o desenvolvimento do dia-a-dia No Mac VirtualHostX torna isso uma brisa):

// ** MySQL settings - You can get this info from your web Host ** //
/** The name of the database for WordPress */
//define('DB_NAME', 'wp30');

/** MySQL database username */
//define('DB_USER', 'wp30_anon');

/** MySQL database password */
//define('DB_PASSWORD', '12345');

/** MySQL hostname */
//define('DB_Host', '127.0.0.1:3306');

require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/wp-webhosts.php');
register_webhost_defaults(array(
 'database'  => 'example_db',
 'user'      => 'example_user',
 'password'  => '12345',
 'Host'      => 'localhost',
 'sitepath'  => '',        // '' if WordPress is installed in the root
));
register_webhost('dev',array(
 'name'      => 'Example Local Development',
 'Host'      => '127.0.0.1:3306',
 'domain'    => 'example.dev',
 'rootdir'   => '/Users/mikeschinkel/Sites/example/trunk',
));
register_webhost('test',array(
 'name'      => 'Example Test Server',
 'rootdir'   => '/home/example/public_html/test',
 'domain'    => 'test.example.com',
));
register_webhost('stage',array(
 'name'      => 'Example Staging Server',
 'rootdir'   => '/home/example/public_html/stage',
 'domain'    => 'stage.example.com',
));
register_webhost('live',array(
 'name'      => 'Example Live Site',
 'rootdir'   => '/home/example/public_html/',
 'password'  => '%asd59kar12*fr',
 'domain'    => 'www.example.com',
));
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/set-webhost.php');

Espero que isso seja (principalmente) auto-explicativo. Eu tentei fazer o código o mais limpo possível, mas infelizmente ele requer essas duas linhas require_once() enigmáticas antes e depois do bloqueio do código de registro do webhost, já que não havia como "ligar" o WordPress antes de wp-config.php chamado.

Depois de atualizar seu wp-config.php, você pode simplesmente usar o atalho de URL wp-migrate-webhosts para ir para a tela de administração da seguinte forma:

http://example.com/wp-migrate-webhosts

O texto acima o levará a uma tela de administrador como a seguinte, que possui um bom texto de descrição e permite que você migre DE qualquer um dos outros domínios de hospedagem com um único clique depois de selecionar os domínios a migrar from (NOTE: este exemplo mostra como ir DOWN de servidores test/stage/live para desenvolvimento local, mas pode ter certeza de que pode migrar TO qualquer domínio onde ele esteja localizado. Isso também significa o plug-in será ótimo para levar um site ao vivo existente e obter rapidamente um ambiente de desenvolvimento local funcionando! ):

enter image description here

Se não estiver claro "migration" neste contexto significa atualizar todas as referências no banco de dados atual para serem apropriadas para o webhost atualmente definido (e "current" is sniffed) inspecionando $_SERVER['SERVER_NAME'].)

O legal do plugin é que ele implementa algumas migrações básicas, mas qualquer um pode conectá-lo e realizar suas próprias migrações . Por exemplo, se você adicionar um plug-in de galeria que armazenasse caminhos completos para imagens no banco de dados, você poderia ligar a ação migrate_webhosts que será passada no host da Web "de" e "to" webhost cada como uma matriz de metadados e você terá permissão para executar o que você precisa fazer no banco de dados usando SQL ou qualquer função API do WordPress aplicável para fazer a migração. Sim, qualquer um de nós poderia fazer isso sem o plugin, mas sem o plugin eu descobri que escrever todo o código necessário era mais esforço do que valeu a pena. Com o plugin é mais fácil escrever esses minúsculos ganchos e acabar logo com isso.

Você também pode achar que minhas migrações falham nos casos do Edge. Eu não testei e talvez você possa me ajudar a melhorar o plugin? Qualquer pessoa que queira pode me enviar um e-mail por meio da minha conta do Gmail (meu alias é "mikeschinkel".)

Além disso, o plug-in foi projetado para aceitar metadados de webhost de definição de usuário além dos que reconhece como database, user, password, Host, domain etc. Um exemplo perfeito pode ser googlemaps_apikey onde é possível armazenar as diferentes chaves de API para cada domínio que o plug-in do seu Google Map precisa operar corretamente (quem entre você que usou um plug-in do Google Maps não implantou um aplicativo em um servidor ativo e esqueceu de alterar o código para a chave de API correta? Seja honesto ... :) Com este plugin, um elemento googlemaps_apikey em sua matriz register_webhost () e um pequeno gancho migrate_webhosts personalizado, você pode efetivamente eliminar isso como uma preocupação!

Bem, é sobre isso. Estou lançando este plugin aqui no WordPress Answer's Exchange porque a pergunta do @ Insanity5902 o acionou. Deixe-me saber se é útil, aqui se for o caso ou via e-mail, se não.

P.S. Se você decidir usar isso, lembre-se que é alfa/beta e isso significa que vai mudar, então esteja preparado para uma pequena cirurgia se você quiser usá-la agora e depois usar a versão lançada, uma vez que ela foi vencida por muitas mãos.

P.P.S. Quais são meus objetivos com isso? Eu adoro ver isso migrar para o núcleo do WordPress para que todos tenham acesso a ele. Mas antes disso, pode até ser considerado que muitas pessoas têm que estar interessadas em usá-lo para garantir que ele realmente resolva mais problemas do que poderia criar. Então, se você gosta da ideia, use-a e ajude-me a ganhar impulso para uma inclusão esperançosa no núcleo do WordPress.

121
MikeSchinkel

Quando possível, defino WP_HOME e WP_SITEURL em wp-config.php. Isso, combinado com um despejo e importação de banco de dados, é a mais simples de todas as soluções com as quais estou familiarizado.

http://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php

35
Annika Backstrom

Meu hack favorito; adicione uma configuração ao seu /etc/hosts para que o domínio de produção aponte para sua caixa de desenvolvimento, apenas na sua máquina. Para implantar na produção você rsync todos os arquivos e empurre o banco de dados.

Os riscos dessa estratégia são claros; Você pode confundir seu ambiente de desenvolvimento com seu ambiente de produção.

Ainda é uma solução fácil.

27
Wietse Venema

Eu queria algo parecido quando migrei para WP alguns meses atrás, então escrevi um shell script bem simples que usa rsync e mysqldump sobre ssh:

http://snarfed.org/sync_wordpress

Não é sofisticado ou baseado na web, mas estou feliz com isso.

9
ryan

WP Engine é um novo serviço que oferece "One-Click Staging":

O WPEngine tem um recurso exclusivo chamado "teste". Veja como funciona: antes de fazer uma alteração assustadora no seu blog, clique no botão "instantâneo". Fazemos uma cópia completa do seu blog e configuramos em uma área separada e segura. Você pode jogar com o que quiser; nada está vivo. Somente quando você estiver pronto para fazer o show você tocar no seu site principal.

Parece uma maneira muito fácil de passar rapidamente do desenvolvimento para a produção, especialmente com um site já ativo.

8
Travis Northcutt

Plugin Duplicador: Aqui está um plugin que eu tenho trabalhado. Está atualmente em beta, mas faz o trabalho para a maioria dos sites. No momento, ele é voltado para instalações menores do WordPress. http://wordpress.org/extend/plugins/duplicator/

Recursos: Recursos adicionais para o plugin podem ser encontrados aqui: http://lifeinthegrid.com/duplicator/

Comunidade: Por favor, deixe-nos saber sobre seus sucessos ou quaisquer problemas que você possa encontrar! Em um esforço para gerenciar mais facilmente os vários segmentos, publique os problemas nos fóruns de plugins do WordPress.org. Por favor, não poste nenhum dado de registro do plugin nos fóruns online. Os dados de registro podem ser enviados ao nosso site de suporte.

7
Cory

Você pode dar uma olhada em um produto do iThemes, chamado BackUpBuddy . Eu usei apenas duas vezes, cada vez teve um ou dois empecilhos, mas no geral parece promissor.

6
MikeK

Isso parece promissor. Estamos trabalhando em alguns scripts para lidar com a migração de alguns dos dados, opções-wp por exemplo, alterando caminhos no banco de dados, uma cópia sobre mídia.

O problema que tenho é que o site ao vivo continua a crescer enquanto o outro está em desenvolvimento. Um site em que trabalhamos tem 20 posts por dia e mais de 3.000 comentários por dia. Isso é muito dados para mover com phpmyadmin ou através da linha de comando. Além disso, mover os dados sempre causa problemas de UTF por algum motivo.

Além disso, agora que parece que as opções do menu estão armazenadas no banco de dados, tenho ainda mais com o que lidar.

Eu verifico todo o meu código no SVN e implanto o código via FTP do servidor (Beanstalk). Isso não faz as alterações no banco de dados para mim ou ativa novos plug-ins.

Meu plano agora é criar um arquivo de manifesto enquanto estou desenvolvendo todas as minhas alterações no site ao vivo.

Por exemplo, o arquivo teria linhas legíveis por humanos

Ele incluiria plugins para ativar, wp-options para mover, imagens para mover, páginas para mover. Em seguida, meu plug-in detectaria o arquivo de manifesto e faria todas as alterações no site de teste.

Depois que eu testei isso e tinha certeza de que tinha tudo, podia ter certeza de que funcionaria na produção.

Este plugin ainda é apenas uma ideia, mas eu tenho um código escrito para ele.

Além disso, se você quiser fazer alterações em apenas o URL em seu banco de dados, você pode usar o seguinte SQL.

basta substituir $old$ pelo antigo domínio e $new$ pelo novo

update wp_postmeta set meta_value = replace(meta_value, '$old$' , '$new$') ;
update wp_posts set post_content = replace(post_content, '$old$' , '$new$') ;
update wp_options set option_value = replace(option_value, '$old$' , '$new$') ;
5
Andrew

Estou pessoalmente abordando esse problema com meu projeto no Github, chamado Autopress . Eu não tenho uma solução perfeita ainda, mas estou me aproximando, especialmente com o plugin wpstage do pessoal do wpengine.

5
Vid Luther

Dois projetos do Google Summer of Code que têm um objetivo semelhante:

4
Jan Fabry

A partir de 2017, aqui estão as duas melhores maneiras que encontrei para lidar com a transferência de um banco de dados do WordPress do desenvolvimento para a produção.

WP Migrar DB Pro/WP Sincronizar DB

https://wordpress.org/plugins/wp-migrate-db/

Esses plugins WordPress permitem que você pressione, puxe e sincronize as tabelas do banco de dados entre as instalações do WordPress. Isso é muito melhor do que encontrar/substituir por vários motivos porque:

  • Exporta seu banco de dados como um dump de dados do MySQL (parecido com o phpMyAdmin)
  • Localiza e substitui URLs e caminhos de arquivos
  • Lida com dados serializados
  • Permite que você salve no seu computador como um arquivo SQL

Eu sou um fã de ser pago pelo trabalho que faço, então eu recomendo que você apoie o Sr. Brad Touesnard e compre uma cópia das licenças da coisa real. WP Sync DB é uma réplica e está sempre atrasado no suporte como resultado. Com este plugin, o processo é simples:

  1. Instalar/ativar o plugin em seu localhost e ambiente de produção
  2. Configure uma transferência push do seu servidor local/de desenvolvimento para sua produção
  3. Preencha as regras para as tabelas a serem transferidas e defina as regras de localização e substituição para executar
  4. É isso aí!

Pesquisa de Banco de Dados e Substituição de Bancos de Dados do WordPress por InterconnectIT

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Esta ferramenta gratuita não é um plugin, mas está instalada no diretório raiz da sua instalação de produção do WordPress. Isso não é tão bom quanto WP Migrar o DB Pro porque ele requer algumas etapas manuais, mas, mesmo assim, é uma ótima opção que funciona de forma consistente. Ao usar essa abordagem, o processo se parece com isso:

  1. Faça o backup do seu banco de dados local, isso é absolutamente necessário, já que iremos importá-lo em breve
  2. Adicione o script a uma pasta no diretório raiz de instalação
  3. Execute o localizar e substituir em seu banco de dados
  4. Exporte seu banco de dados e salve-o em seu ambiente de produção
  5. Reimporte seu backup da etapa 1 para restaurar seu host local
  6. Conecte-se ao seu banco de dados de produção e faça backup dele (como você sempre deveria antes de fazer essas coisas)
  7. Importe a exportação que fizemos depois de executar a rotina localizar/substituir da etapa 4

Você pode usar uma abordagem mais rápida, mas envolve tempo de inatividade para o site de produção, o que, na minha opinião, é inaceitável. É por isso que chamamos de produção, certo?

3
Kevin Leary

Embora não haja escassez de boas soluções aqui, no espírito do compartilhamento, pensei em adicionar meu script bash deploy à pilha: https://github.com/jplew/SyncDB

O SyncDB é um script de implantação bash destinado a tirar o tédio da sincronização de versões locais e remotas de um site do Wordpress. Ele permite que os desenvolvedores que trabalham em um ambiente local (por exemplo, MAMP) rapidamente "Empurrar" ou "puxar" as alterações para ou a partir de seu servidor de produção com um único comando de terminal.

Esse script funciona bem com o WP-Skeleton de Mark Jaquith e aproveita mysqldump, git e rsync para sincronizar todo o seu site (banco de dados, código e mídia) em duas etapas fáceis:

./syncdb
git Push hub master
3
JP Lew

Eu tenho usado http://wordpress.org/plugins/wp-clone-by-wp-academy/ . Isso funciona muito bem!

Apenas 3 etapas:

  1. Instale o plug-in nos dois sites.
  2. Use o plug-in para gerar um backup no site antigo.
  3. Pegue o URL de backup fornecido e conecte-o à página do plug-in no novo site, clique em ir e sua migração será concluída em apenas alguns segundos!

Ele ajusta todas as URLs automaticamente - incluindo substituições de string serializadas - para que não haja risco de perder configurações de widgets, etc.

Os únicos problemas que tive foram com alguns sites com bancos de dados maiores (~ 300MB), o que causou PHP timeouts de execução de scripts durante a importação do backup do site.

3
jmotes

Eu uso o comando de exportação do Subversion para instalar os arquivos do WordPress (http://core.svn.wordpress.org/tags//) assim como todos os plugins no repositório (http://plugins.svn.wordpress.org//tags //), em seguida, basta fechar o tema e plugins personalizados e instalá-los normalmente. Quando tudo isso estiver funcionando sem conteúdo, eu exporto o banco de dados de teste e faço uma pesquisa/substituição para a URL E o caminho de arquivo (armazenado para mídia) e importo para um banco de dados vazio, basta mudar as informações do banco de dados em wp-config .php Geralmente leva cerca de 10 a 20 minutos.

3
John P Bloch

Normalmente, eu faço login no phpMyadmin para fazer upload do banco de dados e edito o conteúdo de wp_options> siteurl e wp_options> home para o domínio esperado. Se você precisar atualizar URLs nas suas postagens e conteúdo das páginas, poderá pesquisar/substituir o URL e o caminho de mídia/uploads no arquivo .SQL antes de fazer o upload. É um trabalho rápido.

3
Alex Costa

Eu tenho usado o plugin backupbuddy por um tempo agora. Ele permite fazer um backup do banco de dados e de todos os arquivos, baixá-lo como um Zip ou enviá-lo diretamente para outro servidor via FTP. Ele também faz o URL localizar e substituir por você. Geralmente, demoro cerca de 5 minutos para percorrer todo o processo. E como todos os arquivos são compactados, o processo de upload/download é muito mais rápido. E não, eu não trabalho para eles, mas esse plugin realmente facilitou todo esse processo.

1
gdaniel

Outra solução de pagamento: o framework de temas Xtreme One versão 1.2 com Xtreme Backup que permite a você "exportar ou importar as configurações de seus temas, layouts ou widgets com todas as suas configurações/conteúdo Arquivo XML ".

1
Jan Fabry

desde que eu corro meus sites em IIS (eu também executo asp.net, então eu preciso de janelas) eu uso WebPI de Msft para instalar uma nova instância, então eu copio o modelo e uso a importação/exportação para transferir os dados.

Não é perfeito, mas a coisa toda leva menos de uma hora.

Obviamente, seria bom ter uma solução de um clique, mas isso é o que eu acho mais fácil para mim.

1
Sruly

RAMP é um novo plugin de implantação de conteúdo do Crowd Favorite, e parece bem legal. São 250 dólares, mas ainda não testei. Pode apenas pagar por si mesmo na quantidade de tempo economizado, então, eu estou considerando isso.

O grande benefício que tem sobre a maioria dos outros métodos mencionados, é que ele pode mesclar posts, comentários, etc. de forma inteligente. Não é apenas importar um mysqldump, é mais como controle de origem para o banco de dados. Por exemplo, ao implantar uma postagem, ela também implantará as tags para essa postagem, se elas ainda não existirem na produção.

1
Ian Dunn

Um colega de trabalho descobriu isso. Conceito interessante, embora não funcione entre servidores parece. Ainda estou explorando, mas parece que funciona muito bem para uma instância de teste

http://code.google.com/p/deploymint/

1
Ryan Gibbons

Isso pode não ter sido em torno quando você fez a pergunta, mas eu tenho usado um serviço chamado Blogvault por alguns meses e tem feito isso na perfeição. Eu provavelmente já fiz mais de 50 migrações (cruzando domínios, sub-domínios e hosts da web), não um engate e não leva tempo a todos.

É um serviço pago (por domínio/mês), mas não muito.

1
Larry

Esta é a maneira mais fácil de sempre: https://themes.artbees.net/docs/website-migration/
Leva apenas dois cliques. Um para exportar, um para importar.

É possível usar o plugin All in one WP Migration. O link acima mostra como usá-lo.

1
Mohsenr1

Outra ferramenta útil para lidar com migrações de servidor para sites é a CLI do WordPress, este artigo tem uma boa visão do que pode fazer, mas especificamente a seção "Pesquisar e substituir" é útil para encontrar todas as referências à URL antiga/dev do site :

Gerenciamento avançado de WordPress com WP-CLI

1
Rick Curran

Deixe-me dar um dos meus favoritos :-)

// proven local<->live codefork (covers local network testing, i.e. from mobile devices):
$GLOBALS['is_local'] =  
    in_array( $_SERVER['REMOTE_ADDR'], array("127.0.0.1","::1")) || // simple localhost (IPv4 IPv6)
              $_SERVER['HTTP_Host'] == 'local.workblog'          || // call by local name (adjust)
       substr($_SERVER["REMOTE_ADDR"],0,8) == '192.168.';           // (mobile) device in local network

$table_prefix  = NULL; // ensure scope

if ( $GLOBALS['is_local'] )  // LOCAL fork ------------------------
{
        ....
}
else  // STAGE/LIVE fork -------------------
{

... e então você trabalha a partir daí. DB_NAME, DB_USER ... table_prefix. Pessoalmente eu ligar ALTERNATE_WP_CRON no local (para evitar alguns avisos irritantes ), WP_DEBUG de ambos (se você não é um desenvolvedor) ou em apenas ao vivo (se você estiver), outra ini_set('display_errors', '0'); para ao vivo também poderia fazer bom, e por último, como mencionado acima: WP_HOME e WP_SITEURL para o respectivo URL local/real.

Que praticamente tudo, nada acima do clássico WordPress 'É tudo, pare de editar!' linha ...

O 192.168. parte permite que você faça alguns testes locais (por exemplo, a partir de blocos ou telefones) dentro de sua rede local)

O $ GLOBALS ['is_local'] pode ser útil no desenvolvimento do seu tema, também, para alguma saída extra de depuração, etc ...

1
Frank Nocke

Depois de ter seguido esta resposta por um tempo eu criei meu próprio pequeno plugin - Pitta Migration . As razões são:

  1. De todas as ideias aqui testadas - a mais simples são as opções WP_HOME e WP_SITEURL
  2. Então eu os uso para definir os dois wp_options URLs correspondentes - o que cobre quando plugins/temas ignoram esses
  3. Isso me dá 100% de confiança no que está sendo alterado no meu banco de dados
  4. Isso também funciona multi-plataforma (todos esses scripts bash não funcionam bem no Windows)
  5. É fácil entender o que o plugin está fazendo
  6. Não há nenhuma configuração além das duas constantes - faça um mysqldump e uma importação mysql para o seu banco de dados local e o plugin vê que a constante e a tabela são diferentes e as atualiza para corresponder
  7. Nenhuma pesquisa de texto e substituição
  8. Nenhuma chance de knackering seu banco de dados - eu uso o objeto de banco de dados WordPress para fazer duas atualizações e nada mais
  9. Ele joga muito bem com coisas como WordPress Skeleton onde você pode ter tudo no controle de origem e definir uma configuração local
  10. Eu coloquei no diretório WordPress plugins e em Github para que ele seja gratuito, totalmente opensource, fácil de bifurcar e fácil de instalar
  11. Uma vez instalado, você pode esquecê-lo e ele deve "apenas funcionar" - ele lhe dá um pequeno aviso para dizer que o banco de dados foi modificado
  12. Deve funcionar com qualquer processo de backup/FTP/restore
0
icc97

Se você estiver tentando obter sincronização contínua, sugiro usar o rsync junto com um trabalho cron personalizado para reescrever qualquer URL ou dados específicos do site.

0
user92899

Na minha opinião, a maneira mais fácil que eu sigo é a transferência manual. Basta copiar a pasta wp-content e o arquivo wp-config.php para o novo Host. Exportar o banco de dados do host antigo e importá-lo em um novo banco de dados do novo host.

No novo banco de dados do host, vá para a tabela wp-option e lá mude o URL do site e o URL do blog para o endereço do novo host do host antigo. como de http: // localhost/wp para http://example.com

Agora, no arquivo wp-config, basta alterar as informações do banco de dados e do usuário com as novas informações do Host.

Agora faça o login no novo wp-admin e vá para as configurações e salve o permalink.

Você terminou. Eu acho que isso é simples sem usar plugins.

Eu tentei diferentes tipos de plugins e todos estes têm muitos tipos de problemas ..

Então eu prefiro essa transferência manual simples que é mais fácil eu acho.

0
Md. Amanur Rahman