2023年1月4日更新
Herokuの無料プランがなくなってしまって、本記事のタイトルから嘘になってしまったのでタイトルを修正します。(元の記事タイトルは「完全無料でRailsアプリを公開する方法」でした。。。)
記事の中身は若干修正しましたが、ほぼ無料時代のものですので、現状と異なる点はご容赦ください。
はじめに
初めて記事を書きます。
私が最近、Railsでサイト( BountyHunterという賞金切り口のコンテスト情報集めサイト。有料化や、ドメインの更新に伴い閉鎖 )を公開しましたので、その構成やら苦労話をつづります。(宣伝も兼ねて)
なお、タイトルにも記載していますが、無料で公開することにこだわって作ったため、使い勝手は良いとは言えない点は許していただければと思います。
また、冒頭にも記載した通り、Herokuの無料プランがなくなってしまったため、無料ではなくなりました...
なぜ無料にこだわっているのか
そもそも、私がプログラミング経験がないことから端を発しておりまして、Webアプリを作って継続的に育ててみたいと思ったところから、なんとなく身近で開発している人がいたRailsを選択し、まずはRails Tutorialを勉強し始めました。
Rails TutorialではCloud9を開発環境として使うのですが、AWSの最小構成にしていても1年以上経過すると無料枠が使えなくなって有償になります(極少額ですが)。有償になると、クレジットカードに請求が来たりと家庭内でコソコソ勉強している身からすると面倒なので、完全無料で実現しようと思い、Rails Tutorialをなんとか完走し、開発環境を無料の環境に乗り換えることを画策し始めました。
ま、無料に越したことはないですし。
どんな環境か
Railsのアプリを公開するにはいくつか検討すべき構成要素があります。
- Webサーバ
- DBサーバ
- 独自ドメイン
- HTTPS
- 画像ストレージ(後述)
Webサーバ
まず、Web兼アプリケーションサーバについてはRailsのアプリであればHerokuを使うことで無料での公開ができます。もちろん、無料枠にはもろもろ制約がありますので、詳しくはHerokuのサイトをご確認ください。
DBサーバ
Herokuでは無料でPostgreSQLを使えます。ただし、登録可能なレコード数が1万という制限がありますので、それに収まるようなサービス内容であれば無料で使えます。
こちらもHerokuのサイトに細かい制約条件が書いてあるのでご確認ください。
独自ドメイン
次に対象サイトを公開するのですが、Herokuで払い出してもらったURLそのままというのは何とも怪しいサイトっぽく見えてしまうので、独自ドメインを使おうと思いました。
ここでは、Freenomというサービスを利用して、ドメインを取得しています。このサービスは取得できるドメインに選択可能なgTLDの制限がありますが無料で使い続けられます。
詳しくはこちら
HTTPS
Heroku でWebサイトを公開する場合、独自ドメインをHTTPS化しようとすると有償になってしまいます。そのため、CloudflareというCDNサービスを間に挟みます。こちらも無料枠で使える範囲には制限があるものの、CDNとしての機能や無料のHTTPS、DNSなどを提供してくれます。詳しくはCloudflareのサイトへ
詳細な手順はこちら
画像ストレージ
無料枠のHeroku を使うと、デプロイ対象の資材以外はDBにデータを溜める(PostgreSQLは無料で使える)ことしかできません。(コンテナなので揮発してしまう)
ファイルを溜めようと思うと、AWSのS3を利用するなど有償になってしまいます。
この画面キャプチャを保存する場所が無い!というのが課題になりまして、もろもろ頑張ってDBにバイナリで保存する方法をとっています。
この構成に決まるまで
それぞれの構成要素でそれなりに工夫(というか、右往左往)しながら↑の構成までたどり着いたので、その辺の苦労話はまた別の記事に載せていきたいと思います。
なんかしらリアクションもらえると喜んで次々書いていきます!