2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuにRailsアプリをデプロイしてみた

Last updated at Posted at 2020-03-08

これは何

仕事でHerokuを使っていますが、デプロイまわりのことがあまりわかっていないので、試しにHerokuに簡単なRailsアプリをデプロイしてみた備忘録です。
git push heroku masterで手軽にデプロイできました。
また、Procfileはherokuにアプリケーションの実行コマンドを指示するもの、ということを認識しました。

手順URL

公式のこちらのスタートガイドの手順に沿って進めました。
Rails5をデプロイする手順になっていましたが、現時点(2020/3)で最新のRails6にしました。
https://devcenter.heroku.com/articles/getting-started-with-rails5

他にも、Python、Goとかいろんな言語のスタートガイドが揃ってます。
https://devcenter.heroku.com/start

手順

1. ローカルでアプリケーション準備

  • 開発マシンにHeroku CLIをインストールする必要があります。

  • ローカルで、手順に沿ってRailsアプリケーションを新規作成します。

    • この手順に沿ってやると、Railsは現在の最新(現時点だとRails6)に勝手になります。(gem install railsコマンドでバージョンを指定していないため)
    • 記載がなかったのですが、ローカルでrails serverする前に、以下コマンドでDBを作成する必要がありました。

$ rails db:create
Created database 'firstapp_development'
Created database 'firstapp_test'

```
  • ローカルで画面を確認します。
local.png
  • ローカルで稼働確認が取れたら、gitリポジトリに保存します。

2. Herokuにデプロイ

  • Railsプロジェクトのディレクトリで、heroku createコマンドを叩くと、アプリケーションがHerokuに作成されます。(以下のコマンド内のアプリ名は公式記載のもの)
    • アプリ名を指定すれば指定のアプリ名で作成できますが、一意である必要があるので指定がむずかしい。。。
    • 今回は、アプリ名指定なしのheroku createを叩きました。アプリ名は勝手にランダムになります。
$ heroku create firstapp
Creating ⬢ firstapp... !
 ▸    Name firstapp is already taken
$ heroku create
Creating app... done, secret-tor-42278
https://secret-tor-42278.herokuapp.com/ | https://git.heroku.com/secret-tor-42278.git
  • アプリがherokuに作成されました!herokuのコンソールで見れます。
    heroku_new_app.png

  • herokuのリモート設定がプロジェクトに追加されたことを以下のコマンドで確認できます。

$ git config --list | grep heroku
remote.heroku.url=https://git.heroku.com/secret-tor-42278.git
remote.heroku.fetch=+refs/heads/*:refs/remotes/heroku/*
  • git push heroku masterコマンドで、指定されているherokuのリモートにデプロイすることができます。
$ git push heroku master
remote: Compressing source files... done.
remote: Building source:
remote:
(略)
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/secret-tor-42278.git
 * [new branch]      master -> master
  • デプロイ時のログは、コンソールからも同じものが見れそうです。
    build-log.png

3. アプリケーション起動、アクセスする

  • デプロイしても、dynoが起動していないのでアクセスできないので、heroku ps:scale web=1コマンドでdynoを起動します。
  • dynoはHerokuの構成の基本単位である軽量コンテナーです。
  • デフォルトで、アプリケーションは無料のdynoにデプロイされます。無料のdynoの動作について詳しくはこちら
    • 無料のweb dynoは、30分、トラフィックを受信しないとスリープします。
    • 個人アカウントには、毎月550時間の無料のdyno時間が与えられます。超えるとその月はずっとスリープ状態になります。
    • 無料dynoの残り時間は、heroku ps -a [アプリ名]で確認できます。
$ heroku ps:scale web=1
Scaling dynos... done, now running web at 1:Free
  • dynoの状態をheroku psコマンで確認します。
$ heroku ps
Free dyno hours quota remaining this month: 550h 0m (100%)
Free dyno usage for this app: 0h 0m (0%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping

=== web (Free): bin/rails server -p $PORT -e $RAILS_ENV (1)
web.1: up 2020/03/08 08:41:15 +0900 (~ 5m ago)

  • heroku openコマンドで、ブラウザが開き、アプリケーションにアクセスできます。
$ heroku open
heroku-app.png

4. Webサーバーを構成する

  • デフォルトでは、アプリのWebプロセスはrails serverで実行されますが、これをpumaに変えます。pumaの設定ファイルは、config/puma.rbです。
    • pumaの構成方法の詳細はこちら
  • HerokuにRailsアプリケーションの起動コマンドを指示するには、アプリケーションディレクトリのルートにProcfileを作成する必要があります。Procfileの詳細はこちら
  • Procfileというファイルを新規作成し、以下を書き込みます。
Procfile
web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}
  • または、pumaの設定ファイルを指定します。
Procfile
web: bundle exec puma -C config/puma.rb
  • Procfileを使った起動をlocalで試すには、heroku localを実行します。
    • .envファイルを介してローカルで環境変数を管理することもできます。
    • .envファイルは、ローカル環境のセットアップであるため、.gitignoreに追加しておくと良いです。
$ echo "RACK_ENV=development" >>.env
$ echo "PORT=3000" >> .env
$ heroku local
[OKAY] Loaded ENV .env File as KEY=VALUE Format
9:04:22 web.1    |  Puma starting in single mode...
9:04:22 web.1    |  * Version 4.3.3 (ruby 2.6.5-p114), codename: Mysterious Traveller
9:04:22 web.1    |  * Min threads: 5, max threads: 5
9:04:22 web.1    |  * Environment: development
9:04:30 web.1    |  * Listening on tcp://0.0.0.0:3000
9:04:30 web.1    |  Use Ctrl-C to stop
  • ローカルで確認が取れたので、 Procfileをgitに追加し、Herokuにデプロイします。
$ git add .
$ git commit -m "use puma via procfile"
$ git push heroku master
  • heroku psで見ると、pumaで起動していることが確認できます。
$ heroku ps
Free dyno hours quota remaining this month: 550h 0m (100%)
Free dyno usage for this app: 0h 0m (0%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping

=== web (Free): bundle exec puma -C config/puma.rb (1)
web.1: up 2020/03/08 09:09:05 +0900 (~ 1m ago)
  • herokuコンソールのResourcesタブでも、起動コマンドが見れました。
heroku-resources.png

所感

本当に基本を試してみただけですが、Herokuへのデプロイはとてもお手軽でした。
herokuアカウントさえあれば無料枠でいろいろできそうです。(私はクレジット登録もまだしていないです)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?