背景
AWSで仮想サーバーを立てて個人アプリを作ったはいいが、如何せんコストがかかりすぎている。(月5000円くらい)
そのため、herokuの使用を検討した。
しかし、herokuの無料プランだと、以下の問題点があった。
- 30分間アクセスがないと、herokuがスリープしてしまい、サイト表示スピードが著しく落ちる。
- 独自ドメインのSSL化は有料プランでないとできない。
上記の問題を解決できないかと検討していたところ、解決策を発見したので備忘録を兼ねて記事を書くことにした。
前提条件
- herokuでのデプロイが完了している。
- お名前ドットコムで独自ドメインを取得している。
サイト表示スピードの高速化
→ GASを使用して、定期的にサイトにアクセスさせることで解決可能。
GASのスクリプト
function portforio_site_access()
{
var response = UrlFetchApp.fetch('sleepさせたくないアプリのurl');
}
UrlFetchApp
はGASに用意されているクラス。このクラスでfetchメソッドを使ってあげることで、URLにアクセスできる。今回はパラメータなどをつける必要がないので、fetchメソッドのみ使用したが、何か別の処理を自動化する際に、パラメータを付与してリクエストを行うことも可能らしい。
ref: https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app
独自ドメインのSSL化
→ Cloudflareをherokuアプリとの間にかませる。
Cloudflareとは?
アクセス負荷の軽減や、ネットワーク保護を行ってくれるサービス。
ref: https://www.cloudflare.com/ja-jp/learning/what-is-cloudflare/
Cloudflare上の設定
ドメインの追加
https://www.cloudflare.com にアクセスして、Get Startedを選択。
その後、取得した独自ドメインを入力して、Add siteを選択。
プランの選択
DNSの追加
下記画像のTypeにはCNAME、Nameには独自ドメイン、Targetにはherokuドメインを入力。
入力後、Saveをして、Continueをクリック。
ネームサーバーの確認
下記画像のAdd Cloudflare's nameserversをコピーする。(2つともコピーしてください。)
SSL/TLSの確認
お名前ドットコム側の設定変更
下記画像のネームサーバー1と2に先ほどコピーしたものを貼り付ける。
アプリ側の設定(今回はRailsで作ったアプリを想定しております。ここは適宜読み替えてください。)
config.force_ssl = true # デフォルトだとfalseになっているので、trueにする。
heroku側の設定
herokuのhttps://dashboard.heroku.com/apps/アプリ名/settings
に遷移して、下記画像の赤枠部分をクリックし、独自ドメインを入力する。
以上で設定完了になります。
設定してから反映されるまで、1~3日ほどかかるようなので気長に待ちましょう。