たった3ステップ!wordpressをサーバー移転する方法

さてさて、これまでアクセスがそれほど多くなかったので、VPSサーバー(HDDバージョン)でも充分ページ表示が早かったのですが、最近になってアクセスが増えたこともあって、記事の表示が少しモサッとするようになってきました。

そこで、せっかくIT技術者なので、サーバーをSSDへ変更し、プログラム実行環境も最新のものに移行させることにしました。

ということで、今回はwordpressを効率的にサーバー移転する、3ステップをご紹介します。

※ ただし、移転にはsshを使いますので、多少のITスキルが必要になります。もし詳しくない方はプラグインなどでの移転をおすすめします。

移転するファイル、データの準備

移転させる必要があるのは、以下の2つです。

  • wordpress本体
  • DB内のデータ

ひとつひとつ見ていきましょう。

wordpress本体を1つのファイルにする

wordpressフォルダを以下のようなtarコマンドを使って、ひとつのファイルにまとめます。

tar -zcvf wordpress.tar.gz wordpress_folder

ただし、BackWPupなどのバックアッププラグインを使っている場合はバックアップファイルは除いておくことをおすすめします。tarコマンドで作成されるファイルサイズがとてつもなく大きくなってしまう可能性がありますので。

ちなみにBackWPupの保存先は以下のようになります。

uploads/backwpup-xxxxxx-backups/

データベース内のデータをエクスポートする

次にDB内のデータをエクスポートします。私の環境ではMySQLを使っているので、コマンドはmysqldumpです。

mysqldump -u **** -p db_name > db_name.dump

※ パスワードを聞かれるのでDBのパスワードを入力してください。

新サーバーに2ファイルを転送する

scpコマンドを使って旧サーバーから新サーバーへwordpress.tar.gzdb_name.dumpを「ダウンロード」します。

scp -P 22 admin@xxx.xxx.xxx.xxx:/home/usernamme/wordpress.tar.gz ./

ちなみに-Pはポート番号で、公開鍵を使っている場合は-i鍵ファイルを指定します。

※ 気にならないようでしたら、ウェブ上から移転ファイルにアクセスできるようにしておいて、wgetでダウンロードする方法でもいいかもしれません。

ファイルとDBデータを元に形に戻す

wordpress.tar.gzのダウンロードが完了したら、ウェブサーバーがアクセスできる場所へ展開します。

tar -zxvf wordpress.tar.gz

そして、データベースは以下のようにインポート。

mysql -u ***** -p db_name < db_name.dump

あとは、wordpressのパーミッション、ウェブサーバーとドメインの設定をすれば移転は完了です。

おつかれでした!

MySQLのインポートでエラーが発生したら

ただし、私の環境のようにDBのバージョンによっては、インポート時に以下のようなエラーが発生することがあります。

Unknown collation: 'utf8mb4_unicode_520_ci'

これは、新サーバーにはない文字コードが使われているためで、修正するためにはdb_name.dumpファイル内に書いてあるutf8mb4_unicode_520_ciutf8mb4_unicode_ciへ変更する必要があります。

さすがに手作業でひとつずつ変更はできないので、以下のコマンドを使って一気に置換することにしました。

sed s/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g db_name.dump

これでうまくインポートすることができました。

おわりに

これまでサーバー移転と言えば、一度ローカルに全てのファイルとデータをダウンロードして新サーバーへアップロードしていましたが、よくよく考えたらサーバー間でやればいいことに気がづきました。今更ながらですが(笑)

結果として、サーバー移転は全く労力&時間を使わずに完了することができました。

なお、新しいサーバーはSSD + 最新環境なので以前と比べるとまさに爆速です!

この環境でこれからも皆さんに喜ばれる記事を書いていきますので、どうぞよろしくお願いいたします。m_ _m

ではでは。