CLIでのWordpressのドメイン移行方法
Wordpressのお引っ越しについて
Wordpressにおいて、下記のようにお引っ越しをすることがよくあります。
- サイトを引っ越しする際
- 例えば example.com -> example.net へサイトを移行
- ローカルで動かしていたサーバをリモートへデプロイする際
- 例えば localhost -> example.net へデータもそのまま移す
ただ、このように別ドメインへ移行する際、
- ファイルを全てそっくりそのままコピー
- 移行元のDBのデータをエクスポートして、移行先でインポート
という手順を踏んでも、移行先でそのまま動作しません。これは、ドメイン名がデータベースの中に入り込んでいるせいなのですが、この問題自体は検索すると詳しい手順がたくさんヒットします。
殆どの記事はよく出来ていて困らないと思うのですが、SSH使える人であればもう少し簡単に移行出来るのになと思ったので、メモしておきます。
なぜこの記事を書いたか
移行方法を検索するとよく出てくるのは、こちらのツールを使用する方法です。
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
検索した時に出てくる方法だと、このツールをWebから見れるようにデプロイして移行する方法が多く取られているようにみえました。しかしこのツール、コマンドラインのインターフェースも用意されているので、僕的にはその方がメリットあるなと思ったので書き残しておこうかなと思った次第です。
メリットあると思った理由は以下の通り。
- 誰でもアクセスできる場所にさらされる期間がないため、セキュリティリスクが低い
- cliは文字のため、どのような引数を指定して移行したのかをまるごと記録として残せる
- ダウンロードしてすぐに実行出来るので、煩雑さがない
お引っ越し方法
- 先程のツール のContributionsセクションに書かれてある、 GitHubのURL からアクセス
- アクセスする前に、きちんと Download Search Replace DB セクションの内容は読んでおきましょう。
- 2017/10/16現在、emailアドレス入力→ダウンロードした時と、git-cloneした時のものの内容は同じようです。
- 移行先のサーバへSSHで接続し、
git clone https://github.com/interconnectit/Search-Replace-DB.git
する- git-cloneする場所はどこでもいいです。DocumentRoot以下は避けましょう
cd Search-Replace-DB
するmove.sh
等の名前でファイルを作成し、その中に下記のスクリプトを入力
php srdb.cli.php \ --host localhost \ --name <データベース名> \ --user <ユーザー名> \ --pass <パスワード> \ --search "<移行元ドメイン>" \ --replace "<移行先ドメイン>" \ --dry-run
引数の詳細は https://github.com/interconnectit/Search-Replace-DB#cli-script を確認してください。
. ./move.sh
を実行- ※
--dry-run
がついているので、実際にはまだ実行されません - ここでどれだけのクエリが実行されるかを確認できる
- ※
move.sh
を再度開き、--dry-run
を削除- 再度
. ./move.sh
を実行- 実際にクエリが実行されます
- 移行先ドメインへアクセスして動作しているかを確認
その他
Notice: A non well formed numeric value encountered in /path/to/Search-Replace-DB/srdb.cli.php on line 202 Call Stack: 0.0012 387272 1. {main}() /path/to/Search-Replace-DB/srdb.cli.php:0 0.0050 526432 2. icit_srdb_cli->__construct() /path/to/Search-Replace-DB/srdb.cli.php:227 0.0092 544968 3. icit_srdb_cli->replacer() /path/to/Search-Replace-DB/srdb.class.php:337 0.5026 642544 4. icit_srdb_cli->log() /path/to/Search-Replace-DB/srdb.class.php:995