ドットインストール先生の力を借りてHerokuを学び始めました。
思いの外、色々ハマったので、その記録を残していきます。但し、最初に記事を書いたのは2018年ですので、今は変わっているかもしれません。
必要な知識
HerokuサーバーにアップするアプリはRailsで用意するし、そのアプリを動かしたり、HerokuにアクセスするのはCentOSからする。また、そのCentOSの仮想環境の用意にはVagrantが必要と、かなり前知識がいる。
- Ruby and Rails
- Vagrant
- PostgreSQL
Qiitaの記事
https://qiita.com/hidelou/items/c9667c7bf971bd832a33
ハマったとこ
その中で、自分がハマったところだけピックアップして説明したいと思います。
Ruby, Railsのインストール
CentOSだし、yumでインストールしようとすると古いバージョンになってしまい、Railsが使えない。ちゃんとパッケージのインストールからして、新しいバージョンのRubyのインストールが必要。こちらを参考にさせていただきました。
https://qiita.com/iamdaisuke/items/46da26b4060ddec18895
Heroku CLI(Herokuコマンドラインインターフェイス)
別にハマった記憶はないけど、メモが残ってたので…
wget https://cli-assets.heroku.com/branches/stable/heroku-linux-amd64.tar.gz -O heroku.tar.gz
mkdir -p /usr/local/lib
sudo tar -xvzf heroku.tar.gz -C /usr/local/lib
sudo /usr/local/lib/heroku/install
SSH Key(公開鍵、認証鍵)の設定
ドットインストールだと最初からSSH Keyあるけど、自分のではなかった…
適当に用意したCentOSにはありませんでした。というわけで、下記コマンドで作成。
ssh-keygen -t rsa -b 4096
下記コマンドで、確認できます。
cd .ssh
ls
SSH Key設定後のVagrant up
さて、SSH Keyを用意した後、CentOSを再起動(Vagrant up)。必要だったからというわけでなく、次の日に続きをしたから。すると、なぜかCentOSが正しく起動されない…
原因は鍵の不一致だそうで、まずは、下記コマンドでIdentityFileをチェック。
vagrant ssh-config
ファイル場所を先ほどチェックしたIdentityFileの場所にして、下記コマンドを実行。
ssh-keygen -yf /Users/****/private_key > public_key
これで、Vagrant upできました。こちらを参考にさせていただきました。
https://qiita.com/d2cdot-mmori/items/1c340f175ae510e4456a
PpstgreSQLのインストール、初期設定
手順通り実施していき、Railsアプリもアップできた、Migrateしてデータベースを用意…としたいが、なんかMigrateが成功しない。
私の場合は、そもそもPostgreSQLのインストールをしていませんでした。(恥ずかしながら)
というわけで、PostgreSQLのインストールと初期設定について
yum list | grep postgresql-server // Check yum. Don't use it due to old
sudo yum install -y https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
sudo yum install -y postgresql96-server postgresql96-contrib
インストール、初期設定、こちらを参考にさせて頂きました。
https://qiita.com/uhooi/items/44ed9370740c7521dce4
Rails更新後のHerokuアップデート
作業を進めているとミスしたり、トライ&エラーするもの。
GemfileとかProcfile間違えた、修正して再確認だ。とかしてもなぜか修正が反映されない。
なぜ…と悩んでみるが原因はシンプルで、修正後はもう一度bundle installしてからGit pushしないと反映されません。
bundle install
git add .
git commit -m "comment"
git push heroku master
Railsの仕様なんですかね。Railsせずに来たのでわかりません。
最後に
必要になる知識をちゃんと事前に勉強していれば、ハマったりしないと思います。しかしながら、皆自分の環境でアプリをつくったりしているはず。
(自分の場合、Cakephp。CentOSやVagrantはわかるけど、Railsはさっぱりだった。解決策がはっきりしてないから書いてないけど、RailsのPostgreアドオン?を入れるのはめっちゃハマった。)
それをデプロイしたい、そうだHerokuを使おうと、ドットインストール講座にやってくるとハマると思ったので、記事にしてみました。