WordPressサイトの移行方法
WordPress サイトやサーバーを移行する方法には、
- プラグインを使う
- 標準のインポートやエクスポートを使用する
- マニュアルでファイルコピーとmysqldumpなどでデータベースを移行する
が考えられるが、Wordpress の仕組みを勉強するために、マニュアルの移行を検討する。
マニュアルで移行するには
WordPress のサイトをマニュアルで移行する方法は、
- 元のデーターベースを取り出す
- WordPress のディレクトリをまるごと新しいサイトにコピーする
- 新しいデータベースにユーザーとデータベースを作成する
- 元のデータベースを新しいサイトのデータベースに入れる
- URLが異なる場合は、データベースのURLを修正する。
新しいサイトの準備が完璧ならば、これで動作するはず。
データベースを取り出す
元のデータベースを取り出す
mariadb の元のデータベースを新しいデータベースにコピーするには、mysqldump コマンドが良いでしょう。
myssqldump コマンドを実行したディレクトリにsqlファイルが作られるので、Wordpressのディレクトリに移動します
debian の場合、
cd /var/www/wordpress
元のデータベースのあるサーバーのコマンドから
mysqldump -u [ユーザー名] -p [データベース名] > [ダンプファイル名].sql
ex)
ユーザー名 : wpuser
データベース名 : wordpressdb
※ WordPress ディレクトリにある wp-config.php に登録した「ユーザー名」と「データベース名」それと、パスワードもメモしておく。
とすると、
mysqldump -u wpuser -p wordpressdb > wordpressdb_dump.sql
/var/www/wordpress/wordpressdb_dump.sql
が作られているはずです。
ファイルの移動
サーバー間のコピーコマンド
scp
を使って wordpress ディレクトリをコピーする
元のサイトのサーバーで操作しているとする
元のサイトのワードプレスのルートディレクトリが
/var/www/wordpress
新しいサイトのサーバー 102.168.1.20 とし、ルートディレクトリとなる場所が /var/www/(wordpress) とすると、
scp -rC /var/www/wordpress root@192.168.1.20:/var/www/
でファイルの移動が完了すると新しいサイトの /var/www にwordpressのディレクトリが現れる。
※ scp のオプション
-r : ディレクトリのコピー
-C : 圧縮
ユーザーとデータベースを作成
新しいサイトの mariadb にユーザー登録とデータベース作成をする。
元のユーザーとデータベース名を使うのであれば、
ex)
ユーザー名 : wpuser
データベース名 : wordpressdb
パスワード : 123456abc
とすると、
# mariadb でデータベース操作
(mysql -u root -p でも良い)
# mariadb
> CREATE DATABASE wordpressdb;
> create user 'wpuser'@'localhost' identified by '123456abc';
> grant all on wordpressdb.* to 'wpuser'@'localhost';
> EXIT;
新しいサイトのデータベースに元のデータベースを入れる準備ができました。
元のデータベースを新しいサイトのデータベースに入れる
元のサイトのwordpress デレクトリに ダンプした spl ファイルも同時に scp されているはずなので、新しいサイトのサーバーのシェルコマンドから
cd /var/www/wordpress
wordpressdb_dump.sql の存在を確認して mysqldump コマンドで新しいデータベースに挿入する。
# mysqldump -u [ユーザー名] -p [データベース名] < [ダンプファイル名].sql
mysqldump -u root -p wordpressdb < wordpressdb_dump.sql
うまくいったか確認してみる。
データベースに入って
# mariadb
>show databases;
とすると、
# mariadb
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordpressdb |
+--------------------+
5 rows in set (0.002 sec)
MariaDB [(none)]> use wordpressdb;
MariaDB [wordpressdb]> show tables;
+---------------------------------------------------+
| Tables_in_wordpressdb |
+---------------------------------------------------+
| wp_options |
| wp_postmeta |
| wp_posts |
+---------------------------------------------------+
データベースのテーブルが作られていれば、成功です。
サイトの確認
サイトの URL (https://exampl.com) やデーターベスのユーザー名、パスワード、データベース名など、変更点が何もなければ、新しいサイトのURLをWEBブラウザで見れば、動作するはずです。
ただし、元のURLと新たなサイトのURLが同じ場合は、名前解決を行う必要があります。
ローカルサイトであれば、webブラウザのパソコンの /etc/hosts に IP と domain名を登録するだけで良い。
vi /etc/hosts
.......
192.168.10.20 example.com
.......
:wp
WEBブラウザから
https://example.com
を入れて、元のサイトのように動作すればOKです。
サイトを新しいサーバーに丸ごと移行
良い点
丸ごと移行では、何も考えずにファイルのコピーとデータベースのコピーで完結する。
プラグインやその他の設定なども簡単に移行できるのでとても便利と言える。
懸念点
長くWordpress サイトを運用していると、さまざまなゴミが溜まってくるが、そのゴミも移行されることになる。
自動でバックアップするプラグインなどを使っている場合は、ハードディスクやSSDを圧迫する。
mysqldump が上手くいかない場合
異なるバージョンがある場合はオプションを増やしてみる
mysqldump -u root -p –single-transaction –default-character-set=utf8mb4 –skip-lock-tables –column-statistics=0 –databases wordpressdb > wordpressdb_dump.sql
mysqldump -u root -p --single-transaction --default-character-set=utf8mb4 --skip-lock-tables --column-statistics=0 --databases wordpressdb > wordpressdb_dump.sql
のような、オプションを使ってみると良いかもしれません。