目的
HerokuにRailsで作成したアプリ(今回はscaffoldで簡単なものを作る)をデプロイする。
Herokuのアカウント登録の説明は省略する。
やることリスト
- Heroku CLIをインストールする
- Railsアプリ作成
- Herokuにアプリを送る
環境
- CentOS7 (Linux version 3.10.0-514.21.2.el7.x86_64)
- Vagrant 1.9.1
- Git 1.8.3.1 適当にインストール
以下のログなどで...となっている箇所は省略の意味。
参考
- Ruby on Rails 5 アプリケーションプログラミング(初版)
- ドットインストール(Heroku入門)
- Heroku公式ページ
詳細
1. Heroku CLIをインストール
Heroku公式ページの通りにインストールする
CentOS7はStandalone。
自分の環境によってREPLACE_ME_OS,REPLACE_ME_ARCHを変更する。
uname -s
でOS情報、uname -m
でアーキ情報が得られる。
自分の環境では、REPLACE_ME_OS=linux,REPLACE_ME_ARCH=x64。
以下のコマンドをホームディレクトリで実行した(どこでもいい)。
$ wget https://cli-assets.heroku.com/heroku-cli/channels/stable/heroku-cli-linux-x64.tar.gz -O heroku.tar.gz
$ tar -xvzf heroku.tar.gz
$ sudo mv heroku-cli-v6.13.17-275c5ef-linux-x64 /usr/local/lib/heroku
$ sudo ln -s /usr/local/lib/heroku/bin/heroku /usr/local/bin/heroku
$ heroku --version
heroku-cli/6.13.18-a444c52 (linux-x64) node-v8.3.0
herokuへのログインのためにssh鍵が必要。
ない場合は、ssh-keygenコマンドで以下の鍵ペアを作成する。
$ cd ~/.ssh/
$ls
authorized_keys id_rsa(秘密鍵) id_rsa.pub(公開鍵)
herokuログイン
$ heroku login
Enter your Heroku credentials:
Email: ...
Password: ...
Logged in as ...
$ heroku keys:add
...
公開鍵をアップロードする
2. Railsアプリ作成
アプリケーション作成
ドットインストールでは rails new ** -d postgresqlとして、
最初からpostgresqlを使うようにしているっぽいが、
この方法はrails db:migrate
がうまくいかなかったのでやめた。。
gem install pg error対処はしておく。この辺りごちゃごちゃ試したのでインストールしたものが足りてないかも。。
$ sudo yum install postgresql-devel
$ sudo yum install postgresql-server
$ rails new mytest
create
create README.md
create Rakefile
...
$ rails s
...
サーバを立ち上げてブラウザで以下のような画面が出ればサーバ立ち上げはOK。
$ cd mytest
$ vi Gemfile (gem 'therubyracer', platforms: :rubyを有効にする)
$ rails g scaffold Memo title:string body:text
Running via Spring preloader in process 15700
invoke active_record
create db/migrate/2017..._create_memos.rb
...
$ rails db:migrate
== 2017... CreateMemos: migrating ======================================
-- create_table(:memos)
-> 0.0005s
== 2017... CreateMemos: migrated (0.0005s) =============================
以下のような画面が出ればローカルでのアプリケーション作成はOK。
3. Herokuにアプリを送る
Gemfileの編集
gem 'rails_12factor', group: :production
を追加するらしい。
gem 'sqlite3'
をコメントアウト。
gem pg
を追加(postgresqlのため)。
全然わかってないけど、ローカル⇄Herokuのたびにgemの設定を変えるのか?。。
Procfileの作成(Gemfileと同じ階層)
web: bundle exec rails server -p $PORT
アセットを準備する
$ rails assets:precompile RAILS_ENV=production
Yarn executable was not detected in the system.
Download Yarn at https://yarnpkg.com/en/docs/install
...
アプリのディレクトリをGit管理にする
$ git init
Reinitialized existing Git repository in ...
$ git add .
$ git commit -m "init"
[master (root-commit) 1700a57] init
...
heroku createを実行
$ heroku create
Creating app... done, ⬢ ABC
https://ABC.herokuapp.com/ | https://git.heroku.com/ABC.git
↑このURLを開く
$ git push heroku master
Counting objects: 116, done.
...
remote: Verifying deploy... done.
To https://git.heroku.com/ABC.git
* [new branch] master -> master
$ heroku run rails db:migrate
...
以下のような画面が出れば成功。
おしまい
情報が古かったり、参考ごとにやり方が違ったり足りてなかったりして、この手順が良いのかは不明。
一応、数回やり直してもうまくできているのでまあいいか。。
言われた通りにやっている所は何をしているか理解していない部分もあるので今後の課題。