自分の管理しているサイトの一部をサーバー移転したんですが、その際にハマった部分があったので備忘録として残しておきます。
WordPressのサーバー移転手順
現在の環境のまま、サーバーを移転する際の手順は以下の通りです。ドメインやURLを変更する場合でも最後に一括して変更するので手順は変わりません。
旧サーバーからファイルのダウンロード
現在使用しているサーバーからファイルをダウンロードします。FTPクライアントでそのままダウンロードしても良いですが、SSHでログインできるのであれば、一度圧縮してからダウンロードしたほうが早いです。圧縮するコマンドは以下の通りです。
tar zcvf hoge.tar.gz ./hoge
旧サーバーからデータベースのエクスポート
PhpMyAdminを使って データベースをエクスポート します。
- PhpMyAdminより エクスポート対象のデータベース をクリックします。
- データベースのテーブル一覧が表示されたら フォーマット が SQL であることを確認し エクスポート をクリックします。
- エクスポート画面が表示されたら 実行 をクリックします。
- ファイルがダウンロードされたら完了です。
新サーバーでデータベースのインポート
PhpMyAdminを使ってデータベースをインポートします。
- PhpMyAdminより インポート対象のデータベース をクリックします。
- データベースのテーブル一覧が表示されたら インポート をクリックします。
- インポート画面が表示されたら エクスポートしたファイルを選択 し 実行 をクリックします。
『#1273 – Unknown collation: ‘utf8mb4_unicode_ci’』とエラーメッセージが表示される場合には’utf8mb4_unicode_ci’ → ‘utf8_unicode_ci’と全置換します。
『#1115 – Unknown character set: ‘utf8mb4’』とエラーメッセージが表示される場合には’utf8mb4’ → ‘utf8’と全置換します。
- “インポートは正常に終了しました。~”と表示されたら完了です。
新サーバーにファイルをアップロード
新サーバーにファイルをアップロードします。FTPクライアントでそのままアップロードしても良いですが、圧縮してダウンロードした場合には圧縮ファイルをアップロードしてSSHでログインし展開(解凍)したほうが早いです。展開のコマンドは以下の通りです。
tar zxvf hoge.tar.gz
ドメインの操作
ドメインやURLを変更しない場合
旧サーバーから新サーバーへドメインが指すサーバーを変更します。
ドメインやURLを変更する場合
新サーバーでの運用の際にドメインやURLを変更する場合にはデータベースの内容を書き換えます。ただし、単純に変更すると不具合が起きるので専用のツール(PHPスクリプト)を用います。
- 「DATABASE SEARCH AND REPLACE SCRIPT IN PHP」へアクセスし スクリプト をダウンロードします。
- ダウンロードしたファイルを展開(解凍)したら wp-configと同じパス に ディレクトリ(Search-Replace-DB-master)ごと アップロードします。
- ブラウザから アップロードしたディレクトリ (http://yourdomain/wp/Search-Replace-DB-master/など)にアクセスし 必要事項 を入力し、actions より live run をクリックします。
search/replace replaceに 旧アドレス(http://old-site.comなど)、withに 新アドレス(http://new-site.comなど)を入力します。 databese wp-config.phpと同じパスに配置していれば自動的に読み込まれます。 tables 特に問題がなければ all tables をチェックします。 - 処理内容の表示が終われば完了です。
ドメインやURLの変更は以上です。
まとめ
MySQLのバージョンがあっていないとエクスポートしたファイルがそのままインポートできません。特に移行元のサーバーの方がバージョンが新しい場合にはエラーになる可能性が高いので移行先のサーバーはMySQLなどのバージョンには注意してください。