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

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

ただいまの
回答率

89.08%

capistrano.log エラーの原因を確認したい

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 1,156

yujiro0320

score 11

知りたい事

直前まで自動デプロイが可能であったが、自動デプロイができなくなった。
デバッグがうまくできず対応に困っている。
まず、確認したいのは
なぜsecrets.ymlがuploadingしなくなったのかを知りたい。

log_capistrano.logの確認

INFO ---------------------------------------------------------------------------
  INFO START 2019-08-21 17:37:27 +0900 cap production deploy
  INFO ---------------------------------------------------------------------------
 DEBUG [14a37743] Running [ -d $HOME/.rbenv/versions/2.5.1 ] as ec2-user@**.**.**.***
 DEBUG [14a37743] Command: [ -d $HOME/.rbenv/versions/2.5.1 ]
 DEBUG [14a37743] Finished in 0.636 seconds with exit status 0 (successful).
 DEBUG [39be5a7b] Running [ ! -d /var/www/ruby-like/shared/config ] as ec2-user@**.**.**.***
 DEBUG [39be5a7b] Command: [ ! -d /var/www/ruby-like/shared/config ]
 DEBUG [39be5a7b] Finished in 0.136 seconds with exit status 1 (failed).ここで終了


強制終了となる。問題なくできていた前回のデプロイ内容と比較する。

直前のデプロイの内容

secrets.ymlをuploadingするように動いている。
記述も処理速度以外に違いが見受けられない。

 INFO ---------------------------------------------------------------------------
  INFO START 2019-08-21 15:42:30 +0900 cap production deploy
  INFO ---------------------------------------------------------------------------
 DEBUG [a4f90f48] Running [ -d $HOME/.rbenv/versions/2.5.1 ] asec2-user@**.**.**.***
 DEBUG [a4f90f48] Command: [ -d $HOME/.rbenv/versions/2.5.1 ]
 DEBUG [a4f90f48] Finished in 0.931 seconds with exit status 0 (successful).
 DEBUG [eda26c70] Running [ ! -d /var/www/ruby-like/shared/config ]as ec2-user@**.**.**.***
 DEBUG [eda26c70] Command: [ ! -d /var/www/ruby-like/shared/config ]
 DEBUG [eda26c70] Finished in 0.200 seconds with exit status 1 (failed).

>>>>>>>>>>>>ここから先に繋がっている。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 DEBUG Uploading config/secrets.yml 0.0%
  INFO Uploading config/secrets.yml 100.0%
  INFO [c2facd63] Running /usr/bin/env mkdir -p /tmp as ec2-user@**.**.**.***
 DEBUG [c2facd63] Command: ( export RBENV_ROOT="$HOME/.rbenv" PATH="/usr/local/rbenv/shims:/usr/local/rbenv/bin:$PATH" AWS_ACCESS_KEY_ID="*******************" AWS_SECRET_ACCESS_KEY="*******************" RBENV_VERSION="2.5.1" ; /usr/bin/env mkdir -p /tmp )
  INFO [c2facd63] Finished in 0.666 seconds with exit status 0 (successful).

>>>>>>>>>>>>以下デプロイが続く>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

対応ファイルの記述

config-deploy.rbの記載確認

# config valid for current version and patch releases of Capistrano
lock "~> 3.11.0"
# Capistranoのログの表示に利用する
set :application, "ruby-like"
# どのリポジトリからアプリをpullするかを指定する
set :repo_url, 'git@github.com:*****/*****.git'

# バージョンが変わっても共通で参照するディレクトリを指定
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads')

set :rbenv_type, :user
set :rbenv_ruby, '2.5.1'

# どの公開鍵を利用してデプロイするか
set :ssh_options, auth_methods: ['publickey'],
                  keys: ['~/.ssh/*****.pem']

# プロセス番号を記載したファイルの場所
set :unicorn_pid, -> { "#{shared_path}/tmp/pids/unicorn.pid" }

# Unicornの設定ファイルの場所
set :unicorn_config_path, -> { "#{current_path}/config/unicorn.rb" }
set :keep_releases, 5

# S3に登録するにあたり設定した環境変数をよみこますための設定
set :default_env, {
  rbenv_root: "/usr/local/rbenv",
  path: "/usr/local/rbenv/shims:/usr/local/rbenv/bin:$PATH",
  AWS_ACCESS_KEY_ID: ENV["AWS_ACCESS_KEY_ID"],
  AWS_SECRET_ACCESS_KEY: ENV["AWS_SECRET_ACCESS_KEY"]
}

# secrets.yml用のシンボリックリンクを追加
set :linked_files, %w{ config/secrets.yml }


# デプロイ処理が終わった後、Unicornを再起動するための記述
after 'deploy:publishing', 'deploy:restart'
namespace :deploy do
  task :restart do
    invoke 'unicorn:restart'
  end

  desc 'upload secrets.yml'
  task :upload do
    on roles(:app) do |host|
      if test "[ ! -d #{shared_path}/config ]"
        execute "mkdir -p #{shared_path}/config"
      end
      upload!('config/secrets.yml', "#{shared_path}/config/secrets.yml")
    end
  end
  before :starting, 'deploy:upload'
  after :finishing, 'deploy:cleanup'
end

対応

本番環境下でログを確認した。

対応ディレクトリまで移動

$cd .ssh/
$ssh -i *****.pem ec2-user@**********
$cd /var/www/アプリ名/

#productionログの確認

$less shared/log/production.log

#unicornログの確認

$less shared/log/unicorn.stderr.log

原因に繋がるようなログを見つける事ができず。

このような場合、確認するべき事項なども合わせてご教授頂ければ幸いです。

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

check解決した方法

+1

自己解決しました

結論

config/secret.ymlファイルが削除されていたので、記述を復活

config/secret.yml

development:
  secret_key_base: ~~~~~~~~
  aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
  aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>

test:
  secret_key_base: ~~~~~~~~

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
  aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>

反省点

git管理しているファイルが全てだと思い込みがあった。
secret.ymlファイルはgit管理下から外していた為、github上で変更履歴を比較しても見つけられない事。

最後に

このような記述をしている為、secret.ymlを読みこます処理が発生する。
環境変数は.bash_profileに記述した。

# ローカル環境
$ vim ~/.bash_profile

config/deploy.rb

一部抜粋しています。
# S3に登録するにあたり設定した環境変数をよみこますための設定
set :default_env, {
  rbenv_root: "/usr/local/rbenv",
  path: "/usr/local/rbenv/shims:/usr/local/rbenv/bin:$PATH",
  AWS_ACCESS_KEY_ID: ENV["AWS_ACCESS_KEY_ID"],
  AWS_SECRET_ACCESS_KEY: ENV["AWS_SECRET_ACCESS_KEY"]
}

# secrets.yml用のシンボリックリンクを追加
set :linked_files, %w{ config/secrets.yml }

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

関連した質問

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