事象
gitlabをインストールして、起動させようとすると以下のURLの様なエラー画面が表示される。
エラーメッセージには、「502 - Whoops, GitLab is taking too much time to respond」としか書いておらず、何が原因か分からない。
gitlab.com
結論
調査過程
サーバー/ミドルウェア構成
・AWS EC2 CentOS7
・GitLab 13.0.6(cat version-manifest.txt)
・Apache HTTP Server 2.4.43(nginxは既にApacheが鎮座してたので使わず)
・Redmine with Unicorn 3.3.4 stable
調べた事
上記画面の内容では全く分からないので、ログ置き場(デフォルト /var/log/gitlab)に移動した。
ls -ltrコマンド打ったら、いろいろログが書かれていた。そこで、PUMA(GitlabのAPサーバー)のディレクトリに移動した。
ディレクトリの中にあるcurrentというファイルに直近のログが書かれるみたいなので、ログを眺めていると、"addres already in use"とよく見かける文言を発見した。
調べたところ、同じ筐体で稼働させているRedmineのUnicornが8080を使っており、GitLabのPUMAのデフォルトも8080なので被ったようである。(※1)
なかなか分からなかったのは、redmin.rbのファイル内にpuma['port']やpuma['enable'] がコメントアウトされているので、デフォルト値が採用されているというのが気付くのが遅れてしまった。
※1
なお、GitLabは以前はUnicornで稼働していたが、現在のバージョンではPUMAがデフォルトのようである。
最終的に修正した箇所
(gitlab.rb)
external_url 'https://www.yoneyore.jp/gitlab' #httpsにする、gitlabのホームURLを指定 gitlab_rails['time_zone'] = 'Asia/Tokyo' #必要に応じて設定 gitlab_workhorse['listen_network'] = "tcp" #Apacheを経由する場合必要 gitlab_workhorse['listen_umask'] = 000 gitlab_workhorse['listen_addr'] = "127.0.0.1:8081" #フロント(gitlab_workhorse)側のポート番号 nginx['enable'] = false # Apache使う場合は変更必要 puma['enable'] = true #コメントアウトしててもデフォルト起動するが、それでは分かりにくいので宣言しておく puma['port'] = 8079 #ここが今回の修正の肝
(conf.d/gitlab.conf)
<Location /gitlab> Require all granted ProxyPassReverse http://127.0.0.1:8081 ProxyPassReverse http://www.yoneyore.jp/gitlab RequestHeader set X-Forwarded-Proto 'https' RequestHeader set X-Forwarded-Ssl 'on' #正直、以下の定義が必要なのかどうかよく理解できていない。。。 RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_URI} ^/uploads/.* RewriteRule .* http://127.0.0.1:8081%{REQUEST_URI} [P,QSA,NE] </Location>