はじめに
MySQLで作成したRailsアプリを、Herokuを使ってデプロイすることがあったので備忘録としてまとめました。同じ環境で初めてデプロイする方の参考になれば幸いです。
自分の環境
- macOS 10.15.3
- DB: MySQL
- Rails 5.0.7
Railsアプリケーションの作成
・アプリ作成 [現在作成中]
・Gemfile修正
sqlite3
が入っている場合は、以下のようにしてproduction環境下で反映されないようにしましょう。
group :development, :test do
gem 'sqlite3', '~> 1.4'
end
下記mysql2
を追加。
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 公開鍵の作成