Lembre-se da experiência de uma migração de site do wordpress

A migração de sites Wordpress é difícil, simples, mas não simples, e há muitas coisas complicadas envolvidas.

Encontrei muitas informações sobre quais plug-ins usar e alguns deles precisam ser pagos para usá-los. Depois de usá-los, há vários problemas.
Fiz uma tentativa simples. Não preciso de plug-ins wordpress. Estou familiarizado com os comandos do Linux e posso migrar sozinho.

环境: Centos 7 ,  LNMP

旧站点:a.test.com
旧数据库: atest
旧项目代码路径: /var/www/atest

新的站点: b.test.com
新数据库: btest
新项目代码路径: /var/www/btest

Migre o antigo site a.test.com para o novo site de domínio b.test.com

Passos de migração: Copiar o código wordpress -> alterar o nome do domínio de configuração / informações de conexão do banco de dados -> exportar o banco de dados, modificar o nome do domínio / informações do caminho de armazenamento -> importar novo banco de dados -> adicionar configuração nginx -> reiniciar serviço

1. Copie o código completo de a.test.com, aqui você pode compactá-lo ou copiar uma cópia do código do wordpress diretamente

# cp -r atest  btest

2. Modifique todos os caracteres que aparecem no nome de domínio a.test.com no código wordpress recém-copiado e substitua-os por b.test.com

# cd  b-test
# for i in `grep -R "a.test.com" . | awk -F":" '{print $1}' | sort -u`;do sed -i 's/a.test.com/b.test.com/g' $i; done

Modifique a configuração do banco de dados wordpress

# vi  wp-config.php 


Alterar as novas informações de conexão do banco de dados

Até agora, o novo código de projeto do site WordPress foi modificado com o novo nome de domínio e novas informações de banco de dados

3. Exporte o banco de dados (mysqldump) e salve-o como um arquivo de formato sql

以 atest数据库为例
 # mysqldump -uroot -p  atest > atest.sql


4. Modifique o arquivo de banco de dados aest.sql (você também pode usar a ferramenta wp-cli wp search-replace para modificá-lo diretamente), aqui está a
maneira mais segura de modificar o arquivo sql diretamente para substituir o caractere a.test.com no arquivo de banco de dados atest.sql b.test.com

# sed -i 's/a.test.com/b.test.com/g'  atest.sql


Modifique e substitua o caminho de armazenamento do site no arquivo de banco de dados test.sql, meu antigo caminho de armazenamento é / var / www / a-test e mudei para o novo caminho de armazenamento / var / www / b-test

# sed -i 's/var\/www\/a-test/var\/www\/b-test/g'  atest.sql


5. Crie um novo banco de dados btest, permitindo que todas as permissões do usuário admin / admin sejam definidas de acordo com a situação

    > create database btest character set utf8;
    > grant all privileges on btest.* to 'admin'@'%' identified by 'admin';
    > flush privileges;
    导入修改好的atest.sql数据
    > use btest;
    > source /root/atest.sql;

Até agora, a migração do banco de dados foi concluída, o novo nome de domínio relacionado ao site foi modificado e as informações do caminho estão armazenadas

6. A última etapa para configurar o nginx (suporta a configuração de vários sites nginx)

nginx  https配置 和  root路径根据自身情况自行配置,这里不多说 
 #  vi /etc/nginx/conf.d/btest.conf
server {
  server_name b.test.com;
  fastcgi_pass_request_headers on;
  fastcgi_pass_header Authorization;

   root /var/www/btest;

   #Load configuration files for the default server block.
  rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent;
  if (-f $request_filename){
        set $rule_2 1;
  }
  if (-d $request_filename){
        set $rule_2 1;
  }
  if ($rule_2 = "1"){
  }
  rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 last;
  rewrite ^/([_0-9a-zA-Z-]+/)?(.*.php)$ /$2 last;
  rewrite /. /index.php last;

   location / {
       index  index.html index.php;
   }
   location ~ ^(.+\.php)(.*)$ {
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_split_path_info       ^(.+\.php)(.*)$;
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      fastcgi_param PATH_INFO       $fastcgi_path_info;
      include        fastcgi_params;
   }
  listen 443 ssl;
  ssl_certificate /etc/nginx/ssl/b.test.com.crt;
  ssl_certificate_key /etc/nginx/ssl/b.test.com.key;
}
server {
    if ($host = b.test.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
  listen 80;
  server_name b.test.com;
  return 404; # managed by Certbot
}

7. Reinicie o serviço nginx e visite o novo endereço.


problema:

No teste de migração de vários sites, verifica-se que se o nome de domínio de a.test.com for alterado para cc.test.com depois de visitar o novo endereço, é descoberto que algumas das configurações de estilo de tema originais são inválidas e precisam ser redefinidas. A redefinição é impossível, algumas Eu esqueci as configurações de operação

Minha solução:

O comprimento dos caracteres do nome de domínio de a.test.com antes da migração é 10, e o comprimento dos caracteres do novo nome de domínio cc.test.com após a migração é 11. Se o comprimento dos caracteres dos dois nomes de domínio for diferente, as configurações de estilo serão perdidas após a migração. O motivo mais provável é que o banco de dados também salvará o comprimento da string do nome de domínio para determinar a exclusividade. Portanto, após alterar meu nome de domínio para o mesmo comprimento de caracteres de b.test.com após a migração, ele será exibido normalmente após a migração e o site será o mesmo que o wordpress original.
Esta é apenas uma solução temporária para mim. Deve ser possível modificar diretamente a configuração de comprimento de caracteres deste nome de domínio no banco de dados, mas não sei como modificá-lo. Se houver uma solução melhor, por favor, deixe uma mensagem para mim. Vou aprender, obrigado! !

Acho que você gosta

Origin blog.51cto.com/8789878/2542722
Recomendado
Clasificación