Rappelez-vous l'expérience d'une migration de site Web WordPress

La migration d'un site Web Wordpress est difficile, simple mais pas simple, et il y a beaucoup de choses compliquées impliquées.

J'ai trouvé beaucoup d'informations sur les plug-ins à utiliser, et certains d'entre eux doivent être payés pour les utiliser. Après les avoir utilisés, il y a divers problèmes.
J'ai fait une simple tentative. Je n'ai pas besoin de plug-ins wordpress. Je connais les commandes Linux et je peux migrer moi-même.

环境: Centos 7 ,  LNMP

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

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

Migrez l'ancien site a.test.com vers le nouveau site de domaine b.test.com

Étapes de migration: Copier le code wordpress -> modifier le nom de domaine de configuration / les informations de connexion à la base de données -> exporter la base de données modifier les informations de nom de domaine / chemin de stockage -> importer une nouvelle base de données -> ajouter la configuration nginx -> redémarrer le service

1. Copiez le code complet de a.test.com, ici vous pouvez le compresser ou copier une copie du code wordpress directement

# cp -r atest  btest

2. Modifiez tous les caractères qui apparaissent dans le nom de domaine a.test.com dans le nouveau code wordpress copié et remplacez-les par 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

Modifier la configuration de la base de données wordpress

# vi  wp-config.php 


Modifier les nouvelles informations de connexion à la base de données

Jusqu'à présent, le nouveau code du projet de site WordPress a été modifié avec le nouveau nom de domaine et les nouvelles informations de base de données

3. Exportez la base de données (mysqldump) et enregistrez-la en tant que fichier au format sql

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


4. Modifiez le fichier de base de données aest.sql (vous pouvez également utiliser l'outil wp-cli wp search-replace pour le modifier directement), voici le
moyen le plus sûr de modifier directement le fichier sql pour remplacer le caractère a.test.com dans le fichier de base de données atest.sql b.test.com

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


Modifiez et remplacez le chemin de stockage du site Web dans le fichier de base de données test.sql, mon ancien chemin de stockage est / var / www / a-test, et remplacé par le nouveau chemin de stockage / var / www / b-test

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


5. Créez une nouvelle base de données btest, permettant de définir toutes les autorisations de l'utilisateur admin / admin en fonction de la situation

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

Jusqu'à présent, la migration de la base de données est terminée, le nouveau nom de domaine lié au site a été modifié et les informations de chemin sont stockées

6. La dernière étape pour configurer nginx (prend en charge la configuration multi-site 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. Redémarrez le service nginx et visitez la nouvelle adresse.


problème:

Dans le test de migration multi-site, il s'avère que si le nom de domaine de a.test.com est changé en cc.test.com après avoir visité la nouvelle adresse, il s'avère que certains des paramètres de style de thème d'origine ne sont pas valides et doivent être réinitialisés. La réinitialisation est impossible, certains J'ai oublié les paramètres de fonctionnement

Ma solution:

La longueur en caractères du nom de domaine de a.test.com avant la migration est de 10 et la longueur des caractères du nouveau nom de domaine cc.test.com après la migration est de 11. Si la longueur des caractères des deux noms de domaine est différente, les paramètres de style seront perdus après la migration. La raison la plus probable est que la base de données enregistrera également la longueur de la chaîne du nom de domaine pour déterminer l'unicité. Donc, après avoir changé mon nom de domaine avec la même longueur de caractère que b.test.com après la migration, il s'affichera normalement après la migration, et le site Web sera le même que le wordpress original.
Ce n'est qu'une solution temporaire pour moi. Il devrait être possible de modifier directement le paramètre de longueur de caractère de ce nom de domaine dans la base de données, mais je ne sais pas comment le modifier. S'il y a une meilleure solution, laissez-moi un message. Je l'apprendrai, merci! !

Je suppose que tu aimes

Origine blog.51cto.com/8789878/2542722
conseillé
Classement