Wordpress Webサイトの移行は難しく、単純ですが単純ではなく、多くの複雑なことが関係しています。
使用するプラグインについて多くの情報を見つけましたが、使用するには有料のものもあります。使用後、さまざまな問題が発生します。
簡単に試してみました。ワードプレスプラグインは必要ありません。Linuxコマンドに精通しており、自分で移行できます。
环境: Centos 7 , LNMP
旧站点:a.test.com
旧数据库: atest
旧项目代码路径: /var/www/atest
新的站点: b.test.com
新数据库: btest
新项目代码路径: /var/www/btest
古いa.test.comサイトを新しいb.test.comドメインサイトに移行します
移行手順:ワードプレスコードのコピー->構成ドメイン名/データベース接続情報の変更->データベースのエクスポートドメイン名/ストレージパス情報の変更->新しいデータベースのインポート-> nginx構成の追加->サービスの再開
1. a.test.comの完全なコードをコピーします。ここで、コードを圧縮するか、ワードプレスコードのコピーを直接コピーできます。
# cp -r atest btest
2.新しくコピーされたワードプレスコードのa.test.comドメイン名に表示されるすべての文字を変更し、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
ワードプレスデータベース構成を変更する
# vi wp-config.php
新しいデータベース接続情報を変更する
これまでのところ、新しいWordPressサイトプロジェクトコードは、新しいドメイン名と新しいデータベース情報で変更されています。
3.データベース(mysqldump)をエクスポートし、sql形式のファイルとして保存します
以 atest数据库为例
# mysqldump -uroot -p atest > atest.sql
4.データベースファイルaest.sqlを変更します(wp-cliツールwp search-replaceを使用して直接変更することもできます)。これは、sqlファイルを直接変更
してatest.sqlデータベースファイルのa.test.com文字を置き換える最も安全な方法です。 b.test.com
# sed -i 's/a.test.com/b.test.com/g' atest.sql
test.sqlデータベースファイルのWebサイトのストレージパスを変更して置き換えます。古いストレージパスは/ var / www / a-testで、新しいストレージパス/ var / www / b-testに変更されています。
# sed -i 's/var\/www\/a-test/var\/www\/b-test/g' atest.sql
5.新しいデータベースbtestを作成し、状況に応じてadmin / adminユーザーのすべての権限を定義できるようにします
> 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;
これまでのところ、データベースの移行が完了し、新しいサイト関連のドメイン名が変更され、パス情報が保存されています
6. nginxを構成するための最後のステップ(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. nginxサービスを再起動し、新しいアドレスにアクセスします。
問題:
マルチサイト移行テストでは、新しいアドレスにアクセスした後にa.test.comのドメイン名をcc.test.comに変更すると、元のテーマスタイル設定の一部が無効であり、リセットする必要があることがわかりました。リセットが不可能なものもあれば、動作設定を忘れてしまいました
私の解決策:
移行前のa.test.comのドメイン名の文字長は10、移行後の新しいドメイン名cc.test.comの文字長は11です。2つのドメイン名の文字長が異なる場合、移行後にスタイル設定は失われます。最も可能性の高い理由は、データベースが一意性を判断するためにドメイン名文字列の長さも保存することです。したがって、移行後にドメイン名をb.test.comと同じ文字長に変更すると、移行後は正常に表示され、Webサイトは元のワードプレスと同じになります。
これは私にとって一時的な解決策です。データベース内のこのドメイン名の文字長設定を直接変更することは可能ですが、変更方法がわかりません。より良い解決策がある場合は、私にメッセージを残してください。学習します。ありがとうございます。!