wordpress icon

WordPress site まるごと移行

Wordpress サイトの移行をマニュアルで行う。

WordPressサイトの移行方法

WordPress サイトやサーバーを移行する方法には、

  1. プラグインを使う
  2. 標準のインポートやエクスポートを使用する
  3. マニュアルでファイルコピーとmysqldumpなどでデータベースを移行する

が考えられるが、Wordpress の仕組みを勉強するために、マニュアルの移行を検討する。

マニュアルで移行するには

WordPress のサイトをマニュアルで移行する方法は、

  1. 元のデーターベースを取り出す
  2. WordPress のディレクトリをまるごと新しいサイトにコピーする
  3. 新しいデータベースにユーザーとデータベースを作成する
  4. 元のデータベースを新しいサイトのデータベースに入れる
  5. 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
				
			

のような、オプションを使ってみると良いかもしれません。

Related Posts

wordpress icon

WP-CLI インストール

WP-CLI は WordPress を管理するためのコマンドラインインターフェースで、プラグインのアップデートなどの実行ができる。