質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

CapistranoでSSH接続エラーについて

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 3,848

daikitakaya

score 223

前提・実現したいこと

Capistranoを用いて、aws ec2インスタンス上にrailsアプリをデプロイしたいです。
参考にしたのは以下のURLです。

(Capistrano編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで

発生している問題・エラーメッセージ

bundle exec cap production deploy


デプロイのコマンドを打つと以下のエラーが出力されました。

(local)

cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as Daiki@52.197.206.151: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: rbenv: bundle: command not found

SSHKit::Command::Failed: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: rbenv: bundle: command not found

Tasks: TOP => deploy:updated => bundler:install
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as Daiki@52.197.206.151: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: rbenv: bundle: command not found

** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:

予想される解決策

おそらく、 app/config/deploy/production.rbにおけるキーが問題だと思われます。

app/config/deploy/production.rb

# EC2サーバーのIP、EC2サーバーにログインするユーザー名、サーバーのロールを記述
server 'アプリのID', user: 'Daiki', roles: %w{app db web} 

#デプロイするサーバーにsshログインする鍵の情報を記述
set :ssh_options, {
  keys: [File.expand_path('~/.ssh/Vook_key_rsa')],
}


僕の予想ではローカルからec2にsshで接続できないのが理由だと思っていたのですが、
しかしながら、Vook_key_rsaを用いて以下のようにec2 インスタンスにssh接続できるので手詰まり状態です。

(local)

[~] ssh Vook_key_rsa


キーの設定、設置は以下のURLを参考にしました。

(デプロイ編①)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで

Capistranoエラーログ

** Refer to log/capistrano.log for details. Here are the last 20 lines:

 DEBUG [06efeac4] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.…
  INFO [06efeac4] Finished in 0.067 seconds with exit status 0 (successful).
 DEBUG [65f26ee8] Running [ -L /var/www/Vook/releases/20160816043340/public/ass…
 DEBUG [65f26ee8] Command: [ -L /var/www/Vook/releases/20160816043340/public/as…
 DEBUG [65f26ee8] Finished in 0.067 seconds with exit status 1 (failed).
 DEBUG [023bd45f] Running [ -d /var/www/Vook/releases/20160816043340/public/ass…
 DEBUG [023bd45f] Command: [ -d /var/www/Vook/releases/20160816043340/public/as…
 DEBUG [023bd45f] Finished in 0.097 seconds with exit status 0 (successful).
  INFO [34449b77] Running /usr/bin/env rm -rf /var/www/Vook/releases/2016081604…
 DEBUG [34449b77] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.…
  INFO [34449b77] Finished in 0.061 seconds with exit status 0 (successful).
  INFO [9a3a86f6] Running /usr/bin/env ln -s /var/www/Vook/shared/public/assets…
 DEBUG [9a3a86f6] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.…
  INFO [9a3a86f6] Finished in 0.052 seconds with exit status 0 (successful).
 DEBUG [17472c7d] Running if test ! -d /var/www/Vook/releases/20160816043340; t…
 DEBUG [17472c7d] Command: if test ! -d /var/www/Vook/releases/20160816043340; …
 DEBUG [17472c7d] Finished in 0.061 seconds with exit status 0 (successful).
  INFO [cee978c3] Running $HOME/.rbenv/bin/rbenv exec bundle install --path /va…
 DEBUG [cee978c3] Command: cd /var/www/Vook/releases/20160816043340 && ( export…
 DEBUG [cee978c3]     rbenv: bundle: command not found

よろしく願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

ログを見ると、SSH接続エラーではなく「コマンドが見つかりません」エラーのようです。

INFO [06efeac4] Finished in 0.067 seconds with exit status 0 (successful).
  INFO [34449b77] Running /usr/bin/env rm -rf /var/www/Vook/releases/2016081604…
  INFO [34449b77] Finished in 0.061 seconds with exit status 0 (successful).
  INFO [9a3a86f6] Running /usr/bin/env ln -s /var/www/Vook/shared/public/assets…
  INFO [9a3a86f6] Finished in 0.052 seconds with exit status 0 (successful).
  INFO [cee978c3] Running $HOME/.rbenv/bin/rbenv exec bundle install --path /va…
 DEBUG [cee978c3] Command: cd /var/www/Vook/releases/20160816043340 && ( export…
 DEBUG [cee978c3]     rbenv: bundle: command not found

rbenvの環境にbudlerがインストールされていないか、パスが通っていないかのどちらかだと思われます。

(デプロイ編①)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで のrbenvのインストール作業の最後にruby -vでrubyのバージョンを確認していますが、ついでにgem envgem listでgemの状態を確認してみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/16 15:54

    回答ありがとうございます!

    ```gem env

    RubyGems Environment:
    - RUBYGEMS VERSION: 2.2.2
    - RUBY VERSION: 2.1.3 (2014-09-19 patchlevel 242) [x86_64-linux]
    - INSTALLATION DIRECTORY: /home/Daiki/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0
    - RUBY EXECUTABLE: /home/Daiki/.rbenv/versions/2.1.3/bin/ruby
    - EXECUTABLE DIRECTORY: /home/Daiki/.rbenv/versions/2.1.3/bin
    - SPEC CACHE DIRECTORY: /home/Daiki/.gem/specs
    - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
    - GEM PATHS:
    - /home/Daiki/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0
    - /home/Daiki/.gem/ruby/2.1.0
    - GEM CONFIGURATION:
    - :update_sources => true
    - :verbose => true
    - :backtrace => false
    - :bulk_threshold => 1000
    - REMOTE SOURCES:
    - https://rubygems.org/
    - SHELL PATH:
    - /home/Daiki/.rbenv/versions/2.1.3/bin
    - /home/Daiki/.rbenv/libexec
    - /home/Daiki/.rbenv/plugins/ruby-build/bin
    - /home/Daiki/.rbenv/shims
    - /home/Daiki/.rbenv/bin
    - /usr/local/bin
    - /bin
    - /usr/bin
    - /usr/local/sbin
    - /usr/sbin
    - /sbin
    - /opt/aws/bin
    - /home/Daiki/.local/bin
    - /home/Daiki/bin

    ```

    ```gem list

    *** LOCAL GEMS ***

    bigdecimal (1.2.4)
    bundler (1.12.5)
    io-console (0.4.2)
    json (1.8.1)
    minitest (4.7.5)
    psych (2.0.5)
    rake (10.1.0)
    rdoc (4.1.0)
    test-unit (2.1.3.0)




    ```

    となっておりました。

    キャンセル

  • 2016/08/16 16:57 編集

    先のエラーについては解決することができました!ありがとうございます。
    しかし、以下のようなエラーが出てしまいました。

    ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key

    環境変数がないよと言われてしまっていると思うのですが、そのような機密性の高い文字列の管理の仕方が未だによくわかりません。

    キャンセル

  • 2016/08/17 20:38

    上記エラーメッセージは必要な引数が不足しているといった感じの内容なので、環境変数は関係ないですが、エラーメッセージで検索すると引数に渡す情報を環境変数で設定しているものが見つかるのでそれらをご覧になられたのだと思います。

    機密性の高い情報の扱いについて、通常は設定ファイルへの記述が必要となりますが、設定ファイルはバージョン管理リポジトリへの登録対象である場合が多いので、当然のことながら設定ファイルに直接記述ることはできません。
    設定ファイルには環境変数から情報を取得して値を設定するように記述し、環境変数への設定は実行環境で設定するのがよくあるやり方ではないかと思います。


    参考サイトを見たところ、コメント欄に上記エラーについての質問を上げておられましたが、参考サイトにある手順ではエラーに関する情報を扱う場所が見当たらないので、参考サイトの主さんは回答できないのではないかと思われます。

    とりあえず、エラーがどのファイルを実行したときに発生したものかを確認して、そのファイル周辺の処理を調べてみてはいかがでしょうか。

    キャンセル

  • 2016/08/18 15:21

    無事解決することができました。
    ローカル側のアプリがawsのキーの値を受け取れない状態だったみたいです。

    おかげさまでもう直ぐcapostranoでデプロイできそうです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る