HEROKUでアプリケーションを公開する
こんにちは!
今回は、アプリケーションのデプロイについて書いていきます。
デプロイとは、作成したアプリケーションをweb上で公開することです。
通常、デプロイには、サーバやOS、データベースなどを準備する必要があります。
HEROKUはこれらのデプロイに必要なものを準備してくれるサービスです。
そして、HEROKUはアプリケーションのソースコードを管理するためのサービスであるgithubと連携しているため、
githubを通じてアプリケーションをHEROKUに送るだけでデプロイすることができます。
しかも、基本無料!月の利用時間に制限があるため複数のアプリを常時稼働はできない、30分でスリープするため初期のアクセスに数十秒かかるなど制約もありますが、個人で試しに使う分には無料枠でも問題ありません。
なお、今回の記事ではgithubは導入ずみ、、アプリもできている、普段使用しているデータベースはMySQLという前提です。
(完全に個人の都合)
- HEROKUの登録
- クレジットカードの登録
- HEROKU CLIの導入
- ターミナルからHEROKUへのログイン
- アプリのディレクトリに移動して、HEROKU上でアプリケーション作成
- データベースをMySQLに変更する
- 鍵の設定
- アプリケーションをgitからHEROKUへ
- データベースのマイグレーション
- アプリのurlを確認
- アプリを更新したら。。。
HEROKUの登録
まずは、HEROKUでユーザ登録をします。
HEROKU
右上の新規登録をクリックするとフォームが出てくるので入力します。
入力したメールアドレスにリンクが送られてくるので、そこからパスワードの設定をしたら完了です。
クレジットカードの登録
HEROKUのデフォルトのデータベースはPostgreSQLという種類です。
データベースの種類を変更するためには、クレジットカード情報を登録しておく必要があります。
ユーザ登録とログインが完了すると、アプリの管理ページに飛ばされると思います。
そこで、右上の忍者みたいな人をクリックするとメニューが開くので、「Account settings」をクリックします。
設定画面に移動したら、「Billing」を選択すると一番上に「Billing Information」と出てくるので、ここからクレジットカードの登録をおこなってください。
HEROKU CLIの導入
続いて、ターミナルでHEROKU関連のコマンドを実行できるようにするために、HEROKU CLIを導入します。
ターミナルで以下のコマンドを実行するだけです。
brew tap heroku/brew && brew install heroku
導入が完了したら、
heroku -v
と入力して、herokuのバージョンが表示されれば成功です。
ターミナルからHEROKUへのログイン
heroku login
として、ターミナルからHEROKUへログインします。
この時、
heroku: Press any key to open up the browser to login or q to exit:
と表示されるので、適当にキーを入力するとブラウザが立ち上がりログイン画面になります。
ログインをクリックして、ログイン情報を入力すると右の画面のようになるので、ブラウザは閉じてしまって大丈夫です。
ターミナルでは以下のように表示されて、ログインに成功したことがわかります。
› Warning: If browser does not open, visit › https://cli-auth.heroku.com/auth/browser/*** heroku: Waiting for login... Logging in... done Logged in as me@example.com
ブラウザを開かずに、ターミナルでログイン情報を入力したい場合には、
heroku login -i
としてください。同様にメールアドレスと、パスワードを入力すればログインできます。
アプリのディレクトリに移動して、HEROKU上でアプリケーション作成
cdコマンドでデプロイしたいアプリケーションのディレクトリに移動したら、次のコマンドでHEROKU上にアプリケーションを作成します。
heroku create アプリ名
データベースをMySQLに変更する
HEROKUにはアドオンと呼ばれる追加機能が豊富に用意されています。
MySQLを使えるようにするには、clearDBのアドオンを追加します。
heroku addons:create cleardb:ignite
アドオンが追加できました。
次のコマンドで、データベースのurlを確認します。
heroku config | grep CLEARDB_DATABASE_URL #こんなのが返ってきます CLEARDB_DATABASE_URL => mysql://adffdadf2341:adf4234@us-cdbr-east.cleardb.com/heroku_db?reconnect=true
このurlをHEROKU上で設定することで、MySQLのデータベースが使用できるようになります。
gemでmysql2を使用している場合は、mysqlをmysql2に書き換えて設定してください。
heroku config:set DATABASE_URL='mysql://adffdadf2341:adf4234@us-cdbr-east.cleardb.com/heroku_db?reconnect=true'
mysql2なら
heroku config:set DATABASE_URL='mysql2://adffdadf2341:adf4234@us-cdbr-east.cleardb.com/heroku_db?reconnect=true'
鍵の設定
もう少しで設定が完了です!
Railsでは外部に漏らしたくない情報を暗号化しています。
それを復号するためにmaster.keyというファイルがあるのですが、通常はgithubに上がらないようになっています。
そこで、このmaster.keyの中身を環境変数に入れておきます。
他にも、開発環境で設定した環境変数がある場合には、HEROKUでも設定しなおします。
heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
アプリケーションをgitからHEROKUへ
このコマンドを打てば、ローカルリポジトリのmasterブランチの内容がHEROKUへプッシュされます。
事前にcommitやpullを忘れないようにしましょう。
git push heroku master
データベースのマイグレーション
ついに、最後です!
あとはデータベースをマイグレーションしましょう。
通常のコマンドの前にheroku runをくっつけます。
これで、HEROKUにプッシュされたアプリケーションに対して、マイグレーションが実行されます。
heroku run rails db:migrate
できた〜!
アプリのurlを確認
デプロイしたアプリケーションのurlは次のコマンドで確認できます。
heroku apps:info
この一番下に、「Web URL」という項目があるので、そのurlにアクセスしてください。
デプロイしたアプリケーションがあるはずです。
アプリを更新したら。。。
今回は手動で更新する方法を紹介します。
と言っても、ターミナルからログインして、
git push heroku master
をするだけです。
データベースをいじっている場合は、マイグレーションも忘れずに実行してください。
最後までお付き合いいただき、ありがとうございました!