Help us understand the problem. What is going on with this article?

[-bash: rbenv: コマンドが見つかりません]aws(ec2)上のrbenvの初期設定エラーの解決方法

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
# .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
# .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 -)"

以上の方法でエラー文は解消されます

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした