Trying to deploy a Rails app on an EC2 instance with Puma/Nginx/Capistrano. I was following this tutorial.
This is my first deploy, not sure what exactly is going on. Seems like there is an issue with my ssh configuration, judging from the console output, but what exactly I'm really not sure any help would be greatly appreciated.
Here's the deploy.rb
server '52.206.222.73', roles: %w{web app db}, primary: true
set :repo_url, 'git@example.com:username/myapp.git'
set :application, 'myapp'
set :user, 'deploy'
set :puma_threads, [4, 16]
set :puma_workers, 0
# Don't change these unless you know what you're doing
set :pty, true
set :use_sudo, false
set :stage, :production
set :deploy_via, :remote_cache
set :deploy_to, "/home/#{fetch(:user)}/#{fetch(:application)}"
set :puma_bind, "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock"
set :puma_state, "#{shared_path}/tmp/pids/puma.state"
set :puma_pid, "#{shared_path}/tmp/pids/puma.pid"
set :puma_access_log, "#{release_path}/log/puma.error.log"
set :puma_error_log, "#{release_path}/log/puma.access.log"
set :ssh_options, { forward_agent: true, user: fetch(:user), keys: %w(~/.ssh/id_rsa.pub) }
set :puma_preload_app, true
set :puma_worker_timeout, nil
set :puma_init_active_record, true # Change to false when not using ActiveRecord
## Defaults:
# set :scm, :git
# set :branch, :master
# set :format, :pretty
# set :log_level, :debug
# set :keep_releases, 5
## Linked Files & Directories (Default None):
# set :linked_files, %w{config/database.yml}
# set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
namespace :puma do
desc 'Create Directories for Puma Pids and Socket'
task :make_dirs do
on roles(:app) do
execute "mkdir #{shared_path}/tmp/sockets -p"
execute "mkdir #{shared_path}/tmp/pids -p"
end
end
And output from cap production deploy --trace
** Execute git:wrapper
00:00 git:wrapper
01 mkdir -p /tmp
✔ 01 deploy@52.206.222.73 0.695s
Uploading /tmp/git-ssh-myapp-production-adam.sh 100.0%
02 chmod 700 /tmp/git-ssh-myapp-production-adam.sh
✔ 02 deploy@52.206.222.73 0.921s
** Execute git:check
00:04 git:check
01 git ls-remote --heads git@example.com:username/amharic-web.git
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@52.206.222.73: git exit status: 128
git stdout: Nothing written
git stderr: Nothing written
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
SSHKit::Command::Failed: git exit status: 128
git stdout: Nothing written
git stderr: Nothing written
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/command.rb:100:in `exit_status='
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/netssh.rb:148:in `execute_command'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:141:in `block in create_command_and_execute'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:141:in `tap'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:141:in `create_command_and_execute'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:74:in `execute'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/capistrano-3.6.0/lib/capistrano/git.rb:10:in `git'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/capistrano-3.6.0/lib/capistrano/git.rb:20:in `check'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/capistrano-3.6.0/lib/capistrano/tasks/git.rake:34:in `block (4 levels) in <top (required)>'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:93:in `with'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/capistrano-3.6.0/lib/capistrano/tasks/git.rake:33:in `block (3 levels) in <top (required)>'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:29:in `instance_exec'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:29:in `run'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
Tasks: TOP => git:check
The deploy has failed with an error: Exception while executing as deploy@52.206.222.73: git exit status: 128
git stdout: Nothing written
git stderr: Nothing written
** Invoke deploy:failed (first_time)
** Execute deploy:failed
** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:
DEBUG [34726536] -
DEBUG [34726536] .
DEBUG [34726536] |
DEBUG [34726536] /
DEBUG [34726536] -
DEBUG [34726536] \
DEBUG [34726536] .\
DEBUG [34726536] .
DEBUG [34726536] ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
DEBUG [34726536] Finished in 1.755 seconds with exit status 0 (successful).
INFO [2219decf] Running /usr/bin/env mkdir -p /tmp as deploy@52.206.222.73
DEBUG [2219decf] Command: /usr/bin/env mkdir -p /tmp
INFO [2219decf] Finished in 0.695 seconds with exit status 0 (successful).
DEBUG Uploading /tmp/git-ssh-myapp-production-adam.sh 0.0%
INFO Uploading /tmp/git-ssh-myapp-production-adam.sh 100.0%
INFO [38c56cdb] Running /usr/bin/env chmod 700 /tmp/git-ssh-myapp-production-adam.sh as deploy@52.206.222.73
DEBUG [38c56cdb] Command: /usr/bin/env chmod 700 /tmp/git-ssh-myapp-production-adam.sh
INFO [38c56cdb] Finished in 0.921 seconds with exit status 0 (successful).
INFO [4ce4f406] Running /usr/bin/env git ls-remote --heads git@example.com:username/amharic-web.git as deploy@52.206.222.73
DEBUG [4ce4f406] Command: ( export GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/git-ssh-myapp-production-adam.sh" ; /usr/bin/env git ls-remote --heads git@example.com:username/amharic-web.git )*
Run these 2 commands to grant git access via your system
eval ssh-agent
ssh-add ~/.ssh/id_rsa
These commands are assuming that you have ssh key over the remote git server(bitbucket/github/other)
I'm surprised there isn't a more descriptive error message from Git. However, the git ls-remote
command is failing for some reason. In absence of any error message, the best guess is that Git cannot access the remote repository.
This could be because:
On your local machine (ie where you ran the cap
command), try manually running the same Git command via SSH and see what happens:
ssh -A -i ~/.ssh/id_rsa.pub deploy@52.206.222.73 git ls-remote --heads git@example.com:username/amharic-web.git
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.