I am trying to deploy my first rails app using Capistrano and am getting an error
My deployment of a rails app with capistrano is failing and I hoping someone can provide me with pointers to troubleshoot. The following is the command output
andrew@melb-web:~/projects/rails/guestbook2$ cap deploy:setup
* executing `deploy:setup'
* executing "mkdir -p /var/www/dev/guestbook2 /var/www/dev/guestbook2/releases /var/www/dev/guestbook2/shared /var/www/dev/guestbook2/shared/system /var/www/dev/guestbook2/shared/log /var/www/dev/guestbook2/shared/pids && chmod g+w /var/www/dev/guestbook2 /var/www/dev/guestbook2/releases /var/www/dev/guestbook2/shared /var/www/dev/guestbook2/shared/system /var/www/dev/guestbook2/shared/log /var/www/dev/guestbook2/shared/pids"
servers: ["dev.andrewbucknell.com"]
Enter passphrase for /home/andrew/.ssh/id_dsa:
Enter passphrase for /home/andrew/.ssh/id_dsa:
[dev.andrewbucknell.com] executing command
command finished
andrew@melb-web:~/projects/rails/guestbook2$ cap deploy:check
* executing `deploy:check'
* executing "test -d /var/www/dev/guestbook2/releases"
servers: ["dev.andrewbucknell.com"]
Enter passphrase for /home/andrew/.ssh/id_dsa:
[dev.andrewbucknell.com] executing command
command finished
* executing "test -w /var/www/dev/guestbook2"
servers: ["dev.andrewbucknell.com"]
[dev.andrewbucknell.com] executing command
command finished
* executing "test -w /var/www/dev/guestbook2/releases"
servers: ["dev.andrewbucknell.com"]
[dev.andrewbucknell.com] executing command
command finished
* executing "which git"
servers: ["dev.andrewbucknell.com"]
[dev.andrewbucknell.com] executing command
command finished
* executing "test -w /var/www/dev/guestbook2/shared"
servers: ["dev.andrewbucknell.com"]
[dev.andrewbucknell.com] executing command
command finished
You appear to have all necessary dependencies installed
andrew@melb-web:~/projects/rails/guestbook2$ cap deploy:migrations
* executing `deploy:migrations'
* executing `deploy:update_code'
updating the cached checkout on all servers
executing locally: "git ls-remote andrew@dev.andrewbucknell.com:/home/andrew/git/guestbook2.git master"
Enter passphrase for key '/home/andrew/.ssh/id_dsa':
* executing "if [ -d /var/www/dev/guestbook2/shared/cached-copy ]; then cd /var/www/dev/guestbook2/shared/cached-copy && git fetch origin && git reset --hard 369c5e04aaf83ad77efbfba0141001ac90915029 && git clean -d -x -f; else git clone andrew@dev.andrewbucknell.com:/home/andrew/git/guestbook2.git /var/www/dev/guestbook2/shared/cached-copy && cd /var/www/dev/guestbook2/shared/cached-copy && git checkout -b deploy 369c5e04aaf83ad77efbfba0141001ac90915029; fi"
servers: ["dev.andrewbucknell.com"]
Enter passphrase for /home/andrew/.ssh/id_dsa:
[dev.andrewbucknell.com] executing command
** [dev.andrewbucknell.com :: err] Permission denied, please try again.
** Permission denied, please try again.
** Permission denied (publickey,password).
** [dev.andrewbucknell.com :: err] fatal: The remote end hung up unexpectedly
** [dev.andrewbucknell.com :: out] Initialized empty Git repository in /var/www/dev/guestbook2/shared/cached-copy/.git/
command finished
failed: "sh -c 'if [ -d /var/www/dev/guestbook2/shared/cached-copy ]; then cd /var/www/dev/guestbook2/shared/cached-copy && git fetch origin && git reset --hard 369c5e04aaf83ad77efbfba0141001ac90915029 && git clean -d -x -f; else git clone andrew@dev.andrewbucknell.com:/home/andrew/git/guestbook2.git /var/www/dev/guestbook2/shared/cached-copy && cd /var/www/dev/guestbook2/shared/cached-copy && git checkout -b deploy 369c5e04aaf83ad77efbfba0141001ac90915029; fi'" on dev.andrewbucknell.com
andrew@melb-web:~/projects/rails/guestbook2$
The following fragment is from cap -d deploy:migrations
Preparing to execute command: "find /var/www/dev/guestbook2/releases/20100305124415/public/images /var/www/dev/gue开发者_JAVA百科stbook2/releases/20100305124415/public/stylesheets /var/www/dev/guestbook2/releases/20100305124415/public/javascripts -exec touch -t 201003051244.22 {} ';'; true"
Execute ([Yes], No, Abort) ? |y| yes
* executing `deploy:migrate'
* executing "ls -x /var/www/dev/guestbook2/releases"
Preparing to execute command: "ls -x /var/www/dev/guestbook2/releases"
Execute ([Yes], No, Abort) ? |y| yes
/usr/lib/ruby/gems/1.8/gems/capistrano-2.5.17/lib/capistrano/recipes/deploy.rb:55:in `join': can't convert nil into String (TypeError)
from /usr/lib/ruby/gems/1.8/gems/capistrano-2.5.17/lib/capistrano/recipes/deploy.rb:55:in `load'
I added default_run_options[:pty] = true to my deploy.rb and all worked fine. I am running on debian - I guess it needs its own pty or something to get the right permissions. Thanks for your tips guys.
Looks to me like a permission problem on the server side.
Enter passphrase for /home/andrew/.ssh/id_dsa:
[dev.andrewbucknell.com] executing command
** [dev.andrewbucknell.com :: err] Permission denied, please try again.
** Permission denied, please try again.
** Permission denied (publickey,password).
** [dev.andrewbucknell.com :: err] fatal: The remote end hung up unexpectedly
Looks like git (on the server) is having difficulty authenticating with the git server.
Very helpful for me was to run cap deploy:check
before doing anything else. Once that ran error free it was much easier to sort everything else out.
精彩评论