こんにちは。イマイチ5月病のビッグウェーブに乗り切れていないmatsです。
IMではインフラ基板にAWSを採用していますが、本ブログを含めいくつかのwebサイトではMicrosoft Azureを利用しております。
メインのプロダクト以外は極力マネージドのサービスを利用して、運用負荷を軽減するといったことを目的にAzureを選定いたしました。
(同じPaaSであるherokuでも可能ではあるのですが、Wordpressの管理画面からテーマやプラグインをインストール出来ないためAzureをオススメしております。)
今回はそのAzureにてWordpressをほぼ無料で運用するためのポイントと運用上の注意点をご紹介したいと思います。
基本的に欧米リージョンのみ
Azure上で使用できるMySQLであるClearDBを立てられるのが欧米リージョンのみとなっています。
データベースとのレイテンシを考慮し同じリージョンに立てると、必然的に欧米リージョンを使用することになります。(IMは米国西部がメインです)
ただし、webアプリにはClearDB1インスタンス分の無料枠がついており、1サイト目の構築の際のウィザードにそって作った場合のみ国内に立てることが出来ます。
(ClearDB自体にも無料プランがあるのでややこしいです。。)
DBの容量は20MBまで
ClearDB(MySQL)の無料プランで利用できる容量は 20MB になります。
普通にWordpressを運用していると直ぐにオーバーしてしまう容量ですが、実際に必要な容量はそれほど多くありません。
大部分が投稿記事の編集履歴であったりするので、IMでは「WP-Optimize」というプラグインを使って定期的に削除しています。
https://wordpress.org/plugins/wp-optimize/
(Optimizeすると大体1〜2MBくらいになります。)
アップロードできるファイルは1GBまで
無料プランでは使用できるディスクの容量は1GBになります。
そのため、安定運用するためにはメディアファイルを外部に移すことをオススメしています。
IMでは、プラグインの「WP Read-Only」を使ってS3上にメディアファイルを移しています。
https://wordpress.org/plugins/wpro/
似たようなプラグインはいくつかあるのですが、Wordpress上にファイルを残さず直接アップロード出来るものを選んで下さい。
独自ドメインの利用にはCDNが必要
無料プランではAzure上で独自ドメインを利用することが出来ず、 *.azurewebsites.net の様なドメインしか使用することが出来ません。
そのため、IMではAWSのCDNであるCloudFrontを用いて独自ドメインの実装をしております。
※ これにより、高トラフィック対策と欧米リージョン対策も合わせてできていたりします。
CDNの設定にあたりいくつか注意事項があるのでご紹介しておきます。
(CloudFrontの設定方法になるので、他CDNの場合は読み替えて下さい)
①POSTを許可する
CDNがフォワードするmethodにPOSTがないと、ログインや記事の投稿が出来なくなります。
②フォワードするヘッダーにUser-Agentを追加する
これをしないと、投稿画面のリッチテキストエディタなど一部の表示が正常に動作しなくなります。
③管理画面のキャッシュを無効にする
/wp-admin 配下のコンテンツのTTLを0秒に設定し、キャッシュを無効化します。
※ その他のコンテンツについては、お好みで設定して下さい。
また、CloudFront側のTTLが優先されるようにAzure側のヘッダーのCache-Controlを変更して下さい。
web.config に次のように記載することでキャッシュを無効化できます。
<configuration> <system.webServer> <httpProtocol> <customHeaders> <add name="Cache-Control" value="no-cache, no-store, must-revalidate" /> </customHeaders> </httpProtocol> </system.webServer> </configuration>
④GA関連のCookie以外をフォワードする
Google Analyticsを導入の際に、GA関連のCookieをOriginにフォワードしてしまうと正常に動作しないので、Wordpress関連のものに絞ってフォワードします。
いかがでしょうか。S3とCloudFrontを利用しているため完全無料とはいきませんが、価格帯の割には非常に拡張性のある構成になっているのではないかと思います。また、S3とCloudFrontの利用料もAWSの無料枠内に収まるケースの方が多いかと思います。
Azureは国内事例が少ないのですが、PaaS領域は先進的なプロダクトが多いと思うので興味があればトライしてみてください。