Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What is going on with this article?
@MiyataRyo

Herokuへのデプロイ手順|Rails + MySQL

More than 1 year has passed since last update.

はじめに

MySQLで作成したRailsアプリを、Herokuを使ってデプロイすることがあったので備忘録としてまとめました。同じ環境で初めてデプロイする方の参考になれば幸いです。

自分の環境

  • macOS 10.15.3
  • DB: MySQL
  • Rails 5.0.7

Railsアプリケーションの作成

・アプリ作成 [現在作成中]

・Gemfile修正

sqlite3が入っている場合は、以下のようにしてproduction環境下で反映されないようにしましょう。

Gemfile.rb
group :development, :test do
  gem 'sqlite3', '~> 1.4'
end

下記mysql2を追加。

Gemfile.rb
  gem 'mysql2'

・config/environments/production.rbの設定

Heroku上の本番環境でHTMLにCSSやJavaScriptが反映されるように、以下の記述を書き換えます。

ターミナル
# デフォルトのfalseをtrueにします。
config.assets.compile = true

作成したRailsアプリをGit管理

Railsプロジェクトに移動します。(ディレクトリへのパスは自身の物へ置き換えてください)

ターミナル
$ cd rails/MyApp

以下を実行すると、RailsアプリがGit管理されます。

ターミナル
# リポジトリを新規作成。
$ git init

# 変更があったすべてのファイルがaddされる。
$ git add .

# ファイルの変更や追加などを保存。
$ git commit -m "<ここにコミットメッセージをいれる>"

Herokuアカウントの登録

https://jp.heroku.com/ にて登録。

Heroku CLIのインストール

Heroku CLIをインストールすると、ターミナル上でHerokuのコマンド操作ができるようになります。
https://devcenter.heroku.com/articles/heroku-cli
上記サイト、もしくは下記コマンドでインストールできます。

ターミナル
brew tap heroku/brew && brew install heroku

以下のコマンドで、インストールができているか確認します。

ターミナル
$heroku -v
>>heroku/7.0.47 darwin-x64 node-v10.1.0

SSH公開鍵の作成、Herokuへ追加

・SSH公開鍵の作成

まずは公開鍵が作成されているか確認しましょう。

ターミナル
cat ~/.ssh/id_rsa.pub

作成されてない場合は以下のように表示されます。

ターミナル
No such file or directory

それでは公開鍵を作成していきましょう。(実行ディレクトリはどこでも大丈夫です)

ターミナル
$ ssh-keygen
Generating public/private rsa key pair

# 鍵の保存先を聞かれます。変更する必要はないので、そのままEnterキーで進みます。
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa):

# 鍵のパスワードを設定するか聞かれます。
# 設定しない場合はそのままEnterを、設定する場合はパスワードを入力します。
Enter passphrase (empty for no passphrase):

# パスワードの確認をされます。同じパスワードを入力してください。
# 設定していない場合は空欄のままEnterキーで進みます。
Enter same passphrase again:

これで公開鍵が作成されました。確認しましょう。

ターミナル
cat ~/.ssh/id_rsa.pub

#このように文字列が表示されるはずです。
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@mylaptop.local

・Herokuに公開鍵を追加

Herokuにログインします。

ターミナル
$ heroku login

以下のコマンドでSSH公開鍵がHerokuに追加されます。

ターミナル
$ heroku keys:add ~/.ssh/id_rsa.pub

追加されたか確認しておきましょう。

ターミナル
$ heroku keys
# SSHキーの一部が表示されます。
ssh-rsa AAAA...BBBB

作成したRailsアプリとHerokuの紐付け

Railsプロジェクトに移動します。(ディレクトリへのパスは自身の物へ置き換えてください)

ターミナル
$ cd rails/MyApp

Herokuへ新しいアプリケーションを作成しましょう。

ターミナル
$ heroku apps:create <好きなアプリ名>

以下のように表示されたらアプリ名が既に使われちゃってます。
重複は許されないので他のアプリ名へ変更しましょう。

ターミナル
Name myapp is already taken

HerokuにDBを追加

・MySQLを追加

以下のコマンドで、clearDBというMysqlを使うためのアドオンがigniteプランで追加されます。

ターミナル
$ heroku addons:create cleardb:ignite

以下のような表示が出たら、クレジットカードの登録が必要です。

ターミナル
▸    Please verify your account to install this add-on plan (please enter a credit card) For more
▸    information, see https://devcenter.heroku.com/categories/billing Verify now at
▸    https://heroku.com/verify

*アドオンを追加するためにクレジットの登録が必要ですが、iginteプランは無料で使えます。

詳しいプラン内容については以下を参照。
https://elements.heroku.com/addons/cleardb

・Herokuアプリに環境変数を設定

以下のコマンドで、環境変数に入る値を取得します。

ターミナル
$ heroku config
=== <アプリの名前> Config Vars
CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true

Herokuアプリの環境変数に、上記で取得した値をそれぞれ設定。

ターミナル
$ heroku config:add DB_NAME='<データベース名>'

$ heroku config:add DB_USERNAME='<ユーザー名>'

$ heroku config:add DB_PASSWORD='<パスワード>'

$ heroku config:add DB_HOSTNAME='<ホスト名>'

$ heroku config:add DB_PORT='3306'

# gemで「mysql2」を使用しているので、mysql://ではなく「mysql2://」とします。
$ heroku config:add DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'

設定した値を確認しましょう。
以下のように表示されるはずです。

$ heroku config

=== <アプリの名前> Config Vars
CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
DATABASE_URL:         mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
DB_HOSTNAME:          <ホスト名>
DB_NAME:              <データベース名>
DB_PASSWORD:          <パスワード>
DB_PORT:              3306
DB_USERNAME:          <ユーザー名>

Herokuにデプロイ

以下コマンドでローカルリポジトリをHerokuへpushすると、自動でデプロイが進んでいきます。

ターミナル
$ git push heroku master

*master以外のブランチをpushする場合は以下を実行

ターミナル
$ git push heroku <ブランチ名>:master

最後に以下のコマンドを入力して、データベースのマイグレーションをします。

ターミナル
$ heroku rake db:migrate

以下のコマンドを実行すると、ブラウザでアプリケーションにアクセスできます。

ターミナル
$ heroku open

お疲れ様でした!

参考サイト・記事

mysqlを使ったRailsアプリをHerokuにデプロイする流れ
Deploying with Git
SSH 公開鍵の作成

17
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
MiyataRyo
未経験からエンジニア目指しています。 音楽(DAWで)作るのが好きです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
17
Help us understand the problem. What is going on with this article?