0

ローカル マシンから外部サーバーにアプリケーションをデプロイするための新しいユーザーを作成しようとしています。

root を使用して動作させましたが、root を使用するのは安全ではないことを理解しているため、'deployer' というユーザーを作成したいと考えています。このユーザーを外部サーバーに追加し、ローカルの is_rsa.pub キーをサーバーの /.ssh/authorized_keys にコピーしましたが、実行するcap development deployと次のエラーが発生し続けます。

failed: "sh -c 'if [ -d /var/www/vhosts/xyz.co.uk/shared/cached-copy ]; then cd
  /var/www/vhosts/xyz.co.uk/shared/cached-copy && git fetch -q origin && git fetch --
tags -q origin && git reset -q --hard 2b738f4ca8008dcf9e84c4be5d63d906a7bfd760 && git clean 
-q -d -x -f; else git clone -q git@github.com:xyz/xyz.co.uk.git 
/var/www/vhosts/xyz.co.uk/shared/cached-copy && cd /var/www/vhosts/xyz.co.uk/shared/cached-
copy && git checkout -q -b deploy 2b738f4ca8008dcf9e84c4be5d63d906a7bfd760; fi'" on 
x.xx.xx.xxx

外部サーバーで ssh -T git@github.com を実行すると、次のように表示されます。

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

このユーザー名はデプロイヤーではありませんが、github アカウントのユーザー名だと思います。

私がしなければならないことはありますか?ローカル マシンでもデプロイヤー ユーザーを作成する必要がありますか?

私の deploy.rb ファイルは次のとおりです。

set :stage_dir, 'app/config/deploy' # needed for Symfony2 only
set :stages, %w(production staging development)
require 'capistrano/ext/multistage'

set :application,           "xyz.co.uk"
set :user,                  "deployer"  # The server's user for deploys

set :normalize_asset_timestamps, false

set :repository,            "git@github.xyz/xyz.co.uk.git"
set :scm,                   :git
set :keep_releases,         3
after "deploy:update",      "deploy:cleanup"
set :use_sudo,              false
set :web_path,              "web"
set :shared_files,          ["app/config/parameters.yml"]
set :shared_children,       [app_path + "/logs", web_path + "/uploads"]
set :use_composer,          true
set :update_vendors,        true
set :dump_assetic_assets,   true
set :deploy_via,            :remote_cache

#logger.level = Logger::MAX_LEVEL

after "deploy:update_code" do
  capifony_pretty_print "--> Ensuring cache directory permissions"
  run "setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX #{latest_release}/#{cache_path}"
  run "setfacl -dR -m u:www-data:rwX -m u:`whoami`:rwX #{latest_release}/#{cache_path}"
  capifony_puts_ok
end

deveopment.rb ファイル:

server 'x.xx.xx.xxx', :app, :web, :db, :primary => true
ssh_options[:port] = 1234
ssh_options[:forward_agent] = true
default_run_options[:pty] = true
set :deploy_to, "/var/www/vhosts/xyz.co.uk"
set :symfony_env_prod, "dev"
set :branch, "develop"

# Need to clear *_dev controllers
set :clear_controllers,     false

ありがとう

4

2 に答える 2

1

ターゲット マシンでローカル SSH 資格情報を使用して Github への認証を行う必要があります。これを行うには、次の 2 つのエントリを deploy.rb に追加します。

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

または、別の方法として、Github リポジトリに移動し、ターゲット サーバーの公開 SSH キーをデプロイ キーとして追加します。

https://github.com/your_github/your_repo/settings/keys

これにより、ターゲット サーバーは、個人の SSH キーを使用することなく、指定されたリポジトリのみにチェックアウト アクセスできます。

于 2013-04-09T05:46:09.180 に答える