2013-07-06 35 views
0

我想在我的rails项目目录中运行cap deploy:setup,并且出现此错误。Capistrano连接问题

* 2013-07-06 02:46:14 executing `deploy:setup' 
* executing multiple commands in parallel 


-> "else" :: "sudo -p 'sudo password: ' mkdir -p /var/www /var/www/releases /var/www/shared /var/www/shared/system /var/www/shared/log /var/www/shared/pids" 
    -> "else" :: "sudo -p 'sudo password: ' mkdir -p /var/www /var/www/releases /var/www/shared /var/www/shared/system /var/www/shared/log /var/www/shared/pids" 
    -> "else" :: "sudo -p 'sudo password: ' mkdir -p /var/www /var/www/releases /var/www/shared /var/www/shared/system /var/www/shared/log /var/www/shared/pids" 
    -> "else" :: "sudo -p 'sudo password: ' mkdir -p /var/www /var/www/releases /var/www/shared /var/www/shared/system /var/www/shared/log /var/www/shared/pids" 
    -> "else" :: "sudo -p 'sudo password: ' mkdir -p /var/www /var/www/releases /var/www/shared /var/www/shared/system /var/www/shared/log /var/www/shared/pids" 
    servers: ["your web-server here", "*web-address-from-capfile*", "your app-server here", "your primary db-server here", "your slave db-server here"] 
connection failed for: your primary db-server here (SocketError: getaddrinfo: nodename nor servname provided, or not known), your web-server here (SocketError: getaddrinfo: nodename nor servname provided, or not known), your slave db-server here (SocketError: getaddrinfo: nodename nor servname provided, or not known), your app-server here (SocketError: getaddrinfo: nodename nor servname provided, or not known) 

我Capfile是这样的:

load 'deploy' 
# Uncomment if you are using Rails' asset pipeline 
load 'deploy/assets' 
load 'config/deploy' # remove this line to skip loading any of the default tasks 



set :application, "myapp" 

set :repository, "file://~/git/#{application}.git" 
set :local_repository, "myserver:~/git/#{application}.git" 
set :branch, "master" 

set :scm, :git 


set :deploy_to, "/var/www" 

ssh_options[:forward_agent] = true 
default_run_options[:pty] = true 


set :user, "me" 
ssh_options[:keys] = %w(~/.ssh/id_rsa) 

set :port, 33333 


server "example.com", :app, :web, :db, :primary => true 

此错误是真的快把我逼疯了。应该注意的是,我可以用我的公钥/私钥ssh进入我的服务器,并且sshd设置为在远程主机上的非默认端口(因此为set :port行)上侦听。

回答

0

所以这是一个愚蠢的错误...我编辑Capfile而不是config/deploy.rb在我的rails项目目录中。我在这个链接https://github.com/capistrano/capistrano/wiki/2.x-From-The-Beginning上编写的教程非常明确地说明了编辑config/deploy.rb,但因为我很习惯Makefile,所以我没有想到就直接插入Capfile。

正如您在config/deploy.rb中会注意到的那样,这些缺省行是存在的。

role :web, "your web-server here"       # Your HTTP server, Apache/etc 
role :app, "your app-server here"       # This may be the same as your `Web` server 
role :db, "your primary db-server here", :primary => true # This is where Rails migrations will run 
role :db, "your slave db-server here" 

这是导致发布问题,自然是因为“在这里你的web服务器”是不是连接的服务器。