LoginSignup
1
1

More than 5 years have passed since last update.

WordPressサーバをCPIからクラウド環境へ移設

Posted at

CPIからのサーバデータ移設

CPIからサーバデータを移設するうえで、クラウドサーバと違う大きな特徴はSSH接続でコマンド実行できないことでしょう。※SSH接続に対応しているプランもあります。
SSH接続できないレンタルプランの場合、以下のような制約が発生します。

  • ファイルを移行するのにFTPでしか接続できない
  • DBデータへのアクセスはphpMyAdminに限られる

WordPressのサーバデータ移設時に必要な、ファイルデータとDBデータの移行の方法と注意点について記述します。

ファイルデータ

SSH接続ができないレンタルプランでも、FTPによる接続が許可されています。
移行先がクラウドサーバーの場合、移行方法としてlftp コマンドを使うことができます。

WordPressのファイルデータの移行をするためには、レンタルサーバ上のドキュメントルートを移行先のドキュメントルートと同期すれば良いです。
例えばCPIのGシリーズ,2007シリーズ、Xシリーズの場合、httpのドキュメントルートは /http、httpsのドキュメントルートは /secure です。移行元のレンタルサーバのドキュメントルートを確認しておきましょう。

では、lftp による移行の方法を以下にご紹介します。

lftp による移行方法

インタラクティブモードの場合

移行先のサーバから、インタラクティブモードでlftpを起動して移行元に接続します。

# lftp
lftp :~> open username@***.***.***.***
Password:

隠しファイルも含めて同期するように設定

:~> set ftp:list-options -a

例えば移行元のドキュメントルートが/html、移行先のドキュメントルートが/var/www/htmlの場合は
以下のように実行します。

:/html> mirror -a -n /html/ /var/www/html/

mirror に-aのオプションを付けると、owner, group, パーミッション を保存したまま同期します( --allow-chown --allow-suid --no-umask と同じ)。

-n(--only-newer) は新しいファイル・ディレクトリだけを対象に同期するオプションです。
初めて実行する際は不要ですが、再実行する際に新しいものだけを持っていくことができます。
なお(CPIに限った話ではありませんが)、移行先で wp_config.php を更新している場合、
同期を再実行する際に wp_config.php を上書きしてしまわないように 注意してください。
-n オプションはその防止策にもなりますが、移行先のwp_config.phpの方が新しい場合にしか有効でないので、
必要に応じて退避するか、-x(--exclude) オプションで明示的に除外を指定しておいてもよいでしょう。

一気に実行する場合

以下のコマンドで、上記のインタラクティブモードで行ったことを一気に実行することができます。

lftp -u username,password ***.***.***.*** -e 'set ftp:list-options -a; mirror -a -n /html/ /var/www/html/'

所有者の変更

CPI側の所有者がftpになっていることがあるので、ownerとgroupを移行先の環境に合わせて変更します。ドキュメントルートが/var/www/htmlの場合は以下のように実行します。

# chown -R apache.apache /var/www/html/

DBデータ

CPIの共用レンタルサーバ上のDBデータにアクセスするには、ウェブのコントロールパネルからphpMyAdminを起動します。

CPIは複数のMySQLバージョンに対応していることがありますが、
それぞれに複数のDBが設置可能です。移行対象のデータベースを確認しておきましょう。
例えばあるプランではMySQL4.0と5.0に対応しており、管理画面を開くとそれぞれ別のphpMyAdminが表示されます。

Screenshot-2017-11-16 コントロールパネル.png

エクスポート

phpMyAdminを開いたら、WordPressのデータベースを開いてテーブルをエクスポートをします。(データベースのエクスポートでもOK。)
キャプチャ2.PNG

エクスポートする時は、サイトデータの大きさによって全データエクスポートされないことがあるので、注意してください。(CPIの注意点というよりphpMyAdminの注意点ですが…)
エクスポートに失敗したとエラーメッセージが出る場合はまだいいのですが、エラーメッセージが出ないこともあるので、全件が移行できたかどうか必ず確認する必要があります。
確認方法は、
 ①出力されたSQLが全テーブル分出力されているか確認する
 ②レコード数を控えておいて移行先の件数と比較する
などが考えられます。
キャプチャ4.PNG

全件エクスポートできていない場合の対応策としては、
 ①圧縮形式を変えてみる
 ②テーブル毎に小分けにしてエクスポートする
など、工夫してみてください。
ちなみに、私は「gzip形式」でエクスポートした時はテーブル4つ分しか出力できなかったのですが、
「bzip形式」にしてみたところ全件無事に出力することができました。

インポート

次は、ローカルにダウンロードされたDBデータを移行先でインポートします。
移行先にphpMyAdminがインストールされている場合は、もちろんphpMyAdminでインポートすることも可能ですが、ファイルサイズによってはうまくインポートされない場合もあるので、直接サーバにファイルを送ってmysqlコマンドで取り込んだ方が無難かもしれません。
phpMyAdminでエクスポートしたデータは、MySQLでエクスポートしたデータと同じように取り込むことができます。

ローカルPC(Windows)からLinuxサーバにファイルを転送する方法は、例えばTeraTermを使って、こんな感じで送れます。↓
参考:TeraTermで効率良くファイル転送

移行先サーバのDBを準備

WordPress用のデータベースとユーザー作成します。移行元と同じにする場合は、あらかじめ移行元のwp_config.phpファイルなどで確認しておきましょう。

# mysql -u root -p
Enter password: 

mysql> create database wp_db;
Query OK, 1 row affected (0.04 sec)

mysql> grant all privileges on wp_db.* to wp_user@localhost identified by 'wp_password';
Query OK, 0 rows affected (0.06 sec)
転送したデータをインポート
# mysql -u root -p wp_db < ??????.sql
wp_config.phpを修正

上記で設定したWordPress用のデータベース・ユーザー、パスワードなどが移行元と異なる場合は変更します。
また、移行元のCPIサーバは 代替ポート番号が指定されている 事が多いため、移行先のMySQL のポート番号に合わせてDB_HOST 値を変更します。
デフォルトの3306 番ポートを使う場合は、DB_HOST 値の :3307などと指定されている部分を:3306とするか、削除すれば大丈夫です。

/** WordPress のためのデータベース名 */
define('DB_NAME', 'wp_db');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'wp_user');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'wp_password');

/** MySQL のホスト名 */
define('DB_HOST', '127.0.0.1');
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1