3

capifony と Symfony2 に基づいて Symfony 2 プロジェクト展開 Web アプリを実行しようとしています。

Process を使用して「cap deploy」タスクをトリガーし、出力を Web ブラウザーに表示します。

シェルで「cap deploy」をユーザー www-data (Process で使用されるものと同じ) として実行すると、展開が正常に機能するため、展開タスクにも認証キーにも問題はありません。ただし、Web アプリからタスクを呼び出すと、capifony はリモート サーバーで認証できないと通知します。

triggering start callbacks for `deploy'

* executing `deploy:setdomain'
* executing `deploy'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'

triggering before callbacks for `deploy:update_code'

[32m--> Updating code base with checkout strategy[0m

executing locally: "git ls-remote [ myrepo ]"

command finished in 2068ms

* executing "git clone -q -o [ remote server ] [ my repo ] 
/var/www/spinfony/releases/20121211100449 && cd /var/www/spinfony/releases/20121211100449 && git checkout -q -b deploy be53233e51a4c542c3bc8603b424e57f988898a4 && (echo be53233e51a4c542c3bc8603b424e57f988898a4 > /var/www/spinfony/releases/20121211100449/REVISION)"

servers: ["[ remote server ]"]
Password: stty: standard input: Invalid argument
stty: standard input: Invalid argument
stty: standard input: Invalid argument

*** [deploy:update_code] rolling back

* executing "rm -rf /var/www/spinfony/releases/20121211100449; true"

servers: ["[ remote server ]"]
** [deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: [ remote server ] (Net::SSH::AuthenticationFailed: [ user ])
connection failed for: [ remote server ] (Net::SSH::AuthenticationFailed: [ user ])

シェルから実行していないため、capifony が提供できないパスワードを期待しているように見える理由を理解しようとしていますが、シェルから実行すると、何も聞かずに正常に動作します。

もう一度、同じファイルが同じユーザーから呼び出されます。

4

2 に答える 2

1

This is a known "bug"

You need to tell capistrano wich key to use

Try adding this to your deploy.rb :

ssh_options[:keys] = %w(/what/ever/.ssh/id_rsa)

Source : http://adam.goucher.ca/?p=1253

于 2012-12-12T10:44:59.580 に答える
0

Web アプリからタスクを呼び出すときは、使用するユーザーを指定する必要があります。

set :user, "www-data"
set :domain, "webserverdomainname.com"
于 2012-12-12T20:37:32.440 に答える