読者です 読者をやめる 読者になる 読者になる

Umi Uyuraのブログ

Titaniumを使ったスマートフォンアプリ開発を中心に、プログラミング関連の作業ログ。

Herokuでルートドメインの静的サイトを構築

Heroku Node.js

気づいたら、せっかくブログ立ち上げたのに3ヶ月以上放ったらかしでした。

週一くらいでアウトプットしていきたい。

無料で静的Webサイトを公開するには

年度末ということもあって、使っている外部サービスなどを整理していたところ、クラウドのサーバーを借りて公開していたWebサイトの一つを、なるべく費用をかけずに継続したいという話があがりました。

アクセス数は非常に少ないものの、一応実績として残しておきたいということと、今後広がりを見出だせる可能性がなきにしもあらずというもので、一応生かしておきたいという意向だったので、Herokuを使って延命させる方法を試すことにしました。

基本的に静的サイトで、アクセスも日に数件というレベルなので、Dynoを増やす必要が発生することは当分なし。

静的Webサイトとして考えるとパフォーマンス的に若干気になるところですが、無料で構築できるのであれば、それでも良いかという判断です。

Herokuに静的サイトを構築

HerokuにはHTMLだけをアップできないので、以前見つけたNode.jsとherokuで静的サイトを簡単につくるのテンプレートを利用させていただくことにしました。

このテンプレートは活用させていただいていて、スマートフォン用のWebサイトのテスト環境が欲しい場合などに、Herokuにアップして、終わったら消すということをやってます。

自分用にForkして、Herokuの環境変数にユーザーとパスワードを設定すれば、すぐにBASIC認証もかけられるようにしたもの使っています。

umi-uyura/node-static-site

Dozensを使ったルートドメイン設定は使えなくなっている

さて、ここで一つ問題になったのは、そのサイトはwwwなどを付けない、ルートドメインによる運用をしていたことでした。

Herokuではルートドメインは使いにくい(推奨されていない)ということはよく耳にしていたので、

サブドメインを使う場合の運用は何度かやったことがあるのですが、ルートドメインは使ったことがなかったので、

まずは、以前から見かけていた、Herokuでrootドメインを独自ドメインで使うの方法を試すことにしました。

やはり現在はIPアドレスベースの指定はできないようで、まずDozensにもAdd Heroku Records?のチェックなどがなくなっていましたし、直接IPアドレスを指定してみたところ、Access to bamboo HTTP endpoint deniedというエラーが出てしまったので、この方法は諦めることにしました。

CloudFlareを使ったルートドメインを採用

プロフェッショナルのための実践Heroku入門にもカスタムドメインの利用について書かれていたので読んでみると、Heroku Dev Centerで紹介されているルートドメインを扱えるDNSサービスとして、以下の2つが挙げられていました。

  • DNSimple
  • DNS MADE EASY

もっと情報があるかもと思って、Heroku Dev CenterのCustom Domainsを見たところ、さらに以下の2つが追加されていました。

  • easyDNS
  • CloudFlare

これらのうち、CloudFlareは正確にはCDNサービスらしいのですが、無料でDNSが使えるようだったので、以下の記事を参考にしつつ、さっそくアカウント登録して設定。

herokuでwww無しのネイキッドドメインを使う - xarsh

Webサイトを追加すると、自動的に現在のDNS設定を取り込んでくれるようでしたが、IPアドレスベースになっていたので、一旦全て削除。

以下の様な感じで該当ドメインとHerokuアプリのURLを設定。

f:id:umi-uyura:20140328233457p:plain

それまで使っていたDNSから、CloudFlareのDNSへ切り替えを実施。

しばらくしてから該当ドメインへアクセスして、Heroku側のアクセスログに記録が出たのを確認。

数日その状態で並行稼動させつつ、旧サーバーにボットやスパム的なものしかアクセスが来ていないことを確認して、旧サーバーはめでたく削除。

ドメイン使用料が年間920円かかりますが、これでサーバー費用については無料にできたので、このサイトに陽が当たる時が来るまでは、ひとまずこれで凌いでおこうと思います。