Herokuを使ったデプロイ方法
【結論】
・HerokuとはPaaSと呼ばれるアプリケーションを
実行する為のプラットフォーム
・AWSなどの様な複雑なセットアップ作業を経ずに、
簡単にアプリケーションをインターネットに公開出来るサービス
【目次】
- Herokuとは
- 1:Herokuのアカウント登録
- 1:Heroku CLIのインストール
- 2:Gemfileの編集
- 3:database.ymlの編集
- 4:config/environments/production.rbの編集
- 5:ターミナルからHerokuにログイン
- 6:アプリを登録
- 7:アプリのデプロイとマイグレーション
【本題】
Herokuとは
PaaSと呼ばれるアプリケーションを実行する為のプラットフォームです。
Herokuは、本来であれば複雑な処理を行って形成するアプリケーションを
公開する為の土台(プラットフォーム)を、WEB上で提供してくれるサービスになります。
※注意※
下記は、「Rails 5.2.2」で、rails newした際に
「-d mysql」のオプションを指定したアプリで実行しています。
環境によっては、同じように動作しないかもしれないので、ご注意ください
1:Heroku CLIのインストール
Herokuのコマンドを使える様にする為に、
下記サイトからHeroku CLIをインストールします。
The Heroku CLI | Heroku Dev Center
2:Gemfileの編集
Herokuを利用するにあたってgemfileを編集していきます
# gem 'mysql2', '>= 0.4.4', '< 0.6.0' 〜中略〜 group :development, :test do gem 'mysql2', '>= 0.4.4', '< 0.6.0' end
まず、データベースに関するgem(今回はmysql2、デフォルトならsqlite3)を、
コメントアウトして、「group :development, :test do」に追加します。
これは、Herokuが「PostgreSQL」というデータベースを利用しているので、
本番環境では別のgemを読み込ませる必要があるからです。
「PostgreSQL」のgemは本番環境だけ読み込めれば良いので、
下記のように追加します。
group :production do gem 'pg' end
次にbundle installですが、下記のコマンドで実行します。
bundle install --without production
これは、「group :production」で指定した先ほどの
「gem 'pg'」以外のgemだけインストールする為のコマンドです。
3:database.ymlの編集
Railsではデータベースに接続する為の情報を、
config/database.yml というファイルに保存しているのですが、
デフォルトだとsqlite(今回はmysql)に適した記述になっているので、
そちらを編集します。
production: <<: *default adapter: postgresql encoding: unicode pool: 5
adapter: postgresqlが、postgresqlのデータベースに接続する為の記述
encoding: unicodeが、文字コードをunicodeで利用する為の記述
pool: 5が、データベースに接続出来る上限を5に制限する記述です。
※5である理由は不明だが、どのサイトも5で説明されていたのでデフォルト値?
4:config/environments/production.rbの編集
Railsの初期状態だとプリコンパイルがオフになっているので、
下記の様に設定を変えます。
config.assets.compile = true
変えていないと、デプロイ時に下記の様なエラーが発生します。
5:ターミナルからHerokuにログイン
ターミナルで下記コマンドを実行して、Herokuにログインします。
heroku login
6:アプリを登録
URLにもなるアプリ名を登録します。
heroku create mini-blogsapp
※「mini-blogapp」は任意です
↑成功
↓失敗(他に登録されている名前と重複)