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

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

新規登録して質問してみよう
ただいま回答率
85.50%
unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

Ruby on Rails 5

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

Ruby

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

Capistrano

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

Q&A

解決済

1回答

9960閲覧

railsデプロイ時に「SSHKit::Runner::ExecuteError:」というエラー

k.tachi

総合スコア6

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

Ruby on Rails 5

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

Ruby

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

Capistrano

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

0グッド

0クリップ

投稿2018/02/24 12:27

前提・実現したいこと

当方初心者です。
railsでアプリを作成中で、以下のサイトを参考にデプロイを試みています。
https://pierrot-space.com/2017/03/05/post-1062/

環境は上記サイトとほぼ同じで、
・ruby 2.3.0
・ruby on rails 5.1.4
・PC windows
・仮想開発環境 VirturlBos + Vagrant + centos7
・本番環境 さくらVPS
・MariaDB
・Nginx
・Unicorn
・Capistrano
・bitbucket
です。

上記サイトの手順通りに進め、
下記ページ
https://pierrot-space.com/2017/03/18/post-1117/
最終部分の

$ export RAILS_ENV=production $ cap production deploy:upload

を実行したところ、
以下のようなエラーメッセージが表示されてしまいます。

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

[vagrant@localhost ****]$ cap production deploy:upload [Deprecation Notice] `set :scm, :git` is deprecated. To ensure your project is compatible with future versions of Capistrano, remove the :scm setting and instead add these lines to your Capfile after `require "capistrano/deploy"`: require "capistrano/scm/git" install_plugin Capistrano::SCM::Git (Backtrace restricted to imported tasks) cap aborted! SSHKit::Runner::ExecuteError: Exception while executing as ***@***.**.***.***: Net::SSH::ConnectionTimeout Caused by: Net::SSH::ConnectionTimeout: Net::SSH::ConnectionTimeout Caused by: Errno::ETIMEDOUT: Connection timed out - connect(2) for ***.**.***.***:22 Tasks: TOP => rbenv:validate (See full trace by running task with --trace)

該当のソースコード

関係がありそうなファイルのソースを記載します。

config/deploy/production.rb

ruby

1set :stage, :production 2set :branch, 'master' 3 4role :app, %w{***@***.**.***.***} 5role :web, %w{***@***.**.***.***} 6role :db, %w{***@***.**.***.***} 7 8set :ssh_options, { 9 keys: [File.expand_path('~/.ssh/insecure_private_key')], 10 forward_agent: true, 11 auth_methods: %w(publickey) 12} 13

config/deploy.rb

ruby

1# config valid for current version and patch releases of Capistrano 2lock "~> 3.10.1" 3 4set :application, "***" 5set :repo_url, "git@bitbucket.org:***/memome.git" 6 7set :deploy_to, '/var/www/app/***' 8 9set :branch, 'master' 10set :default_stage, "development" 11set :scm, :git 12set :deploy_via, :remote_cache 13 14set :log_level, :debug 15set :pty, true # sudo に必要 16set :bundle_binstubs, nil 17 18# Shared に入るものを指定 19set :linked_files, %w{config/database.yml config/secrets.yml} 20set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets bundle public/system public/assets} 21 22# Unicorn 23set :unicorn_pid, "#{shared_path}/tmp/pids/unicorn.pid" 24 25# 5回分のreleasesを保持する 26set :keep_releases, 5 27 28after 'deploy:publishing', 'deploy:restart' 29namespace :deploy do 30 # アプリの再起動を行うタスク 31 desc 'Restart application' 32 task :restart do 33 on roles(:app), in: :sequence, wait: 5 do 34 execute :mkdir, '-p', release_path.join('tmp') 35 execute :touch, release_path.join('tmp/restart.txt') 36 end 37 end 38 39 # linked_files で使用するファイルをアップロードするタスク 40 # deployが行われる前に実行する必要がある。 41 desc 'upload important files' 42 task :upload do 43 on roles(:app) do |host| 44 execute :mkdir, '-p', "#{shared_path}/config" 45 upload!('config/database.yml',"#{shared_path}/config/database.yml") 46 upload!('config/secrets.yml',"#{shared_path}/config/secrets.yml") 47 end 48 end 49 50 # webサーバー再起動時にキャッシュを削除する 51 after :restart, :clear_cache do 52 on roles(:web), in: :groups, limit: 3, wait: 10 do 53 # Here we can do anything such as: 54 within release_path do 55 execute :rm, '-rf', release_path.join('tmp/cache') 56 end 57 end 58 end 59 60 # Flow の before, after のタイミングで上記タスクを実行 61 before :started, 'deploy:upload' 62 after :finishing, 'deploy:cleanup' 63 64 # Unicorn 再起動タスク 65 desc 'Restart application' 66 task :restart do 67 invoke 'unicorn:restart' # lib/capustrano/tasks/unicorn.cap 内処理を実行 68 end 69end 70 71

※「*」部分は、自分の環境に書き換えている部分です。

試したこと

エラーメッセージの最後に、

Caused by: Errno::ETIMEDOUT: Connection timed out - connect(2) for ***.**.***.***:22

と「:22」が記載されていますが、
サーバー側のSSH接続ポートを別の値に変更しているので、そのあたりが原因なのかとも思いますが、
上記のエラーどこの記述が原因で「:22」となっているのかもわからず…。

そもそも、上記のポート以外の問題以外が原因なのかもしれませんが、
何か基本的なところで間違っているような気もするのですが、
当方初心者につき、原因および解決方法がわからずご質問させていただいた次第です。

解決にあたり不足している情報などがあれば追記いたしましのでご指摘ください。

よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

config\deploy\production.rb を以下のように書き換えることで解決しました。

ruby

1set :ssh_options, { 2 port: XXX, #XXXにポート番号 3 keys: [File.expand_path('~/.ssh/id_rsa')], #'~/.ssh/id_rsa'部分をローカル環境の鍵のパスに 4 forward_agent: true, 5 auth_methods: %w(publickey) 6}

投稿2018/02/24 16:42

k.tachi

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問