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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

Q&A

解決済

1回答

2503閲覧

SSHKit::Runner::ExecuteErrorエラーがRails アプリデプロイ時に出ます

TakashiOda

総合スコア34

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

0グッド

0クリップ

投稿2019/01/17 10:41

編集2019/01/17 10:49

Rails 初学者です。
Rails5 / Capistrano3 でAWSに自作のアプリをデプロイしようとしたところ、以下のようなエラーが出ました。
アドバイスをいただけたらと思います。

環境
Ruby 2.6.0
Rails 5.2.0
Capistrano 3.11.0
サーバー AWS linux
Nginx
Unicorn

##発生している問題

エラーを見る限り、ssh接続、もしくはssh接続に関する記述に問題があるのではと思っているのですが、試したこと以外に検討がつきません。

実行したコマンド
$ bundle exec cap production deploy

Error

1#<Thread:0x00007fde259a0348@/Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true): 2Traceback (most recent call last): 3 21: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute' 4 20: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:29:in `run' 5 19: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:29:in `instance_exec' 6 18: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/capistrano-rbenv-2.1.4/lib/capistrano/tasks/rbenv.rake:10:in `block (3 levels) in <top (required)>' 7 17: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:59:in `test' 8 16: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:145:in `create_command_and_execute' 9 15: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:145:in `tap' 10 14: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:145:in `block in create_command_and_execute' 11 13: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/netssh.rb:129:in `execute_command' 12 12: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/netssh.rb:176:in `with_ssh' 13 11: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/connection_pool.rb:59:in `with' 14 10: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/connection_pool.rb:59:in `call' 15 9: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/net-ssh-5.1.0/lib/net/ssh.rb:242:in `start' 16 8: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/net-ssh-5.1.0/lib/net/ssh.rb:242:in `new' 17 7: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/net-ssh-5.1.0/lib/net/ssh/transport/session.rb:73:in `initialize' 18 6: from /Users/odatakashi/.rbenv/versions/2.6.0/lib/ruby/2.6.0/socket.rb:631:in `tcp' 19 5: from /Users/odatakashi/.rbenv/versions/2.6.0/lib/ruby/2.6.0/socket.rb:227:in `foreach' 20 4: from /Users/odatakashi/.rbenv/versions/2.6.0/lib/ruby/2.6.0/socket.rb:227:in `each' 21 3: from /Users/odatakashi/.rbenv/versions/2.6.0/lib/ruby/2.6.0/socket.rb:641:in `block in tcp' 22 2: from /Users/odatakashi/.rbenv/versions/2.6.0/lib/ruby/2.6.0/socket.rb:137:in `connect' 23 1: from /Users/odatakashi/.rbenv/versions/2.6.0/lib/ruby/2.6.0/socket.rb:64:in `connect_internal' 24/Users/odatakashi/.rbenv/versions/2.6.0/lib/ruby/2.6.0/socket.rb:64:in `connect': Operation timed out - connect(2) for 52.199.254.34:22 (Errno::ETIMEDOUT) 25 15: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute' 26 14: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:29:in `run' 27 13: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:29:in `instance_exec' 28 12: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/capistrano-rbenv-2.1.4/lib/capistrano/tasks/rbenv.rake:10:in `block (3 levels) in <top (required)>' 29 11: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:59:in `test' 30 10: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:145:in `create_command_and_execute' 31 9: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:145:in `tap' 32 8: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/abstract.rb:145:in `block in create_command_and_execute' 33 7: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/netssh.rb:129:in `execute_command' 34 6: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/netssh.rb:176:in `with_ssh' 35 5: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/connection_pool.rb:59:in `with' 36 4: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/backends/connection_pool.rb:59:in `call' 37 3: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/net-ssh-5.1.0/lib/net/ssh.rb:242:in `start' 38 2: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/net-ssh-5.1.0/lib/net/ssh.rb:242:in `new' 39 1: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/net-ssh-5.1.0/lib/net/ssh/transport/session.rb:59:in `initialize' 40/Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/net-ssh-5.1.0/lib/net/ssh/transport/session.rb:92:in `rescue in initialize': Net::SSH::ConnectionTimeout (Net::SSH::ConnectionTimeout) 41 1: from /Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute' 42/Users/odatakashi/Web_Apps/donosake/vendor/bundle/ruby/2.6.0/gems/sshkit-1.18.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as odatakashi@52.199.254.34: Net::SSH::ConnectionTimeout (SSHKit::Runner::ExecuteError) 43(Backtrace restricted to imported tasks) 44cap aborted! 45SSHKit::Runner::ExecuteError: Exception while executing as odatakashi@52.199.254.34: Net::SSH::ConnectionTimeout 46 47 48Caused by: 49Net::SSH::ConnectionTimeout: Net::SSH::ConnectionTimeout 50 51 52Caused by: 53Errno::ETIMEDOUT: Operation timed out - connect(2) for 52.199.254.34:22 54 55Tasks: TOP => rbenv:validate 56(See full trace by running task with --trace) 57

##関係箇所のコード
[config/deploy.rb]

lock "3.11.0" set :application, "donosake_app" set :repo_url, "git@github.com:TakashiOda/donosake_app.git" set :branch, 'master' set :deploy_to, "/var/www/" set :linked_files, fetch(:linked_files, []).push('config/settings.yml') set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system') set :unicorn_pid, "#{shared_path}/tmp/pids/unicorn.pid" set :keep_releases, 5 set :rbenv_ruby, '2.6.0' set :log_level, :debug 〜以下省略〜

[config/deploy/production.rb]

server '52.199.254.34', user: 'odatakashi', roles: %w{app db web} set :ssh_otions, { port: 22022, keys: '~/.ssh/*******.pem', #AWS EC2で作成したキーペア user: "odatakashi", forward_agent: true, } 〜以下省略〜 # ------------------------------------ # server "example.com", # user: "user_name", # roles: %w{web app}, # ssh_options: { # user: "user_name", # overrides user setting above # keys: %w(/home/user_name/.ssh/id_rsa), # forward_agent: false, # auth_methods: %w(publickey password) # # password: "please use keys" # }

試したこと

####その1
ローカル→EC2サーバーへのssh接続は可能。 EC2サーバー→Gitへのssh接続も問題なし。

####その2
$ bundle exec cap production deploy --dry-runを実行するも、問題はありませんでした。

####その3
[config/deploy/production.rb]にssh_options(ポート番号等)の追加

set :ssh_otions, { port: 22022, keys: '~/.ssh/*******.pem', user: "odatakashi", forward_agent: true, }

####その4
[config/deploy.rb]にssh_optionsの追加

set :ssh_options, { forward_agent: true, user: "odatakashi", keys: %w(~/.ssh/******.pem) #AWS EC2で作成したキーペア }

英語情報も調べましたが、解決策が見つかりません。お手数ですが、助言をいただけたらと思います。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。

config/deploy/production.rbの記述を変更。

before

1server '52.199.254.34', user: 'odatakashi', roles: %w{app db web} 2 3set :ssh_otions, { 4 port: 22022, 5 keys: '~/.ssh/********.pem', 6 user: "odatakashi", 7 forward_agent: true, 8}

after

1server '52.199.254.34', 2 user: "odatakashi", 3 roles: %w{web db app}, 4 ssh_options: { 5 port: 22022, 6 user: "odatakashi", # overrides user setting above 7 keys: %w(~/.ssh/DonoSake_Key.pem), 8 forward_agent: true 9# auth_methods: %w(publickey password) 10# # password: "please use keys" 11 }

投稿2019/01/17 10:52

TakashiOda

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問