nginxにてAlminumを動かしている場合で既存のGitリポジトリを新規プロジェクトに関連付けた場合にリポジトリブラウザ画面を表示させようとすると504エラーがでる場合があります。その対処法について紹介します。

エラー内容

この事象が発生する場合、nginxのログには下記のエラーが表示されます。

upstream timed out (110: Connection timed out) while reading response header from upstream.

 

どうやらプロジェクトを新規作成して初めてリポジトリブラウザを表示させるときにRedmineではすべてのコミット情報などをデータベースに格納する処理が動くようです。

 

リポジトリのコミット情報などが大きい場合にはWebサーバのタイムアウトにひっかかり、504エラーがでるということです。

 

回避方法

この問題を避けるために、リポジトリからの情報の取得をオフラインで行うことができます。

ターミナルで下記コマンドを入力してください。

ruby /opt/alminium/script/rails runner "Repository.fetch_changesets" -e production

※上記コマンドはAlminiumを通常インストールした場合です。railsまでのパスは適宜修正してください。

これでRedmineのリポジトリブラウザが表示されるようになると思います。