1.エラーの内容
Neverland:.ssh kontatomoya$ ssh -i freemarket_sample_62d.pem ec2-user@3.115.38.38
Last login: Mon Feb 10 20:51:18 2020 from xx000000000000.au-net.ne.jp
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
-bash: rbenv: コマンドが見つかりません
#↑ec2に接続した時に出るこのエラーが本題です
[ec2-user@ip-000-00-00-00 ~]$
2.考えられる原因
1.そもそもrubyに関する環境構築をしていない
2.環境構築の際コマンドの順番を誤り.bash__profile
でサーバーサイドが想定した記載になっていない。(自分が確認した限りではデプロイしたアプリへの影響はありませんでしたが、どこでバグの原因となるかわからないため解消することを推奨します)
3.解決方法
#####1.そもそもrubyに関する環境構築をしていない
この場合は下記の手順に従ってコマンドを打ち込むことで解消します
中途半端に設定した方はひとまず指示に従って全て打ち込んでください(ダブってしまう不要な箇所を4.で確認および削除し解決します。一度アプリケーションをデプロイして、再度違うアプリケーションをデプロイし直す方も同様にしてください)
[ec2-user@ip-000-00-00-00 ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
#rbenvをEC2にインストール
[ec2-user@ip-000-00-00-00 ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
#パスを通すための記述を.bash_profileに追記
[ec2-user@ip-000-00-00-00 ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
#rbenvを呼び出すための記述を.bash_profileに追記
[ec2-user@ip-000-00-00-00 ~]$ source .bash_profile
#.bash_profileをEC2に読み込み
[ec2-user@ip-000-00-00-00 ~]$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
#ruby-buildのインストール
[ec2-user@ip-000-00-00-00 ~]$ rbenv rehash
#rehashを行う
[ec2-user@ip-000-00-00-00 ~]$ rbenv install 2.0.0
#rubyのインストールを行う(2.0.0は自分のアプリのrubyバージョンに合わせる)
[ec2-user@ip-000-00-00-00 ~]$ rbenv global 2.0.0
#rubyをEC2上共通のバージョンとする
[ec2-user@ip-000-00-00-00 ~]$ rbenv rehash
#rehashを行う
[ec2-user@ip-000-00-00-00 ~]$ ruby -v
#バージョンを確認→"ruby 2.0.0p648 (2015-12-16) [x86_64-linux]"が出ればok
#設定の内容を見たい場合は下記コマンド
[ec2-user@ip-000-00-00-00 ~]$ vim ~/.bash_profile
#.bash_profile(初期設定の隠しファイル)をviエディターで確認する
#####2.環境構築の際コマンドの順番を誤り.bash__profile
でサーバーサイドが想定した記載になっていない。
エラーを起こしている.bash__profile
ファイルは下記のようになっています
[ec2-user@ip-000-00-00-00 ~]$ vim ~/.bash_profile
#.bash_profile(初期設定の隠しファイル)をviエディターで確認する
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
eval "$(rbenv init -)"
export PATH="$HOME/.rbenv/bin:$PATH"
#↑環境構築のコマンドにより最下の行を追記しました。正しいコマンド通りだとした2行が逆転していなければなりません
コメントに従って下記の行を入れ替えることで正しい環境構築となります。エラーの理由はパスを通す前にrbenvを呼び出す記述となっているからでした。
4.中途半端に設定したあとにコマンドをした方の重複箇所のと確認と削除について
rbenv の環境構築で重複する箇所は.bash_profile
だけなのでそちらを下記コマンドで確認し、一番最後に記載した.bash_profile
のテンプレートと異なる部分の削除を行なっていただくことで正しく設定できます。
※また、注意点として、ローカルの.bash_profile
とEC2(サーバー側)の.bash_profile
は記載内容が異なり、今回は全てEC2(サーバー側)で作業を行なうようにしてください。
[ec2-user@ip-000-00-00-00 ~]$ vim ~/.bash_profile
#.bash_profile(初期設定の隠しファイル)をviエディターで確認する
※1.でなぜもう一度全て打ち直していただいたかというと.bash_profile
にrubyやruby-buildが入っているか表示されないため、インストールされず進んでしまうおそれがあるからです。また、rubyやruby-buildは何度インストールしても自動でダブらないようにしてくれるため重複は気にしなくて大丈夫である(alreadyの文が出ます)ため、記載漏れしないように再度全て記述していただきました。(慣れている方はruby -vで環境の有無の確認の後.bash_profile
に手打ちでもいいのですが、初期設定のファイルの存在自体がわかりにくく、これを見られているのは初学者の方が多いと思うのでコマンドから打って、最後に不要部分を削ることをお勧めします。)
<`.bash_profile`のテンプレート>
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
以上の方法でエラー文は解消されます