2013-07-06 46 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服務器」是不是連接的服務器。