Xserver内でサーバーの移動をした。
もう同じことはしないだろうけど、この記事はその記録。
Xserver内でサーバー移動した理由
Xserverのキャンペーンが理由。
特定期間内に新規申込みした人は料金が半額になるというので、既にXserver内でサーバー契約をしていたけど、新たに申し込んで半額の恩恵を受けようという目論見。
一応事前に調べた段階では、サーバー移行はそれほど難しい作業でないということだった。
しかしながら、これは新サーバーを契約してから気付いたのだが、、、Xserver”内”のサーバー移行はちょっと話が違った。
別会社からXserverに移行したり、あるいはXserverから別会社に移行するようなサーバー移行は、旧サーバーのドメイン契約を残したまま、新サーバーでもドメイン契約をできるのだが、
Xserverはその仕様上、旧サーバーのドメイン契約をいったん解除してからでないと、新サーバーでドメイン契約ができなかった。
つまり、旧サーバーでexample.comというドメインを登録し、サイト運営をしている人は、いったん旧サーバーでexample.comのドメイン登録を解除してからでないと、新サーバーにexample.comを登録できない、という仕様。
これのお陰で、旧サーバーから新サーバーに移行する際、一時的にexample.comにアクセスできなくなる、ということが起きる。
たぶん企業とかだと大変なんだと思う。
あと、上記のような問題とは別に、Xserver内のサーバー移行について解説しているブログが全く見つからないので、暗中模索状態で作業を進めないといけないのが大変だった。
ということで、以下はやったこと。
実際の手順
以下の手順は私が調べながら行った手順であり、正しい方法であるとか、安全な方法であるとか、そういうのには一切責任が持てない。
もし真似るにしても完全に自己責任である。
質問などにも答えられない(答える気がない)。
0:色んなデータを保存しておく
旧サーバーから以下の情報を保存。
- MySQL(phpmyadminからエクスポート)
- public_html
- メルマガソフト(Cyfons)などを使っている場合はそのバックアップ
1:旧サーバーのドメインを削除する
これをやると、一切の情報にアクセスできなくなる。
2:新サーバーにドメインを登録する
前述のとおり、Xserverはその仕様上、旧サーバーのドメイン情報を削除しないと、新サーバーに登録できない。
3:新サーバーで色々設定する
- メールアカウント設定
- MySQLデータベース設定(色々メモしておくこと)
- SSL設定(有効化)
4:保存しておいたMySQLをインポートする
インポートする前に保存しておいたMySQLファイルをチェックして、以下の記述があれば削除しておく。
(私の場合は旧サーバーのデータベース名が記述されていて、エラー原因になってた)。
「CREATE DATABASE IF NOT EXISTS
MySQLデータベース名
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USEMySQLユーザー名
;」
で、インポートする。
インポートする際は、左側の一覧表示から、MySQLを設置したいドメインを選ぶこと(選ばないとエラーが表示される)
色んな項目を選べるけど、全部そのままでOKだった。
5:wp_config.phpを編集する
保存しておいたpublic_htmlフォルダ内にある、wp_config.phpを開いて、以下の情報を編集する。
新しいMySQLデータベースの情報に書き換える
define(‘DB_NAME’, ‘新しいDB名’);
define(‘DB_USER’, ‘新しいDBユーザー名’);
define(‘DB_PASSWORD’, ‘新しいパスワード’);
define(‘DB_HOST’, ‘localhost’); // 通常はそのまま
6:public_htmlをアップロードする
FTPソフトで新サーバーのドメインをチェックすると、既にpublic_htmlフォルダがある。
まずそのフォルダ内の情報をすべて削除する。
次に、保存しておいたpublic_htmlの中身をアップロードする。
ここまでやったらひと段落。
たぶんドメイン設定やSSL設定の反映に時間がかかるから、やれることがなくなる。
エラーが起きていなければ、反映が終了した時点で、Webページが表示されるようになっているはず。
表示されなかったら、ひたすら原因追及とその解明。
メルマガ編
私はCyfonsというメルマガ配信ソフトを使用している。
Cyfonsはサーバー設置型なので、今回のサーバー移行の影響をもろに受けた。
サーバー移行に伴い、以下のような期待を持っていたが、どれも叶わなかったので前提として書いておく。
前提
- 会員情報や過去に送ったメール情報などをFTPソフトとかから移行できないかなと思っていたけど、自分にはできなかった。
- 会員情報やステップメールは既存のバックアップ機能を使って、号外メールは1つ1つ手作業でメモ帳にコピーしてバックアップを取った。
- URL短縮で作った過去の履歴は全部とんだ(涙)
- たぶんやりようによっては、上手いことデータ移行させられるんじゃないかと思ってる
具体的にやったこと
サーバー移行前に「会員情報」や「過去メール情報」のバックアップを取っておく。
新サーバーにドメイン設置が完了したら、そこにCyfonsを導入していく(購入時と同じ手順)。
作業の流れはこれだけ。
管理画面からログインできない問題
購入時と同じ以下の手順を踏んだところ、管理画面からログインできない問題が発生。
- MySQLのデータベース作成
- public_htmlにcin.phpをアップロード
- ドメイン名/cin.phpを表示させ諸々入力
- 管理画面でログイン情報入力
エラー表示:
Warning: session_start(): open(/home/旧サーバー名/ドメイン名/xserver_php/session/sess_ef2295ed9ab2bcca9502a834675ce4b3, O_RDWR) failed: No such file or directory (2) in /home/新サーバー名/ドメイン名/public_html/member/common/super_session.php on line 55 Warning: session_start(): Failed to read session data: files (path: /home/旧サーバー名/ドメイン名/xserver_php/session) in /home/新サーバー名/ドメイン名/public_html/member/common/super_session.php on line 55 」
ざっくりとした意味:
ログイン(セッション)しようとしたんだけど、あなたが指定した場所(旧サーバー)は現在のサーバー(新サーバー)で見つけられませんでした
つまり、旧サーバーなんて指定していないんだけど、なぜか旧サーバー内の場所を、新サーバーから探せという無茶指示をしていることになっている。
解決した方法:
- Xserverのファイルマネージャ―を開く
- /home/新サーバー/ドメイン名/xserver_php/session/ を探す
- あれば権限を700に変更(元々711だった)、なければフォルダを作る
- public_html/member/ の中に、「.user.ini」という名前で以下の内容のファイルを作る。
「session.save_path = “/home/新サーバー/ドメイン名/xserver_php/session”」
ここまでやったら、無事にログインすることができた。
以上でXserver内のサーバー移行は完了。
この記事は上記作業から数週間してから書いているが、今のところ問題は出ていない(ように思われる)。
この記事が誰かの助けになれば幸い。