かくてもあられけるよ

セミリタイアしてシェアハウスで暮らすノマドなミニマリストの株主優待日記

お名前.comレンタルサーバーSD-11へのWordPress移転方法

GMOの株主優待キャッシュバックを目当てに、お名前.com共用サーバーSD-11を新規契約し、バリューサーバーからのWordPress移転を試みた。お名前のサーバーで環境を再現して無事ブログを稼働させることができたが、いまいちメリットがない上に契約上の縛りが多いので、諦めてバリューサーバーに戻した。
今どき人気がなさそうなお名前.comのレンタルサーバーだが、あえて他社から移りたいという人の参考に、WordPressをコピーする方法をまとめてみたい。

プラグインなしでWordPressコピー

一般的なWordPressの移転方法としては、運用ディレクトリのファイルをごっそりコピーするのと、移転先でデータベースにインポートする2つの手順が必要になる。WordPressのプラグインを使ってコピーする方法もあるようだが、余計なプラグインは入れたくない。今回はどのサーバーでも使える汎用的な方法を確認しておきたいと思い、プラグインなしでの移転を試みた。

前者の手順はFTPソフトを使うので、サーバー内のファイルサイズはできるだけ減らしておいた方がスムーズだ。試行錯誤した結果、自分の場合はImsanityというプラグインで既存の画像サイズを一括変換したら、半分程度の容量に減らすことができた。

自分でphpMyAdminをインストールする

お名前のレンタルサーバーが特殊といわれる理由は、まずphpMyAdminを自分でインストールしなければならない点だろう。ちなみにバリューサーバーでは管理画面からボタン一発でインストールが完了する。一応、お名前の共用サーバーマニュアルにphpMyAdminのインストール方法は記載されているが、正直面倒くさいだけだ。

phpMyAdminを独自ドメイン以下のディレクトリにインストールするなら、先にネームサーバーをお名前側のものにセットしておかなければならない。後から知ったバーチャルURLという機能を使えば解決できそうだが、とりあえず「http://ランダムな数字.onamae.jp/」という初期設定されているディレクトリ直下にファイルを置いてphpMyAdminを利用できた。

さらに独特なのは、お名前のレンタルサーバーでMySQLのデータベースを新規作成しようとすると、DB名やパスワードが自動生成されて自分で設定できない点が挙げられる。ランダムな文字列の方がセキュリティ上のメリットもあるのかもしれないが、これもバリューサーバーでは任意に設定できるのが普通だったので、違和感がある。

f:id:kenko-san:20171104182655j:plain

お名前にWordPressのファイル群をアップ

FTPで落としたWordPressの関連ファイルをお名前サーバーにアップする。その前に、wp-config.phpというファイルのデータベース名などを、お名前側で自動生成されたものに変更しておく必要がある。以下の4行に該当する。


/** WordPress のためのデータベース名 */
define('DB_NAME', '●●●●');
/** MySQL データベースのユーザー名 */
define('DB_USER', '●●●●');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', '●●●●');
/** MySQL のホスト名 */
define('DB_HOST', '●●●●');

全体で500MB超のアップロードだったが、FileZillaを使ったら時間はかかるものの途中で止まることもなく完了できた。長年FFFTPを使っていたが、FileZillaはタブで複数のサーバーに同時アクセスできたりして便利なソフトだ。 

phpMyAdminのインポート2MB制限

次にphpMyAdmin経由でデータベースの内容をコピーする。移転元のサーバーでphpMyAdminは使えるものと想定するが、いつもバックアップするように、対象のデータベースを選んでzip圧縮してエクスポートすればよい。ここでの注意点は、後ほど使う可能性があるBigDumpというツールでエラーを避けるため、「作成するクエリに最大長」をデフォルトの50,000から1,000くらいに減らしておくことだ。

f:id:kenko-san:20171104181628j:plain

お名前側でも公式マニュアル通りに作業してphpMyAdminが使えるようになったと仮定する。エクスポートしたzipファイルをインポートすればよいだけなのだが、ここで多くの人が引っかかるであろうファイルサイズ制限(2,048MiB)が存在する。

f:id:kenko-san:20171104185933j:plain

phpMyAdminでインポートできるファイルサイズは、デフォルトで2MBになっている。100記事程度のブログだが若干オーバーして3MB近くあった。この制限を外すにはphp.iniファイルの編集が必要で、もしiniファイルを直接いじれる環境ならそうするのが早い。

お名前はphpMyAdminを自分でアップした階層に編集済みのphp.iniを置けば、うまく読み込んでくれる。バリュードメインではphpMyAdminが自動でインストールされるのはよいが、直接いじれる環境にないので、後述のBigDumpというツールを使う必要があった。

もちろんphpMyAdminを使わず直接データベースを操作するとか方法はありそうだが、自分はサーバーサイドの技術に疎いので、なるべく便利なツールを使って片づけてしまいたい。

php.iniを編集して制限解除したものの…

post_max_sizeとupload_max_filesizeの2つの変数を編集する必要がある。php.iniの中に書く内容は以下の程度だ。100MBくらい、大き目に確保する分には問題なさそうだ。

<?php
post_max_size = 100M
upload_max_filesize = 100M
?>

念のため、

<?php
phpinfo();
?>

とだけ書いた適当なphpファイル(info.phpとか)をiniファイルと同階層に置いて、値が反映されたかチェックするとよいだろう。2つの変数が指定した数値に書き換えられていれば成功だ。

f:id:kenko-san:20171104182353j:plain

以上でデータベースの中身をインポートできる人もいるかもしれにない。自分の場合は、2MB制限は外せたものの、今度は500 Internal Server Errorが出てお手上げになってしまった。

巨大データもBigDumpなら扱える

phpMyAdminで大きなバックアップファイルをインポートできない場合、BigDumpというツールを使う方法が知られている。結果的にこれを使えば難なく処理できたので、php.iniの編集とか回りくどいことをしなくても最初からBigDumpを使えばよかったといえる。バリューサーバーのようにphp.iniを直接いじれない環境でも、BigDumpならうまくインポートできることは確認できた。

使い方としては、公式サイトから落としたbigdump.phpの必要個所を書き換え、サーバーにアップして実行するだけ。wp-config.phpと同様に、以下の4行を編集する。

$db_server   = '●●●●';
$db_name     = '●●●●';
$db_username = '●●●●';
$db_password = '●●●●';

作業ディレクトリは、phpMyAdminを入れた「http://ランダムな数字.onamae.jp/」直下で問題なかった。あとでバリューサーバー内でも試した感じでは、BigDumpを実行するのはどこでもよいようだ。

同じ階層に、移転前サーバーのphpMyAdminからエクスポートしておいたsqlファイルをアップしておく。zipファイルのままだとBigDumpが読み込めないので、圧縮して落とした場合は解凍しておく必要がある。

f:id:kenko-san:20171104182300j:plain

BigDumpのエラー対策

bigdump.phpを開いてリストアップされたsqlファイルをStart Importすればよいのだが、ここでエクスポート時に「作成するクエリに最大長」をデフォルトの50,000より下げておかないと、以下のエラーで読み込みがストップしてしまう。

At this place the current query includes more than 300 dump lines. That can happen if your dump file was created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains extended inserts or very long procedure definitions…

自分の場合は、さらに以下のエラーも出た。

Error at the line 54815: ADD KEY `meta_key` (`meta_key`(191));

お名前のDBにも複数のテーブルが生成されているのだが、移転元と見比べるとなぜか行数もデータサイズも大きい。ここに至るまでに何度か読み込み失敗していて、その過程でゴミが溜まってしまったようだ。phpMyAdminやBigDumpでインポートを繰り返すうちに、どんどんデータが追加されてしまったのだろう。

お名前サーバーのデータベースをいったん空にしてやり直したら、ようやくBigDumpがエラーなくコンプリートすることができた。これで準備完了だ。

f:id:kenko-san:20171104182233j:plain

お名前のバーチャルURL機能が便利

お名前サーバーの便利機能で、バーチャルURLというものがある。ネームサーバーの変更前に、ウェブサイトの表示確認ができるサービスだ。デフォルトで無効になっているので、管理画面から有効化すると、「https://サーバー名/ドメイン名/」でアクセスできるようになる。

f:id:kenko-san:20171104181940j:plain

この状態でWordPressの動作確認をするには、インポート完了したphpMyAdminのoptionテーブルで、最初の2行siteurlとhomeを上記アドレスに変更すればよい。

f:id:kenko-san:20171104183930j:plain

その後、パーマリンクの設定が/%post_id%/とかだと個別記事表示がエラーになる可能性がある。その場合は、WordPressの設定画面でパーマリンクをカスタム構造にチェックしたまま「変更を保存」すれば解決するようだ。

f:id:kenko-san:20171104182049j:plain

Simplicityのテーマでブログカードを使っていたら、参照先のURLが異なるのでエラーになるだろう。その他のWordPress機能は、バーチャルURLのままでも問題なく動いていた。最終的にDNSを切り替え本番ドメインで運用を始めたら、上記の2行を元のURLに戻せばよい。お名前のバーチャルURL機能は地味に便利だった。

結局はてなブログが楽

丸一日、試行錯誤してお名前サーバーにWordPressを移転できたが、バリューサーバーと速度も変わらず、セットアップが不便な点も気になった。さらに、1か月契約のつもりだったのに3ヵ月は解約できないという制限に気づき、不信感がつのって解約してしまった。

さんざん骨を折ったおかげで、BigDumpという便利なツールの使い方がわかったのは収穫だった。これでプラグインも使わずに、どんなサーバーにでもWordPressを移転できそうな自信がついた。

正直なところ、作業しながら「これがはてなブログだったらどんなに楽だろう」と何度も思った。WordPressに比べてアクセスが多いのは検証できたし、ページの読み込みも速くてストレスがない。

WordPressほどデザインをカスタマイズできる自由度がないのと、独自ドメインでメールアドレスを運用できないことくらいが、はてなブログのデメリットといえる。サーバーのスペックとしては他社レンタルサーバーに遜色ないスピードが出ているので、Proプランで2年契約14,400円払っても損はないと思う。

ブログを始めた当初の志としては「はてなとWordPressを両方運用して使い勝手を比べてみよう」という意気込みだったが、1年半続けると圧倒的にはてなが便利で収益も上がる気がした。下手にサーバーをいじりたいとかプラグインを使いこなしたいという目的もなく、純粋にブログで記事を書きたいなら、WordPressよりはてなブログをおすすめしたい。