九保すこひ@フリーランスエンジニア|累計300万PVのブログ運営中
さてさて、これまでアクセスがそれほど多くなかったので、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.gz
とdb_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_ci
をutf8mb4_unicode_ci
へ変更する必要があります。
さすがに手作業でひとつずつ変更はできないので、以下のコマンドを使って一気に置換することにしました。
sed s/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g db_name.dump
これでうまくインポートすることができました。
おわりに
これまでサーバー移転と言えば、一度ローカルに全てのファイルとデータをダウンロードして新サーバーへアップロードしていましたが、よくよく考えたらサーバー間でやればいいことに気がづきました。今更ながらですが(笑)
結果として、サーバー移転は全く労力&時間を使わずに完了することができました。
なお、新しいサーバーはSSD + 最新環境なので以前と比べるとまさに爆速です!
この環境でこれからも皆さんに喜ばれる記事を書いていきますので、どうぞよろしくお願いいたします。m_ _m
ではでは。