###前提・実現したいこと
- localで作った簡単なrailsのアプリケーションをサーバー側にデプロイしようとしています。
- このサイトを参考にしています
- Capistrano+nginx+Unicornでやろうとしています。
###発生している問題・エラーメッセージ
bundle exec cap staging deploy
でデプロイしようとすると、次のようなエラーが出てデプロイできません。
(Backtrace restricted to imported tasks) cap aborted! SSHKit::Runner::ExecuteError: Exception while executing as ***@***.**.***.***: Net::SSH::ConnectionTimeout Net::SSH::ConnectionTimeout: Net::SSH::ConnectionTimeout Errno::ETIMEDOUT: Operation timed out - connect(2) for ***.**.***.***:** Tasks: TOP => git:check => git:wrapper (See full trace by running task with --trace)
###該当のソースコード
- 関係がありそうなファイルのソースです
- config/deploy/staging.rb
ruby
1set :rails_env, "staging" 2set :unicorn_rack_env, "staging" 3role :app, %w{***@***.**.***.***:**} 4role :web, %w{***@***.**.***.***:**} 5role :db, %w{***@***.**.***.***:**} 6server '***@***.**.***.***:**', user: '***', roles: %w{web app}, my_property: :my_value 7 8set :ssh_options, { 9 keys: %w(/home/***/.ssh/(secretkey), 10 forward_agent: true, 11 auth_methods: %w{publickey}, 12}
- config/unicorn/staging.rb
Ruby
1@app_path = '/var/www/***/***' 2working_directory @app_path + "/current" 3 4worker_processes 2 5preload_app true 6timeout 30 7listen "/tmp/unicorn.sock", :backlog => 64 8pid "/var/www/***/***/shared/tmp/pids/unicorn.pid" 9 10stderr_path "#{@app_path}/log/unicorn.stderr.log" 11stdout_path "#{@app_path}/log/unicorn.stdout.log" 12 13before_fork do |server, worker| 14 ENV['BUNDLE_GEMFILE'] = File.expand_path('Gemfile', ENV['RAILS_ROOT']) 15end 16 17before_fork do |server, worker| 18 if defined?(ActiveRecord::Base) 19 ActiveRecord::Base.connection.disconnect! 20 end 21 22 old_pid = "#{server.config[:pid]}.oldbin" 23 if File.exists?(old_pid) && server.pid != old_pid 24 begin 25 Process.kill("QUIT", File.read(old_pid).to_i) 26 rescue Errno::ENOENT, Errno::ESRCH 27 end 28 end 29end 30 31after_fork do |server, worker| 32 if defined?(ActiveRecord::Base) 33 ActiveRecord::Base.establish_connection 34 end 35end
- config/deploy.rb
Ruby
1# config valid only for Capistrano 3.1 2lock '3.4.1' 3 4set :application, 'my_app_name' 5set :repo_url, 'https://github.com/***/***.git' 6 7set :branch, 'master' 8set :deploy_to, '/var/www/***/***' 9set :scm, :git 10set :log_level, :debug 11set :pty, true 12set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets bundle public/system public/assets} 13set :default_env, { path: "/usr/local/rbenv/shims:/usr/local/rbenv/bin:$PATH" } 14set :keep_releases, 5 15 16after 'deploy:publishing', 'deploy:restart' 17namespace :deploy do 18 19 desc 'Restart application' 20 task :restart do 21 invoke 'unicorn:restart' 22 end 23end 24
###試したこと
- 参考サイトの
myapp/public
の部分を自分のサーバーのディレクトリに変えたのですが、変えすぎてしまったのでしょうか… - サーバーには普通にやればssh-keyをつかって接続をすることができます。capistranoだとうまくいかない、といったところです。
- 何か気づくことがございましたら教えてくださるようお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。