本番環境(Heroku)へアプリをデプロイ
この記事で行うこと
前回開発したアプリをHerokuへデプロイする。
現場では開発環境(dev)、ステージング環境(stg)、本番環境(pro)の3つに分けてアプリの開発を行います。 開発環境は自分のPCで開発を行います。本番環境は実際にユーザーがアクセスできる環境です。
ステージング環境は、開発環境で開発したアプリが自分のPC以外(本番環境と同じ環境)で期待通りに動作するかどうかを確認するための環境です。
前提
Herokuへのユーザー登録している。
登録していなければ登録をしてください。
Herokuアプリの作成
Herokuアプリを作成します。 ダッシュボード右上の「New」ボタンを押して「Create new app」を選択してください。
アプリ名を決めるのでなるべくアプリ名を入力してください。 今回は本番環境なので末尾にproをつけて「ticket-reservation-pro」というアプリ名にしました。
このアプリ名は全ユーザーを含めて一意でなければいけないので、 被ってると「is not available」と警告が出て登録できません。
一意になる名前を入力して、 「Create app」ボタンを押して、アプリを作成してください。
Herokuとローカル(PC)を接続
アプリを作成したので開発環境のアプリをHerokuアプリへデプロイしたいのですが、 このままではローカルとHerokuが接続されていないのでデプロイできません。
まずローカルのticket-reservationのディレクトリで以下のコマンドをたたきローカルと接続されているリモート情報を確認します。
ticket-reservationのディレクトリであることを確認する。
ticket-reservation ユーザー名 $ pwd /Users/ユーザー名/desktop/ticket-reservation
接続されているリモート情報を確認する。
$ git remote -v origin https://github.com/sagaekeiga/ticket-reservation.git (fetch) origin https://github.com/sagaekeiga/ticket-reservation.git (push)
リモート情報をよく見るとurlが表示されているのがわかります。 また、そのurlはgithubのものであるとわかります。
このリモート情報はgithubのものです。 ローカルPCからpushしたりするときはこの情報を元に接続されていることがわかります。
ここにherokuのurlを追加していきます。 以下の画像をご覧ください。
Herokuの管理画面から「Settings」タブをクリックします。 するとHerokuの接続用URLを確認できるので、このURLをコピーしましょう
コピーしたHerokuのURLをticket-reservationのディレクトリに追加します。
ticket-reservation ユーザー名 $ pwd /Users/ユーザー名/desktop/ticket-reservation $ git remote add heroku https://git.heroku.com/ticket-reservation-pro.git
もう一度リモート情報を確認するとherokuのURLが追加されたのが確認できます。
$ git remote -v heroku https://git.heroku.com/ticket-reservation-pro.git (fetch) heroku https://git.heroku.com/ticket-reservation-pro.git (push) origin https://github.com/sagaekeiga/ticket-reservation.git (fetch) origin https://github.com/sagaekeiga/ticket-reservation.git (push)
データベースの変更
Herokuと接続ができたのでローカルのアプリをデプロイしたいところですが、 まだデプロイすることはできません。
Herokuでアプリを動かすためにはpostgresqlというデータベースを使う必要があります。 デフォルトでは、sqlite3がデータベースが設定されているのでsqlite3からpostgresqlへデータベースをローカルアプリ上で変更しなければなりません。
Gemfileを以下のように変更してください。
Gemfile
・・・・ group :development, :test do gem 'sqlite3' # デフォルトではdevelopmentの外にsqlite3が書いてあるのでここに移動する。 end gem 'pg', group: :production ・・・・
Gemfileを修正したらインストールしましょう。
bundle install
次にdatabase.ymlを変更します。 ここにはどのデータベースをどの情報(ユーザー名やパスワードなど)で使うかが記されているので、 sqlite3からpostgresqlを使いますと変更してあげましょう。
config/database.yml
production: <<: *default adapter: postgresql encoding: unicode pool: 5
Herokuへデプロイ
これで準備は完了しました。 修正したアプリを一旦Githubのレポジトリへあげて、Herokuへpushしましょう。
$ git add . $ git commit -m 'feat: postgresql' $ git push $ git push heroku master
カリキュラム中の方は、マイグレーションをデータベースへ反映させないといけないので以下のコマンドをticket-reservationディレクトリで叩いてください。
$ heroku run rails db:migrate
するとこのようにHerokuアプリ上で確認することができます。