fluid_27’s blog

勉強した内容をアウトプットするためのブログ

Heroku CLIをインストールしてデプロイした道のりとDBをMySQLからPostgreSQLに変えてみる

 

目標:Herokuでデプロイする

 

環境:

mac Catalina 10.15.7

ruby 2.7.3

rails 2.5.2

テキストエディタ Visual studio code 1.56.2

 

前提:

herokuにアカウントは作成してある。

gitにレポジトリは作成しており、リモートレポジトリを繋いでいる。

 

道のり:

1. rails newで新しいアプリ作成

2. postgresqlをgemに追加し、bundle install

group :production do

  gem 'pg'

end

をgemに加え、$ bundle install の実行

 

3.  herokuのCLIインストール

$ brew tap heroku/brew && brew install heroku

でインストールできるらしい。

 

が、自分は以前に入れていたらしく

$ heroku --version

とすると、

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.67.dylib
Referenced from: /usr/local/bin/node
Reason: image not found
zsh: abort heroku --version

と出てきた。

 

ググってみて、以下に行き着いた。

railsでローカルアクセスした時にエラーになる(node) - ムーのしょ〜もない様でしょ〜もなくもないブログ

 

要は、nodeをインストールした際に icu4cというのを含めてインストールしてしまい、元々macに入っていたlibicucore.dylib というライブラリと干渉してしまったらしい。

 

$ brew reinstall node

の実行で解決。

 

4. herokuにログイン

$ heroku login --interactive

 

5.  herokuにSSH接続できるようにする

$ heroku keys:add

 

6.  herokuにアプリの作成場所を作る

$ heroku create

 

7. heroku にデプロイ

$ git push heroku master

 

以上。

 

感想:AWSにデプロイするより全然簡単だった。

 

追記:MySQLからPostgreSQLに変更してみる。

元々herokuでデプロイするつもりで作成していなかったアプリをherokuでデプロイすることにしたので、DBをMySQLからpostgreSQLに変更する必要がでた。

実際はかなり悪手なのかもしれないが、今回はherokuの公式ドキュメントにもその方法が載っていたので、手順にしたがって変更してみる。

https://devcenter.heroku.com/articles/heroku-mysql

 

1. MySQLのアドオンをプロビジョニングする

$ heroku apps

herokuに登録しているアプリ一覧が見れる。

 

$ heroku addons:create cleardb:ignite --app アプリ名

cleardbのアドオンをプロビジョニングする。

※cleardbを使用するにはクレジットカードの登録が必要。一定量までは課金なしで使用できる。

 

 

2. HerokuPostgreSQLに変更する

 

PostgreSQLをローカルで実行する

PostgreSQLをローカルで実行している時にDBに接続できるように、環境変数を設定する。

$ export DATABASE_URL=postgresql://$(whoami)

 

上記コマンドのDATABASE~以降のURLは下記コマンドで確認できる。

 

$ heroku config --app アプリ名

アプリに設定している環境変数などを取得できる。

=== アプリ名 Config Vars

DATABASE_URL:             postgres://dfevijm...(略)

LANG:                     en_US.UTF-8

RACK_ENV:                 production

RAILS_ENV:                production

RAILS_LOG_TO_STDOUT:      enabled

RAILS_SERVE_STATIC_FILES: enabled

SECRET_KEY_BASE:          4b573c0563ad3...(略)

 

PCにpostgresqlをインストール

調べたところ、自分のPCにはすでに入っていた見たいなので、飛ばしました。

必要なら下記サイトを参考にすれば大丈夫だと思います。

Postgres.app – the easiest way to get started with PostgreSQL on the Mac

※ちなみに、 $ which psql

で表示されるパスがPostgresql.appディレクトリ の中ではなかったので、上記サイトの3番だけ行いました。

 

3. pgloaderのインストール

インストール

https://github.com/dimitri/pgloader/blob/master/README.md

を参考にインストールします。

$ brew install --HEAD pgloader

 

自分はmacなので上記コマンドを実行。

 

 

4. データの移行

Postgresqlデータベースを作成し、CLIを使用してMySQLデータを移行する。

$ createdb pgdbname

$ pgloader mysql://username:password@localhost/mysqldbname postgresql:///pgdbname

 

 

初学者なので、間違い等あれば指摘していただけると助かります。

あくまで備忘録として書きました。次回、行う際もブログを見返しながらも、公式ドキュメントも確認しつつ行おうと思います。