レンタルサーバーから Heroku に WordPress を移行した理由(2016年版)

5年程 さくら VPS で WordPress を運用してきたが、色々と問題がでてきたので、Heroku で WordPress 移行した。レンタルサーバーで WordPress 運用をするデメリットと Heroku に移行するメリット・デメリットを書こうと思う。

なお、以下に書くレンタルサーバーのデメリットは私の怠惰さが問題でもあるので、これから WordPress を導入しようとする方は客観的に判断していただければと思う。

レンタルサーバーで WordPress を運用するデメリット

  • Apache のログファイルの肥大化
  • WordPress のバージョンアップがうまくいかない
  • 気軽にテーマ編集やプラグイン追加がしにくくなる
  • 気軽にテスト投稿ができない
  • 自分で 5 年前に作った LAMP 環境の構成を忘れる
  • サーバー環境の更新方法がわからなくなる

Apache のログファイルの肥大化

Apache のログファイルが肥大化していき、次第に重くなってサーバーダウンする。これを根本解決するにはおそらくログローテーションの設定をしなければならないが、面倒なので一定期間ごとにログファイルを手動リセットw 良くない運用だが、根本解決するコストが結構めんどくさい。

WordPress のバージョンアップがうまくいかない

WordPress のバージョンアップが、ある時うまくいかなくなった。更新作業に失敗すると実際のサイトがダウンした状態になるので下手なこともできないという不安と戦いながら作業するのが大変だし、途中で投げ出すこともできないので精神的な疲労がでかい。

また、自分の場合は Markdown 形式でブログ投稿したかったため、 Jetpack の Markdown を利用したかったが、古いバージョンでは動作しないということでバージョンアップが必須であった。苦労してバージョンアップしたが、過去の記事データの影響か、 Markdown が全く有効にならなかった。一方 heroku で試験的に動かしていた方では、蓄積データがないせいか、古いファイルがないせいか理由は分からないが Jetpack の Markdown が正常に動いていたので、それも移行の理由のひとつとなった。

気軽にテーマ編集やプラグイン追加がしにくくなる

テーマ編集やプラグイン追加をすると本番環境に反映されるので(ステージングや開発環境があれば別だが)、気軽に導入テストができない。

気軽にテスト投稿できない

非公開で記事を投稿できるが、本番環境で気軽に投稿することはできないのはあまり良くない。

自分で 5 年前に作った LAMP 環境の構成を忘れる

さくら VPS で一から LAMP 環境を作った時は楽しかったしやりがいがあって面白かったが、 5 年も経つと構成が曖昧になってくる。ドキュメントにまとめれば良いのかもしれないが、未来の自分のためだけにドキュメントをまとめるのもアホくさい。

サーバー環境の更新方法がわからない

自分の場合、 5 年前に様々なサイトを参考に手探りで作った環境だったので、LAMP 環境のバージョンアップができなかった。それを調べるのも面倒になった。そのため、セキュリティ的にも脆弱な環境になっていく。

要は

色々と面倒だからラクしたかった。でもはてなブログみたいに用意された環境ではなく、色々と自分でカスタマイズはしたかった。

Heroku で WordPress を運用するメリット

  • 面倒なところは Heroku がブラックボックス化してくれる
  • サーバーがダウンしてもワン・コマンドで再起動できる
  • LAMP のバージョン管理をしなくて良い
  • 諸々の実験がラクにできる
  • git 管理しやすい
  • ローカルを開発環境にして git push で本番反映

面倒なところは Heroku がブラックボックス化してくれる

ログファイルの管理や LAMP の構築など、面倒なところを Heroku がブラックボックス化してくれる。また、近年 http のサイトが不利になっているなか、 https の URL も用意されているのは良い。

サーバーがダウンしてもワン・コマンドで再起動できる

もしサーバーがダウンしても以下のワン・コマンドをローカルから叩くだけでサーバー再起動ができるし、これは heroku 共通のコマンドなので apache コマンドのありかなど覚える必要がない。もっともサーバーダウンの原因が他のところによる場合は根本の原因を追求しなければならないが、一時的な負荷によるものなどよくあるものはなにも考えずにワン・コマンドで。

$ heroku restart

LAMP のバージョン管理をしなくて良い

apache や MySQL、 PHP などセキュリティに問題があるバージョンが合っても Heroku 側がなんとかしてくれるので、こちらで面倒なバージョンアップをする必要がない。

諸々の実験がラクにできる

テーマの反映やプラグイン導入、テスト投稿など試験的に導入したい機能を試すために、ローカルの開発環境を用意できる。

git でバージョン管理しやすい

Heroku 自体が git push でデプロイする形式ということもあり、自然にリポジトリを git で管理する流れになる。 github で管理すれば、複数の PC で開発、デプロイが簡単にできる。

ローカルを開発環境にして git push で本番反映

ローカル環境(自分の場合 Mac)で開発やプラグインやテーマを好きなだけ時間をかけて決めて git push すると一発でデプロイできる。

Heroku で WordPress を運用するデメリット

  • 本番環境のファイル更新をするのは NG
  • 一通りの環境を構築するのが結構大変だった
  • 最安構成にするためには色々と工夫が必要
  • 最新の情報が少ない

本番環境のファイル更新をするのは NG

本番環境のファイルを更新したり、ファイルをアップロードすること自体は可能だが、 heroku を再起動すると全ての更新がリセットされる。heroku はそういうサービスなのでそう割り切るしかない。そのため、以下のような問題が発生する。

  • 記事のための Heroku に画像アップロードできない
  • プラグイン、テーマをダウンロードしてもリセットされる

これらはもちろん対応する術がある。

記事のための Heroku に画像アップロードできない

これは WordPress のプラグインを用いることで簡単に他のクラウドサービスと連携できる。具体的には S3 や Cloudinary などのサービスがある。
自分の場合は最大限ケチりたかったので、Cloudinary で無料で管理する方法を選んだ。

プラグイン、テーマをダウンロードしてもリセットされる

これも画像問題と同じことが原因である。これを回避するためにローカル環境でダウンロードして git push でデプロイするのが基本となる。ローカル環境に手動でプラグインをダウンロード&配置しているような記事を見かけたが、これだと正常に配置できたか確認できない。そのため、ローカルでも動作する環境を構築することを強く勧める。

一通りの環境を構築するのが結構大変だった

ローカル環境で動作し、Heroku にデプロイでき、画像アップロード問題も解消するためには結構な労力が必要だった。もっとも情報収集・選別に費やした時間が圧倒的に大きかったので、これ以降の記事を読んでいただいた方はその部分がラクになればと思う。

最安構成にするためには色々と工夫が必要

これも上記と同じようなことだが、Heroku で最安構成にするためには工夫が必要だった。私の場合、Heroku は過去に登録した Legacy プランが残っていたのでそれを利用して、実質ドメイン代だけで年間1600円(初年度400円)くらいで運用できる環境になった。これから Heroku を始める方は Heroku 代 $7 (今だと714円) + ドメイン代になるはず。それでもドメインによっては月額 1000 円以内で運用できるはず。

最安にするためには、

  • MySQL をあきらめて PostgreSQL を採用
  • ローカルを開発環境にする
  • 古い記事を信じない(この記事も古くなったら信じないほうが…)

MySQL の無料プランの容量が小さいのに対し、PostgreSQL の方が大きい(これは 2016 年 9 月時点なので導入の際には確認したほうがよい) 。PostgreSQL を採用したことによって、月額 $10 削減できるが、マイナーな構築方法だったので、その分情報も少なく導入コストが膨らんだ。

最新の情報が少ない

クラウドサービスの価格改定などが最近活発にされており、過去の記事で紹介されているサービスがほぼ課金サービスとなっており、気軽に使えない。可能な限りケチりたかったので、最新のケチな運用方法を知るのに時間がかかった。しかし、この記事を 2016 年付近に読んでいる方には役に立てばと思う。

まとめ

以下つらつらと書いてきたが、あまりまとまってなくて、ただラクしてお金払いたくないとゴネているだけな気がしてきた。実際にどうやって構築するか気になる方は次の記事に読み進めて欲しい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です