質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.04%

【Capistrano】git stdout: error: cannot open FETCH_HEAD: 許可がありません

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 498

score 0

状況

Railsアプリをec2 + nginx + unicorn + capistranoでの自動デプロイに挑戦しているのですが、設定をし終えてbundle exec cap production deployをするとGit周りのエラーが起こってしまいます。

エラー内容

$ bundle exec cap production deploy
省略
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as Stelle@3.112.153.67: git exit status: 1
git stdout: error: cannot open FETCH_HEAD: 許可がありません
git stderr: Nothing written

これまでの流れとしては、サーバー上で~から.gitconfigを編集し、その後は以下のとおりです。

[Stelle@ip- ~]$ chmod 700 .ssh

[Stelle@ip- ~]$ cd .ssh

[Stelle@ip- .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
省略

[Stelle@ip- .ssh]$ vim config
Host github
  Hostname github.com
  User git
  IdentityFile ~/.ssh/xxx_key_rsa
これで保存

[Stelle@ip- .ssh]$ cat xxx_key_rsa.pub
Githubにssh接続

[Stelle@ip- .ssh]$ chmod 600 config

[Stelle@ip- .ssh]$ ssh -T github
Hi sakanafuto! You've successfully authenticated, but GitHub does not provide shell access.

[Stelle@ip- .ssh]$ cd

[Stelle@ip- ~]$ ssh-add ~/.ssh/xxx_key_rsa
Could not open a connection to your authentication agent.

[Stelle@ip- ~]$  eval "$(ssh-agent)"
Agent pid 27483

[Stelle@ip- ~]$ ssh-add ~/.ssh/xxx_key_rsa
Identity added: /home/Stelle/.ssh/xxx_key_rsa (/home/Stelle/.ssh/xxx_key_rsa)

この後にローカルで先程のようにデプロイするとエラーに成ってしまいます。

該当コード

config/deproy.rb

lock "3.5.0"

set :application, "stelle"
set :repo_url, "git@github.com:sakanafuto/xxx.git"

set :deploy_to, "/var/www/stelle"

set :scm, :git
set :format, :pretty
set :log_level, :debug

set :pty, true

set :keep_releases, 5

set :rbenv_type, :user
set :rbenv_ruby, '2.6.5'

set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec"
set :rbenv_map_bins, %w{rake gem bundle ruby rails}

set :linked_files, fetch(:linked_files, []).push('config/master.key')

set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')

set :bundle_jobs, 4


namespace :deploy do

  desc 'Restart application'
  task :restart do
    on roles(:app) do
      invoke 'unicorn:restart'
    end
  end

  desc 'Create database'
  task :db_create do
    on roles(:db) do |host|
      with rails_env: fetch(:rails_env) do
        within current_path do
          execute :bundle, :exec, :rake, 'db:create'
        end
      end
    end
  end

  desc 'Run seed'
  task :seed do
    on roles(:app) do
      with rails_env: fetch(:rails_env) do
        within current_path do
          execute :bundle, :exec, :rake, 'db:seed'
        end
      end
    end
  end
end

after 'deploy:publishing', 'deploy:restart'

config/deploy/production.rb

server '3.xxx.xxx.x', user: 'Stelle', roles: %w{app db web}

set :ssh_options, {
  keys: '~/.ssh/xxx_key_rsa',
  forward_agent: true
}

config/unicorn/production.rb

app_path = '/var/www/stelle'

worker_processes 2
working_directory "#{app_path}" + "/current"

preload_app true

timeout 30

listen "/tmp/sockets/unicorn.sock", :backlog => 64

pid "#{app_path}/shared/tmp/pids/unicorn.pid"

# Set the path of the log files inside the log folder of the testapp
stderr_path "#{app_path}/current/log/unicorn.stderr.log"
stdout_path "#{app_path}/current/log/unicorn.stdout.log"

before_fork do |server, worker|
  ENV['BUNDLE_GEMFILE'] = File.expand_path('Gemfile', ENV['RAILS_ROOT'])
end

before_fork do |server, worker|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!

  old_pid = "#{server.config[:pid]}.oldbin"
  if old_pid != server.pid
    begin
      sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
      Process.kill(sig, File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH
    end
  end

  sleep 1
end

after_fork do |server, worker|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end

Capfile

require "capistrano/setup"
require "capistrano/deploy"

# require "capistrano/scm/git"
# install_plugin Capistrano::SCM::Git

require "capistrano/rbenv"

require "capistrano/rails"
require "capistrano/rails/assets"
require "capistrano/rails/migrations"

require "capistrano/bundler"
require "capistrano3/unicorn"

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

Gemfile

  gem 'capistrano',            '~>3.5.0'
  gem 'capistrano-bundler',   '~> 1.1.3'
  gem 'capistrano-rails',     '~> 1.1.7'
  gem 'capistrano-rbenv'
  gem 'capistrano3-unicorn'
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • siruku6

    2020/07/08 08:58

    設定ファイル「deploy.rb」と「production.rb」は質問文に掲載しておきましょう
    gitの設定がどちらかには書かれているはずで、そこに手掛かりがありそうです

    キャンセル

  • sakanafuto

    2020/07/08 09:21

    コードをいくつか追加しました!

    キャンセル

回答 1

check解決した方法

0

サーバ側でsudo chown -R () .で出来ました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る