本記事の前提
使用環境
- Rails 5.2.6.2
- ruby 2.6.6
- git 2.18.5
- AWS Cloud9
省略作業
- Herokuアカウントの登録
- Gitのインストール
- デプロイするアプリの作成
デプロイする手順
1.Heroku CLIのインストール
Herokuの操作をコマンドラインから行えるようにするために、Heroku CLIをインストールしていきます。
以下の公式サイトからご自身のOSに合ったものをインストールして下さい。
AWS Cloud9の場合
以下のコマンドを全てコピーし、ターミナルに貼り付けて実行して下さい。
$ curl -OL https://cli-assets.heroku.com/heroku-linux-x64.tar.gz
tar zxf heroku-linux-x64.tar.gz && rm -f heroku-linux-x64.tar.gz
sudo mv heroku /usr/local
echo 'PATH=/usr/local/heroku/bin:$PATH' >> $HOME/.bash_profile
source $HOME/.bash_profile > /dev/null
2.デプロイするアプリのディレクトリに移動しherokuにログインする
$ cd アプリ名
$ heroku login --interactive //herokuにログインするためのコマンド
メールアドレスとパスワードが求められるので、それぞれ入力しエンターを押して、無事にログインに成功すると、Logged in as Eメールアドレスと表示されますので確認して下さい。
3. Railsアプリをデプロイするための流れ
大きく以下のような項目に分けてRailsアプリの設定を変更していきます
3-1. rails_12factorの導入
静的アセットファイルをHeroku上でうまく動作するように調整してくれるGemになります。以下のようにGemfileに下記の記述を追加して下さい。
group :production do
gem 'rails_12factor'
end
3-2. Gemfileの各項目の設定変更
次にGemfileの内容をデプロイできる状態に変更していきます。
まず、gem 'sqlite3'と記述がある部分をコメントアウトにします。
# gem 'sqlite3'
次に、group :development, :test do - endの中にgem 'sqlite3'を追記します。
group :development, :test do
gem 'sqlite3'
end
そして本番環境でPostgreSQLを使っていくために、以下のような設定を追記します。
group :production do
gem 'pg'
end
最後にGemfileの変更を適用するためbundle installを実行します。このとき本番環境に関係するproduction以外の部分を対象とするため、以下のようなオプションをつけてコマンドを実行していきます。
$ bundle install --without production
3-3. config/datebase.ymlの設定変更
本番環境で実際にデータベースと接続するための設定を変更するためdatebase.ymlのproduction:以降を以下のように変更していきます。このときproduction:直下の記述が半角スペース2個分空いていることを確認して下さい。
production:
<<: *default
adapter: postgresql
encoding: unicode
pool: 5
3-4. config/environments/production.rbの設定
続いて本番環境でassets以下のフォルダから動的な画像の表示していくためにproduction.rbの次の記述をtrueに変更していきます。
config.assets.compile = true
3-5. Heroku上にアプリを作成する
ここからHeroku上にアプリを作成していきます。ここでHerokuではGitコマンドでアプリを登録していく関係で、ローカルリポジトリを作成されていない場合はgit init
コマンドから作成しましょう。それからheroku createコマンドで新しいアプリを作成していきます。このときアプリ名を指定したい場合は、heroku create アプリ名
とすると指定できますが、既に使用されている名前の場合は指定できないので注意して下さい。
$ git init
// ローカルリポジトリ作成後
$ heroku create
ここで、ターミナルに表示されたアプリのURLにアクセスしてアプリが作成されていることを確認しましょう。
そして、Gitコマンドからファイルの管理が済んでいない方は以下のようにGitコマンドを実行して下さい。
$ git add .
$ git commit -m "upload to heroku"
そしていよいよアプリのデプロイになります。git push heroku master
からアプリのプッシュを行い、それが終わったら本番環境でのデータベースの作成をheroku run rails db:migrate
コマンドで実行します。
$ git push heroku master
// 終わり次第以下のコマンドでデータベースを作成する
$ heroku run rails db:migrate
補足情報
- デプロイしたアプリのURLや情報は以下は
heroku apps:info
コマンドから確認できます。
$ heroku apps:info
- 本番環境にdb/seeds.rbに記述した初期データを登録するためには、
heroku run rake db:seed
を実行して反映させていきます。
$ heroku run rake db:seed
- デプロイ後のアプリの更新については、先程と同様にGitコマンドから変更したファイルを反映させます。
$ git add .
$ git commit -m "update to heroku"
$ git push heroku master