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! !