0
0

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 3 years have passed since last update.

Herokuのデプロイ方法

Last updated at Posted at 2022-03-16

Herokuとは

Herokuとはクラウドサービスの1つで、作成したアプリケーションを手軽に公開することができる。

特徴
・プランによっては無料で使える

・Gitコマンドで操作できる

・多様な言語・FWをサポートしている
元々はRuby向け(rails含む)のPaaSだったHerokuだが、現在では国内で扱われている主要言語とFW(以下)をほぼカバーしている。

クラウドサービスは大きくSaaSPaaSIaaSの3種類に大別されるが、Herokuはこのうち、PaaS(Platform as a Service)に分類される。

PaaSとは、開発したWEBアプリケーションを開発・実行するための基盤(プラットフォーム)を提供するサービスを指す。

PaaSを利用することで、それまで必要だったサーバーの購入やOS、DB、WEBサーバなどのミドルウェア類のセットアップが不要となり、開発者はインターネット越しでPaaSを操作するだけで、手軽にWEBアプリケーションのホスティングができるようになった。

手順

前提としてHerokuへの登録は済んでいるものとする

1.本番用データベースの設定
2.Heroku CLIの設定
3.RailsアプリとHerokuの紐付け
4.Herokuへのデプロイ
5.Herokuの操作(その他)

1.本番用データベースの設定

HerokuではPostgresというデータベースが用意されており、それをrailsのデータベースとして利用することができる。

そのため、本番用のデータベースをPostgresに設定する。
Gemfileを以下のように修正し、本番環境でインストールするデータベース用のgemをPostgresにする。

.Gemfile
group :development, :test do
  gem 'sqlite3', '~> 1.4' # <= 開発環境とテスト環境用として設定
end

# 本番環境用のgemグループを新しく作成しPostgresを指定
group :production do
  gem 'pg'
end

Gemfileの編集ができたら、bundle installするが、今回新しく本番環境用のgemグループを作成したので通常とは異なる方法を使う。

ローカルでは不要な本番環境用のgemをインストールしないよう、--without productionオプションをつける。

.ターミナル
# 本番環境用gemを除いてbundle install
$ bundle install --without production

# またbundleの設定が作成され、以降--without productionオプションが自動でつく
$ cat .bundle/config
---
BUNDLE_WITHOUT: "production"

次にconfig/database.ymlproductionを編集する。

config/database.yml
# 本番用のデータベースをPostgresqlに変更する
production:
  <<: *default
  adapter: postgresql
  encoding: unicode
  pool: 5

ここまで来たら、アプリをgitの管理下に置くためコミットしておく。

2.Heroku CLIの設定

Heroku CLIとは、さまざまなオペレーティングシステムのコマンドライン/シェルからHerokuアプリケーションを作成および管理するためのツール。

ローカルで開発したアプリをHerokuにデプロイするにはHeroku CLIをインストールする必要がある。

.ターミナル
# Heroku CLI のインストール
$ brew tap heroku/brew && brew install heroku

# バージョンが表示されればOK
$ heroku -v
heroku/7.0.0 (darwin-x64) node-v8.0.0

# このコマンドを実行することでログイン画面(ブラウザ)が開くのでログインする
$ heroku login

3.RailsアプリとHerokuの紐付け

heroku create 好きなアプリ名 と実行する。
ただしアプリ名はHeroku内でユニークであることまた、URLとして使える名前である必要がある。

$ heroku create heroku-deploy-practiceeee

Creating ⬢ heroku-deploy-practiceeee... done
https://heroku-deploy-practiceeee.herokuapp.com/ | https://git.heroku.com/heroku-deploy-practiceeee.git

「Name is already taken...」といったメッセージが表示された場合は、
そのアプリ名は他の方に既に取られているので変更する。

4.Herokuへのデプロイ

heroku createが成功したら、ソースコードをHerokupushする。
この時、Herokuがbundle installyarn installを実行する。もし、失敗した時はログにエラーメッセージが表示される。

.ターミナル
$ git push heroku master

pushが完了すると、ログの最後の方にアプリのURLが表示される。

.ターミナル
remote: -----> Compressing...
remote:        Done: 78.8M
remote: -----> Launching...
remote:        Released v6
    #ここ↓
remote:        https://rheroku-deploy-practiceeee.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/heroku-deploy-practiceeee.git
 * [new branch]      master -> master

heroku openを実行することでアプリ(ブラウザ)が開く。

.ターミナル
# ブラウザが立ち上がり、アプリが表示される
$ heroku open

現時点ではエラーが出てアプリが動かないので、本番環境のデータベースでmigrationを実行する必要がある。

.ターミナル
# データベースのmigration
$ heroku run rails db:migrate

5.Herokuの操作(その他)

# 本番環境のログを表示
$ heroku logs

# Herokuのサーバーにログイン(bash)
$ heroku run bash

# 再デプロイ(新たなコミットがある場合)
$ git push heroku master

# データベースのmigration
$ heroku run rails db:migrate

公式ドキュメント

独自ドメイン化

特徴
・独自ドメインの取得には費用がかかる

・ドメインの取得とHerokuの独自ドメイン化にはクレジットカードが必要

・SSL化(HTTPS対応)はしない(Herokuの有料会員登録が必要なため)

現状ではhttps://作成したアプリ名.herokuapp.comといったように、herokuapp.comというドメインが使われている。
自分で取得したドメインを紐付けることで好きなドメインを使うことができるようなる。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?