4

デプロイ中に capistrano 3 を使用する際に問題が発生しました。デプロイ パス (deploy_to) について言及したにもかかわらず、私のアプリはデフォルトで /tmp ディレクトリに実行されます。cap が使用する git-ssh スクリプトを実行すると、いくつかのアクセス許可拒否エラーが発生します。

$ cap development deploy:check

 INFO [8ad6d60d] Running mkdir -p /tmp/myapp/ on 40.12.255.11
 INFO [8ad6d60d] Finished in 10.468 seconds with exit status 0 (successful).
 INFO Uploading /tmp/myapp/git-ssh.sh 100.0%
 INFO [b1e9863e] Running chmod +x /tmp/myapp/git-ssh.sh on 40.12.255.11
 INFO [b1e9863e] Finished in 8.093 seconds with exit status 0 (successful).

$猫 /tmp/myapp/git-ssh.sh

#!/bin/sh -e

exec /usr/bin/ssh -o PasswordAuthentication=no -o StrictHostKeyChecking=no "$@"

config/deploy.rb

set :application, "myapp"
set :scm, :git
set :repo_url,  "git@github.com:example/webapp.git"
set :deploy_to, "/home/ec2-user/capistrano-3/myapp"
set :ssh_options, {:keys => ["#{ENV['HOME']}/.ssh/myapp.pem"] }

set :log_level, :info
set :rvm_ruby_string, '2.0.0'
set :rvm_type, :user

set :branch, "master"
set :user, "ec2-user"
set :use_sudo, false
set :keep_releases, 2
set :git_shallow_clone, 1
set :deploy_via, :copy

set :whenever_command, "bundle exec whenever"
require 'sidekiq/capistrano'

namespace :deploy do
  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      # Your restart mechanism here, for example:
      # execute :touch, release_path.join('tmp/restart.txt')
    end
  end
  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      # Here we can do anything such as:
      # within release_path do
      #   execute :rake, 'cache:clear'
      # end
    end
  end

  after :finishing, 'deploy:cleanup'

end

キャップファイル

require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rvm'
require 'capistrano/bundler'

Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }

構成/デプロイ/development.rb

set :deploy_to, "/home/ec2-user/capistrano-3/myapp"
set :rails_env, "development"
set :unicorn_env, "development"
server "ec2-user@40.12.255.11", user: "ec2-user", roles: %w{web app db}
set :branch, ENV["REVISION"] || ENV["BRANCH_NAME"] || "master"

私の質問は

1.なぜ tmp/myapp が生成されるのですか? deploy_to でパスについて言及しました。これを克服する方法は?

2.git-ssh.shファイルが生成されないようにする方法。上記のように、パスワードの問題がいくつかあります。すべての問題を克服して適切な展開を行うにはどうすればよいですか。

助けてくれてありがとう

4

3 に答える 3

1
  1. /tmp/myapp実際にアプリが実行されている場所ではありません。これは、そのフォルダーを作成し、正しい権限があることを確認する git:wrapper タスクの一部です。デプロイすると、「/home/ec2-user/capistrano-3/myapp」を指定した正しいフォルダーに出力されます

  2. エラーのログを添付して、そこで何が起こっているのかをよりよく理解してください。deploy:check は「with exit status 0 (successful)」の上で成功しています。

参照を使用して tmp ディレクトリを変更できます:tmp_dir : https://github.com/capistrano/capistrano/blob/master/README.md#configuration

于 2014-01-17T02:17:46.523 に答える
0

deploy.rbこの問題を解決するには、ファイルに次の行を追加する必要があります。

set :tmp_dir, "/home/user/tmp"
于 2014-11-21T11:08:05.003 に答える
-1

このコマンドは capistrano3 の問題を解決します

cap jefferson deploy:setup

cap jefferson deploy:check

cap jefferson deploy

システムを再起動します

于 2014-01-07T13:48:23.260 に答える