前提・実現したいこと
当方初心者です。
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」となっているのかもわからず…。
そもそも、上記のポート以外の問題以外が原因なのかもしれませんが、
何か基本的なところで間違っているような気もするのですが、
当方初心者につき、原因および解決方法がわからずご質問させていただいた次第です。
解決にあたり不足している情報などがあれば追記いたしましのでご指摘ください。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。