daily-dev.net

React, firebase, 機械学習など

unicron-railsでリモートRailsサーバーの起動に失敗、しかもエラーログがリモートにない

sponsored

cap staging deploy が毎回失敗してしまう。

(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as ubuntu@xxxx: bundle exit status: 1
bundle stdout: master failed to start, check stderr log for details
bundle stderr: Nothing written


Caused by:
SSHKit::Command::Failed: bundle exit status: 1
bundle stdout: master failed to start, check stderr log for details
bundle stderr: Nothing written

Tasks: TOP => unicorn:start
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as ubuntu@xxxx: bundle exit status: 1
bundle stdout: master failed to start, check stderr log for details
bundle stderr: Nothing written


** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:

おまけにリモートサーバーを見に行っても、log/unicorn.log ログファイルが空っぽ。どうしたらいいんだ!

原因は、

config/unicorn/staging.rb の設定だった。

stderr_path $err_log
stdout_path $std_log

ログ出力先を、エラーが起きた時と起きていない標準出力で同じファイルにしていたところ、どちらも記録されなかったのだ(エラーログを空の標準出力が上書きした?)。

エラーが見れる様になったので、原因も特定できた。

 error adding listener ... /shared/tmp/sockets/.unicorn.sock ...

socketsディレクトリはあるが、.unicorn.sockファイルは存在しなかった。 作成しようとしても、sudo権限が必要だった。

ls -l してみると、案の定権限の設定が間違っていた。

drwxrwxr-x 2 user user 4096 May  6 05:18 pids
drwxr-xr-x 2 root root 4096 May  6 05:09 sockets

chown -R user:user sockets で治った。

drwxrwxr-x 2 user user 4096 May  6 05:18 pids
drwxr-xr-x 2 user user 4096 May  6 05:09 sockets